Accueil🇫🇷Chercher

Hierarchical Data Format

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.

HDF
Hierarchical Data Format
Caractéristiques
Extensions
.hdf, .h4, .hdf4, .he2, .h5, .hdf5, .he5
Type MIME
application/x-hdf, application/x-hdf5
PUID
Développé par
The HDF Group (d)
Spécification
Site web

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

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

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

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

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

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

Interfaces du HDF Group

  • 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

Références

  1. (en) « Histoire d'HDF Group », sur https://www.hdfgroup.org (consulté le )
  2. (en) « moving away hdf5 », sur https://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

Articles connexes

Liens externes

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.

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.