#hdf5
#hdf5
Вопрос:
Мы сохраняем масс-спектры времени полета в файлах hdf5. Более чем в 99% случаев это работает без каких-либо ошибок. Но иногда измерения выходят из строя.
Мы сохраняем разные (мета-) данные, но мой вопрос касается одной увеличивающейся таблицы:
- Расположение хранилища: ФРАГМЕНТИРОВАННЫЙ: 1x1x10x248584
- Сжатие: 8,312: 1GZIP: уровень = 5
Значения вставляются с каждым временным шагом (обычно 10 секунд). Через 1 минуту макет составляет 6x1x10x248584.
Но поврежденная таблица имеет размер: 0x1x10x248584 (пробовал с h5py 2.10.0 и HDFView 3.1.0).
Мой вопрос: есть ли какая-либо низкоуровневая библиотека (предпочтительно python), где я могу попытаться получить доступ к потерянным данным? Размер файла (размером в несколько часов -> несколько ГБ) обещает, что данные есть, но они не могут быть прочитаны с помощью тех двух программ, которые я пробовал. Спасибо.
[Обновление]: в HDFView это выглядит так для поврежденного файла. Исходя из размера файла, я ожидаю, что первое измерение будет> 1000.
Комментарии:
1. Для открытия файлов можно использовать библиотеку h5py. Вы можете использовать утверждение для формы в качестве базовой проверки без чтения данных. Вопрос к вам: как данные были повреждены. У меня была такая же проблема раньше, когда я использовал C API. Поскольку я переключаюсь на C API (с другой оболочкой C ) Я ни разу не сталкивался с проблемой повреждения.
2. This (f[‘path_to_array’].shape) возвращает те же значения (0x1x10x248584). Изменения на стороне создания данных для нас невозможны (на данный момент), потому что это программное обеспечение с закрытым исходным кодом 🙁
3. Если я открою с помощью чтения / записи h5py. Файл (‘name.h5’, ‘r ‘) размер файла уменьшается до ~ 1 МБ (до 2 ГБ), что означает, что h5py сохраняет только те данные, которые он нашел, прочитав их.
4. Я полагаю, что вы перебираете все наборы данных и пытаетесь прочитать, а в противном случае пропустить?
5. Нет, я знаю, какой набор данных мне нужен, и могу обратиться к нему напрямую (h5py. File(‘fname.h5’)[‘FullSpectra/TofData’]).