Pregunta

Alguien por ahí tiene la suficiente experiencia w / NetCDF y HDF5 para dar algunas ventajas / desventajas 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 librerías de C, que he encontrado confuso, por lo NetCDF parece interesante, pero no sé casi nada sobre él.

editar mi solicitud es "única" para el registro de datos, de modo que tengo un archivo que tiene un formato de auto-descripción. Las características importantes para mí están siendo capaces de añadir metadatos arbitraria, tener acceso de escritura rápida para anexar a las matrices de bytes, y que tiene un solo escritor / concurrencia de múltiples lector (fuertemente preferida, pero no una herramienta imprescindible. docs NetCDF dicen que tienen SWMR pero don 't decir si apoyan ningún mecanismo para asegurar que dos escritores no pueden abrir el mismo archivo a la vez con resultados desastrosos). Me gusta el aspecto jerárquico de HDF5 (en particular, I amor la jerarquía-acíclico-grafo dirigido, mucho más flexible que una jerarquía de "regular" sistema de archivos similar), Am lectura de la documentación NetCDF ahora ... si sólo permite un conjunto de datos por archivo, entonces probablemente no va a funcionar para mí. : (

actualización - se parece NetCDF en Java lee de netCDF-4 archivos pero sólo escribe desde netCDF-3 archivos que no soportan grupos jerárquicos. maldito.

actualización de 2009-Jul-14 : estoy empezando a conseguir realmente molesto con HDF5 en Java. La biblioteca disponible no es tan grande y tiene algunos escollos importantes que tienen que ver con capas de abstracción de Java (tipos de datos compuestos). Una gran formato de archivo para C, pero parece que acaba de perder. >: (

¿Fue útil?

Solución

le recomiendo encarecidamente que HDF5 en lugar de NetCDF. NetCDF es plana, y se pone muy sucia después de un tiempo si no son capaces de clasificar cosas. Por supuesto, la clasificación es también un tema de debate, pero al menos usted tiene esta flexibilidad.

Se realizó una evaluación precisa de HDF5 vs NetCDF cuando escribí Q5Cost, y el resultado final fue de HDF5 las manos hacia abajo.

Otros consejos

Voy a tener que admitir utilizando HDF5 es muy mucho más fácil en el largo plazo. No es difícil de conseguir estructuras de datos simples en formato NetCDF, pero su manipulación por la carretera es un tipo de dolor.

La "H" en HDF5 significa "jerárquica", que traducido (al menos para mí) en una manera muy fácil de manipular datos, con sólo mover los nodos alrededor y haciendo referencia a los nodos de otros lugares.

¿Puedo preguntar qué tipo de proyecto que es esto? Yo uso estos tanto para una gran cantidad de tareas de modelado científico HPC. ¿Puedo suponer que estás haciendo lo mismo? Si es así, la tendencia es que estoy viendo personas que se desplazan a HDF5, pero que podría ser diferente en su dominio particular.

Sin embargo, usted termina yendo, mejor de las suertes!

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

HDF5 es extremadamente rica en características, y tiene algunas características de rendimiento.

NetCDF tiene una API simple, y una base de la herramienta mucho más amplio. Hay muchas herramientas que manejan datos netCDF.

Sé que este es un mensaje más antiguo, y el cartel original ha indicado que han cambiado, pero para cualquiera que termina aquí ... la biblioteca netCDF en Java (a partir del 4.3.13) tiene netCDF 4-escritura apoyo a través de la biblioteca netCDF C. Es todavía en fase beta, pero hace el trabajo y retroalimentación sin duda se agradece !

Por favor, vea la netCDF en Java referencia docs para más detalles.

Trate de escribir una pequeña aplicación de ejemplo en cada uno, y comparar la experiencia. Si futura escalabilidad de su código para la ejecución en paralelo (a través de MPI o similar) es importante para ti, sé que HDF tiene una aplicación paralela, lo que las personas están constantemente trabajando para mejorar. No estoy seguro acerca de NetCDF.

tardío de edición: Para NetCDF, ahora hay paralelo NetCDF de Argonne . Funciona bastante bien, y el equipo de desarrollo es bastante activo en la mejora aún más.

1) netcdf-4 biblioteca C es una capa en la parte superior de la biblioteca de HDF-5 C. La API se considera más sencillo que la biblioteca HDF5, pero al final usted tiene más o menos la misma funcionalidad. Netcdf no soporta gráficos, pero HDF5 hace. De hecho, HDF no impide ciclos en el gráfico, creo.

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

3) Unidata tiene biblioteca netcdf en Java que es puro Java, pero sólo puede leer HDF-5.

NetCDF, lo que se traduce HDF5 en su propio modelo de datos, se ve y funciona muy bien ... hasta que se entera de que NetCDF no admite valores sin signo ! Ver también mi pregunta sobre cómo detectar valores sin signo en los archivos HDF5 existente utilizando NetCDF.

Actualización: En realidad, resulta que aunque NetCDF-3 no soporta valores con signo, NetCDF-4 es compatible con los valores suscritos, a pesar de que la API NetCDF en Java para la determinación de signo es un poco complicado .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top