| ファイル名拡張子 | .hdf、、、、、、、、.h4.hdf4.he2.h5.hdf5.he5 |
|---|---|
| インターネットメディアの種類 | アプリケーション/x-hdf、アプリケーション/x-hdf5 |
| 魔法の数字 | \211HDF\r\n\032\n |
| 開発者 | HDFグループ |
| フォーマットの種類 | 科学データ形式 |
| オープンフォーマット? | はい |
| Webサイト | www.hdfgroup.org/solutions/hdf5 |
階層データ形式( HDF ) は、大量のデータを保存および整理するために設計されたファイル形式( HDF4、HDF5 )のセットです。もともと米国国立スーパーコンピューティング応用センターで開発され、HDF5 テクノロジの継続的な開発と HDF に保存されたデータの継続的なアクセスを保証することを使命とする非営利法人である HDF グループによってサポートされています。
この目標に沿って、HDF ライブラリと関連ツールは、BSD のような自由なライセンスの下で一般使用が可能です。HDF は、多くの商用および非商用のソフトウェア プラットフォームとプログラミング言語でサポートされています。無料で利用できる HDF ディストリビューションは、ライブラリ、コマンドライン ユーティリティ、テスト スイート ソース、Java インターフェイス、および Java ベースの HDF ビューア (HDFView) で構成されています。[1]
現在のバージョンである HDF5 は、主要なレガシー バージョンである HDF4 とは 設計とAPIが大きく異なります。
初期の歴史
当初AEHOO(All Encompassing Hierarchical Object Oriented format)と呼ばれていた、移植可能な科学データ形式の探求は、1987年に国立スーパーコンピュータ応用センター(NCSA)のグラフィックス基盤タスクフォース(GFTF)によって開始されました。1990年と1992年に受け取ったNSF助成金は、このプロジェクトにとって重要でした。この頃、NASAは地球観測システム(EOS)プロジェクトで使用するために15種類のファイル形式を調査しました。2年間のレビュープロセスの後、HDFが標準データおよび情報システムとして選択されました。[2]
HDF4
HDF4 は、この形式の古いバージョンですが、HDF グループによって現在も積極的にサポートされています。多次元配列、ラスター イメージ、テーブルなど、さまざまなデータ モデルをサポートしています。それぞれが特定の集計データ タイプを定義し、データとメタデータの読み取り、書き込み、整理のためのAPIを提供します。新しいデータ モデルは、HDF 開発者またはユーザーによって追加できます。
HDF は自己記述型であるため、アプリケーションは外部情報なしでファイルの構造と内容を解釈できます。 1 つの HDF ファイルには、グループまたは個別のオブジェクトとしてアクセスできる関連オブジェクトの混合を保持できます。 ユーザーは、「vgroup」と呼ばれる独自のグループ化構造を作成できます。
HDF4 形式には多くの制限があります。[3] [4]明確なオブジェクト モデルがないため、継続的なサポートと改善が困難です。多くの異なるインターフェイス スタイル (画像、表、配列) をサポートすると、API が複雑になります。メタデータのサポートは、使用されているインターフェイスによって異なります。SD ( Scientific Dataset) オブジェクトは任意の名前付き属性をサポートしますが、他のタイプは定義済みのメタデータのみをサポートします。おそらく最も重要なのは、アドレス指定に 32 ビットの符号付き整数を使用すると、HDF4 ファイルが最大 2 GB に制限され、多くの最新の科学アプリケーションでは受け入れられないことです。
HDF5
HDF5フォーマットは、HDF4ライブラリのいくつかの制限に対処し、現代のシステムやアプリケーションの現在の要件と予想される要件に対応するように設計されています。2002年にR&D 100賞を受賞しました。[5]
HDF5 では、ファイル構造が簡素化され、次の 2 つの主要なオブジェクト タイプのみが含まれるようになりました。

- データセットは型付けされた多次元配列である
- グループはデータセットや他のグループを保持できるコンテナ構造です
これにより、真に階層化された、ファイルシステムのようなデータ形式が実現します。[説明が必要] [引用が必要]実際、HDF5 ファイル内のリソースには、POSIXのような構文/path/to/resource を使用してアクセスできます。メタデータは、グループとデータセットに添付されたユーザー定義の名前付き属性の形式で保存されます。データセット、グループ、属性を使用して、画像やテーブルを表すより複雑なストレージ API を構築できます。
ファイル形式のこれらの進歩に加えて、HDF5 には、改良された型システムと、データセット領域の選択を表すデータスペース オブジェクトが含まれています。API は、データセット、グループ、属性、型、データスペース、プロパティ リストに関してもオブジェクト指向です。
NetCDFの最新バージョンであるバージョン 4 は、HDF5 に基づいています。
HDF5 は、テーブル オブジェクトのインデックスにB ツリーを使用するため、株価シリーズ、ネットワーク監視データ、3D 気象データなどの時系列データに適しています。データの大部分は、 SQLデータベースの行よりもはるかに高速にアクセスできる単純な配列 (テーブル オブジェクト) に格納されますが、非配列データには B ツリー アクセスが利用できます。HDF5 のデータ ストレージ メカニズムは、SQLスター スキーマよりもシンプルで高速です。[例が必要]
フィードバック
HDF5 に対する批判は、そのモノリシックな設計と長い仕様から生じています。
- HDF5 ではUTF-8の使用が強制されないため、クライアント アプリケーションはほとんどの場所で ASCII を期待する可能性があります。
- データセットデータは、外部ツール(h5repack)を使用してファイルのコピーを生成せずにファイル内で解放することはできません。[6]
インターフェース
公式にサポートされているAPI
- C
- C++
- CLI - .NET
- Fortran、Fortran 90
- HDF5 Lite (H5LT) – C言語用の軽量インターフェース
- HDF5 イメージ (H5IM) – 画像またはラスター用の C インターフェース
- HDF5 テーブル (H5TB) – テーブル用の C インターフェース
- HDF5 パケット テーブル (H5PT) –高速でアクセスされる「パケット」データを処理するための C およびC++のインターフェイス
- HDF5 ディメンション スケール (H5DS) – HDF5 にディメンション スケールを追加できます。
- ジャワ
サードパーティバインディング
- CGNSはHDF5をメインストレージとして使用します
- Common Lispライブラリ hdf5-cffi
- DはC APIへのバインディングを提供しており、高レベルのh5pyスタイルのDラッパーが開発中である。
- Dymolaは、Dymola 2016 FD01リリースで、SDF(Scientific Data Format)と呼ばれる実装を使用したHDF5エクスポートのサポートを導入しました。
- Erlang、Elixir、LFEはBEAM言語のバインディングを使用できる。
- GNU データ言語
- Go - gonum の hdf5 パッケージ。
- HDFql を使用すると、ユーザーは C、C++、Java、Python、C#、Fortran、R の高水準言語 (SQL に類似) を通じて HDF5 ファイルを管理できます。
- Haskell はC API へのバインディングを提供します。
- Huygens Softwareはバージョン3.5以降、HDF5を主要なストレージフォーマットとして使用しています。
- IDLE(IDL)
- IGOR Pro はHDF5 ファイルを完全にサポートします。
- JHDF5 [7]は、一部のユーザーがよりシンプルだと感じる公式のHDF5 Javaバインディングとは異なるアプローチを採用した代替Javaバインディングである。
- jHDF HDF5ファイルへの読み取り書き込みアクセスを提供する純粋なJava実装
- hf5-json 経由のJSON 。
- HDF5 のJuliaサポートは、HDF5 および JLD2 パッケージを通じて利用できます。
- LabVIEW は、h5labview や lvhdf5 などのサードパーティ ライブラリを通じて HDF サポートを取得できます。
- lua-hdf5 ライブラリを介したLua 。
- MATLAB、Scilab、Octave – 最近のリリースでは、HDF5を主要なストレージ形式として使用します。
- Mathematica [8]はHDFとHDF5データの即時解析を提供する
- パール[9]
- Python は、h5py (HDF5 抽象化への高レベルおよび低レベルの両方のアクセス) および PyTables (高度なインデックス作成とデータベースのようなクエリ機能を備えた高レベルのインターフェイス) を介して HDF5 をサポートします。HDF4 は、Python 2 と Python 3 の両方で、Python-HDF4 および/または PyHDF を介して利用できます。人気のデータ操作パッケージpandas は、PyTables を介して HDF5 からインポートしたり、HDF5 にエクスポートしたりできます。
- R はrhdf5 および hdf5r パッケージでサポートを提供します。
- Rust は、 hf5 などのサードパーティ ライブラリを通じて HDF サポートを取得できます。
ツール
- Apache Spark HDF5 コネクタ Apache Spark 用 HDF5 コネクタ
- Apache Drill HDF5 プラグイン Apache Drill 用の HDF5 プラグインにより、HDF5 ファイルに対する SQL クエリが可能になります。
- HDF プロダクト デザイナー相互運用可能な HDF5 データ プロダクト作成 GUI ツール(現在は利用できません)
- HDF Explorer HDF、HDF5、netCDFデータファイル形式を読み込むデータ視覚化プログラム
- HDFView HDFファイル用のブラウザとエディタ
- ViTables Pythonで書かれたHDF5およびPyTablesファイル用のブラウザおよびエディタ
- Panoply netCDF、HDF、GRIB データ ビューア
- silx シンクロトロンX線データ専用のHDFファイルブラウザ
- h5web ブラウザまたはVisual Studio CodeでHDFファイルを表示する
参照
- 共通データフォーマット(CDF)
- 天文学で使用されるデータ形式であるFITS
- GRIB (GRIDded Binary) は気象学で使用されるデータ形式です。
- HDF エクスプローラー
- NetCDF、Netcdf Javaライブラリは、純粋なJavaを使用してHDF5、HDF4、HDF-EOSなどの形式を読み取ります。
- プロトコル バッファ- Google のデータ交換形式
参考文献
- ^ Java ベースの HDF ビューア (HDFView)
- ^ 「HDFグループの歴史」 。 2014年7月15日閲覧。
- ^ HDF5 と HDF4 の違いは何ですか? 2009-03-30 にWayback Machineでアーカイブされました
- ^ 「HDF4 ファイルには制限がありますか?」。2016 年 4 月 19 日時点のオリジナルよりアーカイブ。2009年 3 月 29 日閲覧。
- ^ R&D 100 Awards アーカイブ 2011-01-04ウェイバックマシンにアーカイブ
- ^ Rossant, Cyrille. 「HDF5 からの移行」cyrille.rossant.net . 2016 年4 月 21 日閲覧。
- ^ “JHDF5 ライブラリ”. 2020年12月1日時点のオリジナルよりアーカイブ。2009年6月10日閲覧。
- ^ HDF インポートとエクスポート Mathematica ドキュメント
- ^ PDL::IO::HDF5
外部リンク
- 公式サイト
- HDF5とは何ですか?
- HDF-EOS ツールおよび情報センター
- ナビゲーション サーフェスを開く
