hdf5 netcdf

¿Opiniones sobre NetCDF vs HDF5 para almacenar datos científicos?



(7)

1) La biblioteca Netcdf-4 C es una capa sobre la biblioteca HDF-5 C. La API se considera más simple que la biblioteca HDF5, pero al final tiene prácticamente la misma funcionalidad. Netcdf no admite gráficos, pero HDF5 sí lo hace. De hecho, HDF no evita los ciclos en su gráfica, creo.

2) el grupo HDF tiene una API de Java encima de la biblioteca HDF-5 C.

3) Unidata tiene una biblioteca Netcdf-Java que es Java puro, pero solo puede leer HDF-5.

¿Alguien tiene experiencia suficiente con NetCDF y HDF5 para dar algunas ventajas o desventajas acerca de ellos como una forma de almacenar datos científicos?

He usado HDF5 y me gustaría leer / escribir a través de Java, pero la interfaz es esencialmente una envoltura alrededor de las bibliotecas de C, que me parece confusa, por lo que NetCDF parece intrigante, pero no sé casi nada al respecto.

edit: mi aplicación es "solo" para el registro de datos, por lo que obtengo un archivo que tiene un formato de autodescripción. Las características importantes para mí son poder agregar metadatos arbitrarios, tener acceso de escritura rápido para adjuntarlos a matrices de bytes y tener concurrencia de un solo escritor / lector múltiple (muy preferido pero no obligatorio. Los documentos de NetCDF dicen que tienen SWMR pero no No diga si admiten algún mecanismo para garantizar que dos escritores no puedan abrir el mismo archivo a la vez con resultados desastrosos. Me gusta el aspecto jerárquico de HDF5 (en particular me encanta la jerarquía de gráficos acíclicos dirigidos, mucho más flexible que una jerarquía similar a un sistema de archivos "regular"), estoy leyendo los documentos de NetCDF ahora ... si solo permite un conjunto de datos por archivo, entonces probablemente no funcionará para mí. :(

actualización : parece que NetCDF-Java lee desde archivos netCDF-4 pero solo escribe desde archivos netCDF-3 que no admiten grupos jerárquicos. maldito.

actualización 2009-Jul-14 : Estoy empezando a enojarme mucho con HDF5 en Java. La biblioteca disponible no es tan buena y tiene algunos obstáculos importantes que tienen que ver con las capas de abstracción de Java (tipos de datos compuestos). Un gran formato de archivo para C pero parece que acabo de perder. > :(


Intenta escribir una pequeña aplicación de muestra en cada uno y compara la experiencia. Si la escalabilidad futura de su código para la ejecución paralela (a través de MPI o similar) es importante para usted, sé que HDF tiene una implementación paralela, en la cual las personas trabajan constantemente para mejorar. No estoy seguro de NetCDF.

Edición tardía: para NetCDF, ahora hay NetCDF paralelo desde Argonne. Funciona bastante bien, y el equipo de desarrollo es bastante activo en mejorarlo aún más.


Le sugiero fuertemente HDF5 en lugar de NetCDF. NetCDF es plano y se ensucia mucho después de un tiempo si no eres capaz de clasificar cosas. Por supuesto, la clasificación también es un tema de debate, pero al menos usted tiene esta flexibilidad.

Realicé una evaluación precisa de HDF5 frente a NetCDF cuando escribí Q5Cost, y el resultado final fue para HDF5 sin duda.


NetCDF, a partir de la versión 4.0 (2008) puede leer y escribir la mayoría de los archivos HDF5, y proporciona acceso a las funciones jerárquicas de HDF5 a través del modelo de datos mejorado.

HDF5 es extremadamente rico en funciones, y tiene algunas características de gran rendimiento.

NetCDF tiene una API más simple y una base de herramientas mucho más amplia. Hay muchas herramientas que manejan los datos de netCDF.


NetCDF, que traduce HDF5 en su propio modelo de datos, se ve y funciona muy bien ... ¡ hasta que descubra que NetCDF no admite valores sin firma ! Vea también mi pregunta sobre cómo detectar valores sin firmar en archivos HDF5 existentes usando NetCDF.

Actualización: En realidad, resulta que aunque NetCDF-3 no admite valores firmados, NetCDF-4 admite valores firmados, aunque la API de NetCDF en Java para determinar la firmeza es un poco complicada .


Sé que esta es una publicación más antigua, y el póster original indica que han avanzado, pero para cualquiera que termine aquí ... la biblioteca netCDF-Java (a partir de 4.3.13) tiene soporte de escritura netCDF-4 a través de Biblioteca netCDF C. Todavía está en la versión beta, pero funciona y ciertamente se agradecen los feedback .

Consulte la documentación de reference netCDF-Java para obtener más detalles.


Tendré que admitir que usar HDF5 es mucho más fácil a largo plazo. No es difícil obtener estructuras de datos simples en formato NetCDF, pero manipularlas en el futuro es una especie de molestia.

La "H" en HDF5 significa "jerárquico", que se tradujo (para mí de todos modos) en una manera REALMENTE fácil de manipular los datos, simplemente moviendo los nodos y haciendo referencia a los nodos de otros lugares.

¿Puedo preguntar qué tipo de proyecto es este? Los uso tanto para muchas tareas de modelado científico de HPC. ¿Puedo asumir que estás haciendo lo mismo? Si es así, la tendencia que veo es que la gente se está moviendo a HDF5, pero eso podría ser diferente en su dominio particular.

Sin embargo terminas yendo, la mejor de las suertes!