2013-04-09 13 views
5

Attualmente sto lavorando a un progetto riguardante la compressione dei set di dati HDF5 e recentemente ho iniziato a utilizzare h5py. Ho seguito le esercitazioni di base ed ho potuto aprire, creare e comprimere un file mentre veniva creato. Tuttavia, non ho avuto successo quando si trattava di comprimere un file esistente (che è lo scopo del mio lavoro).Compressione del file esistente utilizzando h5py

Ho provato ad aprire i file utilizzando 'r +' e quindi a comprimere i set di dati suddivisi in blocchi ma le dimensioni dei file sono rimaste le stesse.

Qualche suggerimento su quali comandi utilizzare o sto andando su cose nel modo sbagliato?

risposta

3

La compressione è molto facile da usare in h5py. Consulta le guide Wiki HowTo e Compression. In sostanza, sarebbe qualcosa di simile:

ds = myfile.create_dataset('ds', shape, dtype, compression='lzf') 

C'è anche alcuni problemi con il modo si sceglie Chunk size per ottimizzare le dimensioni del file/accesso, consultare la guida di compressione ho collegato.

Non ricordo quale compressione, se presente, è attivata per impostazione predefinita.

+1

Sì, ho provato esattamente questo, tuttavia sembra funzionare solo per me durante la creazione di un nuovo file ad es. Posso creare un nuovo file con dimensione del blocco (100.100) che ha la compressione gzip/szip/lzf abilitata. Quando carico un file esistente, l'unico modo in cui la compressione sembra funzionare effettivamente è se il contenuto del file originale viene sovrascritto e ne viene creato uno nuovo (con lo stesso nome dell'originale). Quando carico un file, creo un set di dati frammentato, abilito la compressione e quindi chiudo il file, non sembra esserci alcun effetto o modifica. Ho la sensazione di perdere un gradino, non sono sicuro di cosa sia. – kromegaman

+0

La compressione @kromegaman e la dimensione del blocco sono le linee guida su come il file viene scritto sul disco. Non penso che sia qualcosa che puoi cambiare per un file esistente, come già scritto. Penso che l'unico modo per cambiare compressione/blocchi sia scrivere un nuovo file con quelle impostazioni. – Bitwise

+0

Sì, più lo uso più sembra essere in quel modo. Penso che dovrò creare un nuovo file e un set di dati, copiare i dati dal file esistente nel nuovo e quindi comprimere il nuovo file mentre lo creo. Tuttavia, grazie mille per l'aiuto! – kromegaman

Problemi correlati