Question

Tout le monde là-bas ont assez d'expérience w / NetCDF et HDF5 donner quelques points positifs / négatifs sur eux comme un moyen de stocker des données scientifiques?

Je l'ai utilisé HDF5 et je voudrais en lecture / écriture via Java, mais l'interface est essentiellement une enveloppe autour des bibliothèques C, que j'ai trouvé confus, donc NetCDF semble intrigant mais je sais presque rien.

modifier ma demande est « seulement » pour l'enregistrement de données, de sorte que je reçois un fichier qui a un format auto-descriptif. Les caractéristiques importantes pour moi sont être en mesure d'ajouter des métadonnées arbitraires, ayant accès en écriture rapide pour annexant à des tableaux d'octets, et ayant un seul auteur / concurrency-lecteur multiple (fortement préféré, mais pas un must-have. dire NetCDF docs qu'ils ont SWMR mais ne « t dire si elles soutiennent un mécanisme pour faire en sorte que deux écrivains ne peuvent pas ouvrir le même fichier à la fois avec des résultats désastreux). J'aime l'aspect hiérarchique de HDF5 (en particulier I amour la hiérarchie graphe acyclique dirigé, beaucoup plus flexible que la hiérarchie du système de fichiers comme « régulier »), je lis les documents NetCDF maintenant ... si elle ne permet qu'un seul jeu de données par fichier, il ne fonctionnera probablement pas pour moi. : (

mise à jour - ressemble NetCDF Java lit à partir de fichiers netCDF-4, mais écrit seulement des fichiers netCDF-3 qui ne supportent pas les groupes hiérarchiques. sacrément.

Mise à jour 2009-Jul-14 : Je commence à être vraiment bouleversé avec HDF5 en Java. La bibliothèque disponible est pas terrible et il a quelques grands blocs d'achoppement qui ont à voir avec Java de les couches d'abstraction (types de données composés). Un grand format de fichier pour C mais il semble que je perds tout. >: (

Était-ce utile?

La solution

Je vous suggère fortement HDF5 au lieu de NetCDF. NetCDF est plat, et il est très sale après un certain temps si vous n'êtes pas en mesure de classer les choses. La classification est bien sûr aussi une question de débat, mais au moins vous avez cette flexibilité.

Nous avons effectué une évaluation précise de HDF5 par rapport NetCDF quand j'ai écrit Q5Cost, et le résultat final était pour HDF5 la main.

Autres conseils

Je dois admettre que l'aide HDF5 est beaucoup plus facile à long terme. Ce n'est pas difficile d'obtenir de simples structures de données au format NetCDF, mais les manipuler sur la route est une sorte de douleur.

Le « H » dans HDF5 signifie « heirarchical », qui traduit (pour moi en tout cas) dans une manière très facile de manipuler des données, en déplaçant simplement les nœuds autour et référencement nœuds d'autres endroits.

Puis-je demander quel genre de projet est ce? Je les utilise aussi bien pour un grand nombre de tâches de modélisation scientifique HPC. Puis-je suppose que vous faites la même chose? Si oui, la tendance que je vois est que les gens se déplacent à HDF5, mais ce pourrait être différent dans votre domaine particulier.

Cependant, vous finissez par aller, bonne chance!

NetCDF, en commençant par la version 4.0 (2008) peut lire et écrire la plupart des fichiers HDF5, et donne accès aux fonctions hiérarchiques de HDF5 via le modèle de données amélioré.

HDF5 est riche en très, et a quelques caractéristiques de performance.

NetCDF a une API plus simple, et une base d'outils beaucoup plus large. Il existe de nombreux outils qui gèrent des données netCDF.

Je sais que c'est un ancien poste, et a indiqué l'affiche d'origine, ils ont déménagé, mais pour tous ceux qui se termine ici ... la bibliothèque netCDF-Java (au 4.3.13) a netCDF-4 écriture support par l'intermédiaire de la bibliothèque netCDF C. Il est encore en version bêta, mais il fait des commentaires de href="http://www.unidata.ucar.edu/software/netcdf-java/#help" de travail et est certainement apprécié

S'il vous plaît voir le netCDF Java référence docs pour plus de détails.

Essayez d'écrire une petite application de l'échantillon dans chaque, et comparer l'expérience. Si l'évolutivité future de votre code à l'exécution parallèle (via MPI ou similaire) est important pour vous, je sais que HDF a une mise en œuvre parallèle, que les gens travaillent en permanence à améliorer. Je ne suis pas sûr NetCDF.

modifier la fin: Pour NetCDF, il est maintenant parallèle NetCDF d'Argonne . Il fonctionne très bien, et l'équipe de développement est très actif à l'améliorer encore.

1) bibliothèque netcdf-4 C est une couche au-dessus de la bibliothèque HDF-5 C. L'API est considérée comme plus simple que la bibliothèque HDF5, mais à la fin vous avez à peu près les mêmes fonctionnalités. Netcdf ne supporte pas les graphiques, mais ne HDF5. En fait, HDF ne l'empêche pas de cycles dans votre graphique, je pense.

2) le groupe HDF a une API Java sur le dessus de la bibliothèque HDF-5 C.

3) Unidata a la bibliothèque netcdf Java qui est pur Java, mais ne peut lire HDF-5.

NetCDF, ce qui se traduit par HDF5 dans son propre modèle de données, regarde et fonctionne très bien ... ma question sur la façon de détecter des valeurs non signées dans les fichiers HDF5 existant en utilisant NetCDF.

Mise à jour: En fait, il se trouve que même si NetCDF-3 ne supporte pas les valeurs signées, NetCDF-4 prend en charge les valeurs signées, même si l'API NetCDF en Java pour déterminer signedness est un peu alambiqué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top