Добавление структуры в файлы HDF5 - эквивалент соглашений NetCDF для HDF5

NetCDF4 имеет соглашение соглашения для добавления структуры в файлы NetCDF. Ищу аналогичную, но специально для HDF5.

Моя основная цель - добавить структуру к моим файлам HDF5 стандартным способом. Я хочу что-то вроде того, что HDF5 делает с изображениями, чтобы определить тип, используя атрибуты в группах и наборы данных ~ как:

CLASS: IMAGE
IMAGE_VERSION: 1.2
IMAGE_SUBCLASS: IMAGE_TRUECOLOR
...

Но насколько я могу судить, спецификация изображений отдельная. Может мне стоит просто повторно использовать "соглашения" NetCDF?

Обновление:

Я знаю, что NetCDF4 реализован поверх HDF5. В этом случае у нас есть данные моделирования турбулентности и экспериментов, а не геоданные. Эти данные обычно ограничиваются ‹= 4D. Мы уже используем HDF5 для хранения этих данных, но у нас нет разработанных стандартов. Псевдостандартные форматы сортировки только что были органично разработаны внутри организации.


person thespinkus    schedule 21.04.2016    source источник


Ответы (2)


Файлы NetCDF4 на самом деле хранятся в формате HDF5 (http://www.unidata.ucar.edu/publications/factsheets/current/factsheet_netcdf.pdf), однако они используют соглашения netCDF4 для атрибутов, размеров и т. д. Файлы имеют самоописание, что является большим плюсом. HDF5 без netCDF4 дает гораздо больше свободы в определении ваших данных. Есть ли конкретная причина, по которой вы хотели бы использовать HDF5 вместо netCDF4?

Я бы сказал, что если у вас нет каких-либо конкретных ограничений (например, программного обеспечения для моделирования или визуализации, которое обнаруживает ошибки в файлах netCDF4), вам лучше использовать netCDF. netCDF4 может использоваться операторами NCO / CDO, ncl (ncl также принимает HDF5), idl, модулем Python netCDF4, хорьком и т. д. Лично я считаю netCDF4 очень удобным для хранения климатических или метеорологических данных. Для него уже написано много операторов, и вам не нужно беспокоиться о разработке стандарта для ваших собственных данных - это уже сделано за вас. CMOR (http://cmip-pcmdi.llnl.gov/cmip5/output_req.html) можно использовать для записи климатических данных, соответствующих требованиям CF. Он использовался в самом последнем проекте сравнения климатических моделей.

С другой стороны, HDF5 может стоить того, если у вас есть другой тип данных и вы ищете очень специфические функции, для которых вам нужен более индивидуальный формат файла. Не могли бы вы немного подробнее указать свои потребности в комментариях?

Обновлять :

К сожалению, стандарты для имен переменных и полей для файлов HDF5 немного менее ясны и хорошо организованы, чем netCDF, поскольку этот формат был предпочтительным для крупных проектов моделирования климата, таких как CMIP или CORDEX. Проблема, по сути, сводится к использованию соглашений EOSDIS или CF, но найти поддерживаемые в настоящее время библиотеки, которые реализуют эти стандарты для файлов HDF5 и имеют четкую документацию, не совсем просто (если бы это было так, вы, вероятно, не задали бы вопрос).

Если вам действительно нужен стандарт, НАСА подробно объясняет все возможные стандарты метаданных здесь: http://gcmd.nasa.gov/add/standards/index.html.

Для информации: HDF-EOS и HDF5 - это не совсем один и тот же формат (HDF-EOS уже содержит картографические данные и стандартизирован для данных науки о Земле), поэтому я не знаю, будет ли этот формат слишком ограничительным для вас. Инструменты для работы с этим форматом описаны здесь: http://hdfeos.net/software/tool.php и кратко изложено здесь http://hdfeos.org/help/reference/HTIC_Brochure_Examples.pdf.

Если вы по-прежнему предпочитаете использовать HDF5, лучше всего, вероятно, будет загрузить файл в формате HDF5 из НАСА для получения аналогичных данных и использовать его в качестве основы для создания собственных инструментов на языке по вашему выбору. Вот список исчерпывающих примеров использования форматов HDF5, HDF4 и HDF-EOS со сценариями для обработки и визуализации данных в Python, MATLAB, IDL и NCL: http://hdfeos.net/zoo/index_openLAADS_Examples.php#MODIS

По сути, проблема в том, что НАСА предоставляет инструменты, позволяющие работать с их данными, но не обязательно, чтобы вы могли воссоздать аналогично структурированные данные в своей лаборатории.

Вот еще несколько спецификаций / информации о hdf5 для данных науки о Земле от НАСА: Продукт MERRA https://gmao.gsfc.nasa.gov/products/documents/MERRA_File_Specification.pdf Совместимая с GrADS информация HDF5 http://disc.sci.gsfc.nasa.gov/recipes/?q=recipes/How-to-Read-Data-in-HDF-5-Format-with-GrADS Инструменты обработки данных HDF в Центре данных по атмосферным наукам НАСА: https://eosweb.larc.nasa.gov/HBDOCS/hdf_data_manipulation.html

Надеюсь, это немного поможет.

person SpicyBaguette    schedule 25.04.2016
comment
Пожалуйста, смотрите обновления. Мне не очень нравится NetCDF4. Это круто. А с HDF5 мы уже знакомы. Мы собираемся так или иначе наложить структуру на наши данные HDF5. Я просто ищу стандарты. - person thespinkus; 26.04.2016
comment
Да, думаю, NetCDF4 не для всех. Раньше я работал с климатическими данными, поэтому мне это нравится (в ncl так много встроенного материала), но моя новая лаборатория тоже не большой поклонник. См. Мой обновленный ответ для получения дополнительной информации о стандартах HDF5. К сожалению, мне не удалось найти отличных библиотек, реализующих для вас стандарты данных. Кроме того, поскольку это не геоданные, у вас, вероятно, нет тех же потребностей, что и у пользователей климатических данных, таких как я. - person SpicyBaguette; 26.04.2016
comment
Спасибо за исчерпывающий ответ. - person thespinkus; 01.05.2016

Лучший выбор стандарта действительно зависит от того, какие данные вы хотите хранить. Условные обозначения CF наиболее полезны для данных измерений с географической привязкой, например данных, измеренных со спутника. Было бы полезно знать, из чего состоят ваши данные.

Предполагая, что у вас есть данные с географической привязкой, я думаю, у вас есть два варианта:

  1. Повторно используйте соглашения CF в HDF, как вы предложили. Этим занимаются и другие люди, быстрый поиск в Google дал мне это.
  2. HDF-EOS (отказ от ответственности, я никогда не использовал его). Он хранит данные в файлах HDF, используя определенную структуру, но, похоже, для использования требуется библиотека расширений. Я не нашел спецификации структуры, только API. Также, похоже, не существует активного сообщества за пределами НАСА.

Поэтому я, вероятно, выбрал бы вариант 1: использовать соглашения CF в ваших файлах HDF и посмотреть, не используется ли сторонний инструмент, такой как Panoply, может им воспользоваться.

person titusjan    schedule 24.04.2016
comment
У нас нет геоданных. Однако стоит присмотреться к HDF-EOS. Я предполагаю, что это соглашения NetCDF CF для HDF5? - person thespinkus; 26.04.2016
comment
Поскольку у вас нет геоданных, я бы сказал, что от HDF-EOS особого толка нет. Также половина CF-соглашений неприменима. Почему бы не сделать «официальный» стандарт внутри организации? Вы можете начать с нуля или начать с соглашений CF, вырезать то, что вам не нужно, и подробно рассказать об этом. ИМО, хорошо иметь соглашения об именах переменных, требуемых атрибутах, порядке измерений, масштабах измерений и т. Д. Также может быть полезен инструмент, который проверяет, соответствуют ли файлы. - person titusjan; 30.04.2016
comment
Да, это именно тот путь, по которому мы решили пойти - в рамках стандартов организации. Мы берем все, что можем, из CF Convention (нам не нужно много), и я сделаю перекрестную ссылку на HDF-EOS. Мы понимаем, что маловероятно, что мы получим все необходимое в первом варианте, но мы просто установим, что в будущем при обновлении стандарта люди должны в первую очередь полагаться на Конвенцию CF. - person thespinkus; 01.05.2016