Hierarchical Data Format

formats de fichiers permettant de sauvegarder et de structurer des fichiers contenant de très grandes quantités de données
HDF
Hierarchical Data Format
Caractéristiques
Extensions
.hdf, .h4, .hdf4, .he2, .h5, .hdf5, .he5Voir et modifier les données sur Wikidata
Type MIME
application/x-hdf, application/x-hdf5Voir et modifier les données sur Wikidata
PUID
Développé par
The HDF Group (d)Voir et modifier les données sur Wikidata
Spécification
Site web

Le Hierarchical Data Format (HDF) est un ensemble de formats de fichiers permettant de sauvegarder et de structurer des fichiers contenant de très grandes quantités de données. Un fichier HDF est un conteneur de fichiers.

Les premiers formats HDF ont été développés au National Center for Supercomputing Applications, avant d'être développés par le HDF Group.

HDF désigne à la fois le format et l'ensemble composé des bibliothèques, des outils (dont l'outil de navigation et de manipulation HDFView) et des jeux de test.

Les caractéristiques des formats HDF, ainsi que les bibliothèques pour les utiliser et les outils associés sont disponibles en licence libre (BSD). HDF est supporté par de nombreux langages : Java, MATLAB, IDL et Python.

Il existe principalement deux formats HDF : HDF4 et HDF5. Les fichiers HDF ont de nombreuses extensions : .hdf, .h4, .hdf4, .he4 (pour HDF4) .h5, .hdf5 et .he5 (pour HDF5)[1].

Histoire modifier

La recherche d'un format de données scientifiques portable, initialement appelé AEHOO (All Encompassing Hierarchical Object Oriented format), a commencé en 1987 par le Graphics Foundations Task Force (GFTF) au National Center for Supercomputing Applications (NCSA). Les subventions NSF reçues en 1990 et 1992 étaient importantes pour le projet. À cette époque, la NASA a étudié 15 formats de fichiers différents à utiliser dans le cadre du projet EOS (Earth Observing System). Après un processus d'examen de deux ans, HDF a été sélectionné comme système standard de données et d'information.

HDF4 modifier

HDF4 est l'ancienne version du format, bien qu'il soit toujours activement pris en charge par The HDF Group. Il prend en charge une prolifération de modèles de données différents, notamment des tableaux multidimensionnels, d'images matricielles et des tableaux. Chacun définit un type de données agrégées spécifique et fournit une API pour lire, écrire et organiser les données et les métadonnées. De nouveaux modèles de données peuvent être ajoutés par les développeurs ou les utilisateurs HDF.

HDF est auto-descriptif, permettant à une application d'interpréter la structure et le contenu d'un fichier sans aucune information extérieure. Un fichier HDF peut contenir un mélange d'objets associés accessibles en groupe ou en tant qu'objets individuels. Les utilisateurs peuvent créer leurs propres structures de regroupement appelées «vgroups».

Le format HDF4 a de nombreuses limitations. Il manque un modèle d'objet clair, ce qui rend difficile le soutien et l'amélioration continus. La prise en charge de nombreux styles d'interface différents (images, tableaux multidimensionnels, tableaux) conduit à une API complexe. La prise en charge des métadonnées dépend de l'interface utilisée. Les objets SD (Scientific Dataset) prennent en charge des attributs nommés arbitraires, tandis que d'autres types ne prennent en charge que les métadonnées prédéfinies. Peut-être plus important encore, l'utilisation d'entiers signés 32 bits pour l'adressage limite les fichiers HDF4 à un maximum de 2 Go, ce qui est inacceptable dans de nombreuses applications scientifiques modernes.

HDF5 modifier

Le HDF5 améliore le HDF4. Il simplifie la structure des fichiers pour proposer seulement deux types d'objets :

  • les ensembles de données (datasets), qui sont des tableaux multidimensionnels contenant des données d'un même type (prédéfini ou dérivé) ;
  • les groupes (groups), qui contiennent, ou regroupent, des ensembles de données et d'autres groupes.

L'utilisateur peut aussi définir une structure d'attribut pour ajouter des informations (des meta-données) sur chaque objet.

Cette structuration en ensembles de données et groupes donne aux fichiers HDF5 une structure hiérarchique (en l'occurrence arborescente), un peu comme un système de fichiers. Cette analogie avec un système de fichiers est aussi présente dans les conventions de nommage des objets du fichiers : le nom complet d'un objet du fichier HDF5 est construit comme un chemin dans un système de fichiers (/chemin/vers/le/fichier).

Critiques modifier

La critique de HDF5 découle de sa conception monolithique et de ses longues spécifications.

  • HDF5 n'impose pas l'utilisation de UTF-8, donc les applications clientes peuvent attendre ASCII dans la plupart des endroits.
  • Les données de l'ensemble de données ne peuvent pas être libérées dans un fichier sans générer une copie de fichier à l'aide d'un outil externe (h5repack).

Interfaces modifier

Il existe des interfaces de programmation pour manipuler des fichiers HDF via un langage de programmation ou un logiciel[2].

Interfaces du HDF Group modifier

  • Java
  • HDF5 Lite (H5LT) – une interface légère pour C
  • HDF5 Image (H5IM) – une interface C pour les images ou les rasters
  • HDF5 Table (H5TB) – une interface C pour les tableaux multidimensionnels
  • HDF5 Packet Table (H5PT) – interfaces pour C et C ++ pour gérer les données "en paquets", accessibles à grande vitesse
  • HDF5 Dimension Scale (H5DS) – permet d'ajouter des échelles de dimension à HDF5

Autres interfaces modifier

Références modifier

  1. (en) « Histoire d'HDF Group », sur hdfgroup.org (consulté le ).
  2. (en) « moving away hdf5 », sur cyrille.rossant.net (consulté le ).
  3. JHDF5 library
  4. HDF Import and Export Mathematica documentation
  5. « HDF5 for Python », sur h5py.org (consulté le ).

Voir aussi modifier

Articles connexes modifier

Liens externes modifier

Outils

(en) Cet article contient des extraits de la Free On-line Dictionary of Computing qui autorise l'utilisation de son contenu sous licence GFDL.