2014-09-25 2 views
1

Согласно документации h5py, «фильтры сжатия могут динамически загружаться базовой библиотекой HDF5. Это делается путем передачи номера фильтра в Group.create_dataset() в качестве параметра сжатия. " У меня есть следующий код (который работает отлично):Как указать настраиваемый фильтр сжатия в h5py

import numpy as np 
a = np.random.random(1e5) 
with h5py.File(args.baseName + '/allubf.h5', libver='latest') as f: 
    dset = f.create_dataset('myData', (1000,), dtype=np.dtype(float), chunks=(1000,), compression='lzf', shuffle=True) 

Я посмотрел идентификаторы сжатия фильтра here и попытался заменить «LZF» с 32000, который должен быть идентификатор LZF в соответствии с приведенной выше ссылке. Когда я это сделаю, я получаю ошибку ValueError: фильтр сжатия «32000» недоступен. Я не могу найти больше документации или примеров для этого. Нужно ли каким-либо образом предварительно загрузить фильтр, чтобы сделать его доступным?

ответ

1

Похоже, что документация впереди выпущенной библиотеки. Эта функция доступна на GitHub repository, но пока не доступна в версии pypi (это вы используете, если вы использовали easy_install или pip для установки h5py). Если вы хотите использовать собственные фильтры сжатия, вам придется либо использовать версию GitHub, либо дожидаться обновления версии pypi, либо применить this set of changes.