2013-11-21 8 views
5

Sto cercando di comprimere il mio allineamento come questocomprimendo array con pytables

import numpy as np 
import tables 
from contextlib import closing 

FILTERS = tables.Filters(complib='zlib', complevel=5) 

data = np.zeros(10**7) 

with closing(tables.open_file('compressed', mode='w', filters=FILTERS)) as hdf: 
    hdf.create_array('/', 'array', obj=data) 

with closing(tables.open_file('uncompressed', mode='w')) as hdf: 
    hdf.create_array('/', 'array', obj=data) 

ma non funziona affatto

-rw-rw-r-- 1 user user 80002360 2013-11-21 15:27 compressed 
-rw-rw-r-- 1 user user 80002304 2013-11-21 15:28 uncompressed 

sto facendo qualcosa di sbagliato qui?

risposta

7

Gli array non possono essere compressi. La compressione richiede il chunking e quindi è necessario utilizzare array chunked (CArrays) o array estendibili (EArray). Questo è probabilmente un cambiamento di 1 carattere poiché si desidera semplicemente chiamare il metodo create_carray() anziché il metodo create_array().

import numpy as np 
import tables 
from contextlib import closing 

FILTERS = tables.Filters(complib='zlib', complevel=5) 

data = np.zeros(10**7) 

with closing(tables.open_file('compressed', mode='w', filters=FILTERS)) as hdf: 
    hdf.create_carray('/', 'array', obj=data) 

with closing(tables.open_file('uncompressed', mode='w')) as hdf: 
    hdf.create_array('/', 'array', obj=data) 
+0

Grazie per la risposta. Non ho prestato attenzione a questo momento in doc. – qweqwegod

+0

Contento di aver potuto aiutare! –