несколько компрессоров для одного массива - PullRequest
0 голосов
/ 20 ноября 2018

Можно ли иметь разные компрессоры, например, с потерями и без потерь для отдельных кусков?

В сценарии, где у вас есть маска важности, где вы хотите сохранить сигнал со сжатием без потерь или даже без сжатия, но имеете другие части сигнала со сжатием с потерями для эффективности и пространства.

Например, у нас есть:

импорт zarr
z = zarr.zeros ((32, 32), куски = (4, 4))

важный регион, который мы хотим сохранить, это A(4:11,4:11), куда мы хотим идти без потерь, например, zlib, затем для остальных мы используем quantize от numcodecs для потерь. Таким образом, мы будем иметь высокую точность для интересной части в маске и иметь сжатие с потерями для вне маски и иметь два разных компрессора для разных частей одного массива на уровне фрагмента.

1 Ответ

0 голосов
/ 15 марта 2019

В настоящее время это невозможно. Интерфейс компрессора должен получить координаты для encode(). Тогда вы могли бы реализовать компрессор, который решил бы потерять информацию о кодировании в зависимости от координат. Поскольку компрессоры работают с чанками, вам нужно выбрать чанки, чтобы они совпали с границами, в которых вы хотите изменить точность.

В целом, я думаю, вам будет проще написать простую обертку, которая объединяет несколько хранилищ zarr для разных верностей и накладывает их на доступ и запись.

...