HDF делает интернирование строк? - PullRequest
3 голосов
/ 31 января 2012

Просто интересно, насколько либеральным я могу быть с именами групп / наборов данных или нужно ли сделать имена короткими (и, следовательно, менее читаемыми).Это будет для файла HDF5, который содержит много групп и наборов данных, которые будут иметь много повторяющихся имен.Некоторые API XML делают интернирование строк в качестве оптимизации, и для HDF имеет смысл сделать это, но я не могу сказать из онлайн-документации, если это так.

Ответы [ 3 ]

2 голосов
/ 25 апреля 2013

Нет, не явно. Формат файла HDF5 не определяет сжатие для заголовков объектов (где хранятся имена групп и наборов данных). Фактическая запись на диск обрабатывается одним из нескольких низкоуровневых файловых драйверов . Я не знаю, выполняет ли какой-либо из них интернирование строк, но можно написать собственный драйвер файла, который это делает. Технические примечания на уровне виртуальных файлов могут быть полезны, если вам нужно сделать это.

2 голосов
/ 21 июля 2013

Хотя библиотека HDF5 не обеспечивает интернирование строк для имен ссылок в группе, с версией 1.8.x библиотеки HDF5, куча, содержащая имена ссылок для каждой группы, может быть сжата с помощью вызова H5Pset_filter (), передавая в «список свойств создания группы» (GCPL), который затем передается на вызов для создания группы. Обратите внимание, что список свойств создания файла (FCPL) является подклассом списков свойств создания группы и может быть передан в H5Pset_filter, чтобы разрешить сжатие кучи корневой группы.

См .: http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetFilter

0 голосов
/ 14 февраля 2012

Я полагаю, что в HDF5 надежно указывать любую желаемую строку в качестве имени группы или набора данных. Например (из Python)

import h5py

h5file = h5py.File("newfile.h5", "w")
h5file.create_group("an incredibly descriptive, maybe even obnoxious group name")

h5grp  = h5file["an incredibly descriptive, maybe even obnoxious group name"]
h5dset = h5grp.create_dataset("all kinds of useful things", [100,100])

print h5dset

h5file.close()

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

...