Developpez.com - Rubrique Python

Le Club des Développeurs et IT Pro

Apprendre les techniques de manipulation du format HDF5 en programmation Python,

Un tutoriel de Galode Alexandre

Le 2017-05-23 21:03:33, par deusyss, Expert éminent
Bonjour à tous,

Je vous propose un tutoriel pour apprendre à manipuler le format HDF5 en programmation Python.


Lors de toute création de logiciel, se pose à un moment donné, la sauvegarde des données manipulées.

Dans un précédent article, je vous avais exposé un comparatif INI / JSON. Outre ce format, nous avions évoqué également le XML. Des formats différents, standards ou maisons, il en existe un nombre incalculable.

Concernant le traitement et la manipulation de données numériques massives, l'un d'entre eux se trouve être très utilisé en informatique scientifique : le format HDF5.

C'est ce format que je vous invite ici à découvrir.
Bonne lecture à tous.

Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation Python
  Discussion forum
8 commentaires
  • mcc39
    Membre régulier
    Le format HDF5 peut être utilisé par certains fabricants de microscopes et autres instruments de mesure de ce genre pour stocker les données acquises (par exemple des données hyperspectrales). Delmic a développé le logiciel Odemis qui utilise h5py : https://github.com/delmic/odemis/blo...dataio/hdf5.py.
  • kmedghaith
    Membre confirmé
    Envoyé par disedorgue
    Bonjour,

    Si tu es sur de ton fait, je trouve dommage que que cette lib ne tienne pas ces engagements, car l'une des raisons de hdf5 est justement de retirer ces limitations présentes en hdf4...
    Oui

    https://support.hdfgroup.org/HDF5/faq/threadsafe.html
  • BufferBob
    Expert éminent
    salut,

    je me demandais, dans quelle mesure c'est utilisé ce format ? tu marques que c'est "très utilisé en informatique scientifique" mais des quelques recherches que j'ai effectué la plupart du temps les datasets sont fournis à la va-comme-jte-pousse dans un tarball ou un zip sous forme de fichier texte à parser soi-même, je veux dire est-ce qu'il s'agit d'un format "incontournable" ou qui relève des bonnes pratiques ou simplement un truc cool qui devrait théoriquement être beaucoup plus utilisé qu'il ne l'est etc. ?
  • deusyss
    Expert éminent
    Très bonne question.

    Il s'agit de la dernière solution, a savoir quelque chose de très pratique qui devrait être bien plus utilisé dès qu'on manipule et qu'on désire stocker des données numériques en masse. Ceci dit, mon expérience professionnelle m'a effectivement démontré une méconnaissance de ce format. On n'utilise pas ce qu'on ignore exister
  • wiztricks
    Expert éminent sénior
    Envoyé par BufferBob
    Je veux dire est-ce qu'il s'agit d'un format "incontournable" ou qui relève des bonnes pratiques ou simplement un truc cool qui devrait théoriquement être beaucoup plus utilisé qu'il ne l'est etc. ?
    La structure hiérarchique d'un système de fichiers standard est appropriée pour la plupart des applications.... Et ce qu'on fait avec HDF5 peut être fait avec un système de fichiers standard.
    Là ou HDF5 devient intéressant, c'est lorsqu'on travaille sur de grandes quantités de données éparpillées dans de multiples "fichiers" du côté des performances, de la portabilité et des facilités d'utilisation depuis différents outils.

    Mais c'est bien de savoir que çà existe même si les applications qui devraient/pourraient en profiter sont en nombre réduit.

    - W
  • kmedghaith
    Membre confirmé
    Salut,

    Il faudrait peut être préciser que la librairie C h5 n'est pas ré-entrante (même pour un accès en lecture à des fichiers différents...), et que le seul moyen de l'utiliser en multi thread c'est de la compiler en mode thread safe ce qui ne fait qu'utiliser un gros lock global qui pourrit bien évidemment les performances.
    Pour ma part, je l'utilise au boulot car, comme indiqué plus haut, c'est assez rependu dans l'informatique scientifique à cause de bonne performances en mode écriture . Ceci dit, et à mon avis, c'est à éviter pour toute autres applications.

    MG
  • disedorgue
    Expert éminent sénior
    Bonjour,
    Envoyé par kmedghaith
    Salut,

    Il faudrait peut être préciser que la librairie C h5 n'est pas ré-entrante (même pour un accès en lecture à des fichiers différents...), et que le seul moyen de l'utiliser en multi thread c'est de la compiler en mode thread safe ce qui ne fait qu'utiliser un gros lock global qui pourrit bien évidemment les performances.
    Pour ma part, je l'utilise au boulot car, comme indiqué plus haut, c'est assez rependu dans l'informatique scientifique à cause de bonne performances en mode écriture . Ceci dit, et à mon avis, c'est à éviter pour toute autres applications.

    MG
    Si tu es sur de ton fait, je trouve dommage que que cette lib ne tienne pas ces engagements, car l'une des raisons de hdf5 est justement de retirer ces limitations présentes en hdf4...
  • bistouille
    Membre confirmé
    Question sans doute idiote, mais mise à part la portabilité (et encore), quels sont les avantages par rapport à un sgbdr ? Et les inconvénients.
    Si tant soit peu que les deux soient comparables.

    Comme ça, je dirais une manipulation plus facile, le langage sql étant très complexe, mais pas sûr.

    En fait toutes les manipulations que tu montres ressemblent un peu à ce qu'on peut faire avec un sgdbr robuste, enfin, si j'ai bien saisi.