Saltar al contenido

Codificación y compresión de datos en formato HDF5

Este equipo de expertos despúes de algunos días de investigación y de juntar de información, hemos dado con la solución, nuestro deseo es que te sea de utilidad en tu proyecto.

Solución:

La documentación es engañosa aquí. Por un lado, la única opción de exportación es "Append" que se puede encontrar bajo el Opciones pestaña. Por otro lado, la documentación general dice

ingrese la descripción de la imagen aquí

Realmente me pregunto, ¿por qué es necesario poner Importar solo detrás de un valor de opción cuando "DataEncoding" no es una opción de exportación en absoluto.

De todos modos, tengo el mismo comportamiento en MacOSX que tú: Sin compresión de datos. Aunque, usando

ExportString[1, 2, 3, 4, "HDF5", "DataEncoding" -> "GZIP"]

y cambiando "GZIP" a None cambia algo en la salida, pero no comprime el array.

solución parcial

Una posible solución es comprimir con gzip los archivos “HDF5”. Esto parece ser reconocido por Matemática automáticamente. Entonces, o comprima manualmente los archivos con gzip, o use algo similar para hacer todo en Matemática

Export["matrix.h5.gz", ExportString[datapourrie, "HDF5"], "GZIP"]

Para sus datos de prueba, esto se ejecuta en poco tiempo, todo lo demás probablemente necesite una evaluación comparativa y ajustes. Para volver a importar sus datos, simplemente puede hacer

Import["matrix.h5.gz", "HDF5", "Datasets", "/Dataset1"]

Una solución es comprimir el archivo HDF5 después ha sido exportado desde Mathematica, utilizando las herramientas de línea de comandos HDF5.

Nota: en OS X, las herramientas de línea de comandos se pueden instalar fácilmente usando MacPorts usando port install h5utils.

El comando para recomprimir los datos es

h5repack -v -f GZIP=1 infile.h5 outfile.h5

De hecho, esto puede lograr una reducción significativa en el tamaño.

Para mayor comodidad, es posible que desee invocar esto desde Mathematica usando Run.

En la versión 7, el método de exportación de halirutan no produce un archivo que sea reconocido por Import.

Sin embargo, se puede escribir:

Export["matrix2.h5.gz", datapourrie, "GZIP", "HDF5"]

Y luego:

d2 = Import["matrix2.h5.gz", "Datasets", "/Dataset1"];

datapourrie == d2

Cierto

Recuerda dar visibilidad a este post si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *