¿Alguien por ahí tiene suficiente experiencia con NetCDF y HDF5 para dar algunos más/menos sobre ellos como una forma de almacenar datos científicos?Opiniones sobre NetCDF vs HDF5 para el almacenamiento de datos científicos?
He usado HDF5 y me gustaría leer/escribir a través de Java, pero la interfaz es esencialmente un envoltorio alrededor de las bibliotecas C, lo cual me ha resultado confuso, por lo que NetCDF parece intrigante pero no sé casi nada al respecto.
edición: mi aplicación es "solo" para el registro de datos, de modo que obtengo un archivo que tiene un formato de autodescripción. Las características más importantes para mí son poder agregar metadatos arbitrarios, tener acceso rápido de escritura para agregar a matrices de bytes, y tener concurrencia de único escritor/lector múltiple (muy preferido pero no imprescindible. Los documentos de NetCDF dicen que tienen SWMR pero don No digo 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 I love la jerarquía dirigida-gráfico acíclico, mucho más flexible que una jerarquía "regular" de sistema de archivos), estoy leyendo los documentos de NetCDF ahora ... si solo permite uno conjunto de datos por archivo, entonces probablemente no funcione para mí. :(
actualización — parece NetCDF-Java lee de netCDF-4 archivos pero sólo escribe desde netCDF-3 archivos que no admite grupos jerárquicos maldito
actualización de 2009-Jul-14..: Estoy empezando a enojarme mucho con HDF5 en Java. La biblioteca disponible no es tan buena y tiene algunos obstáculos principales que tienen que ver con las capas de abstracción de Java (tipos de datos compuestos). Un gran formato de archivo para C pero se ve como Acabo de perder.> :(
postscript: HDF5 es * mucho * más fácil de usar en Python con PyTables, que Java. –
Desafortunadamente para los usuarios de Java, tanto netCDF como HDF5 se desarrollan en C, principalmente para usuarios de C o Fortran. La mayoría de las otras API, como Python, están construidas encima de la capa C.) –
@EdwardHartnett - No me creo ese argumento. Ciertamente, significa que no se obtienen buenas funciones de Java de forma gratuita, pero las personas se han dado el lujo de crear API útiles en Python. No hay razón para que alguien no pueda hacer eso en Java. (Y en realidad, lo hice yo, en cierta medida, en una empresa anterior cuando publiqué esta pregunta en 2009, pero no tengo acceso a ese código). –