問題タブ [hdf5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
4998 参照

c++ - 非 POD タイプの offsetof() に似たものを探す

非 POD の性質を持つ C++ クラスのデータ メンバーのオフセットを取得する方法を探しています。

理由は次のとおりです。

HDF5形式でデータを保存したいのですが、これは私の種類の資料 (数値シミュレーション出力) に最も適していると思われますが、おそらく C 指向のライブラリです。私はC++インターフェイスを介してそれを使用したいので、ストレージタイプを次のように宣言する必要があります( herehereのドキュメントに従ってください(セクション4.3.2.1.1)):

ここで、HOFFSET は、offsetof を使用する HDF 固有のマクロです。

問題はもちろん、example-class がもう少し機能的になるとすぐに、もはや POD タイプではなくなるため、offsetof を使用すると未定義の結果が生じることです。

私が考えることができる唯一の回避策は、最初に保存したいデータをより単純な構造体にエクスポートしてから、それを HDF に渡すことです。ただし、これにはデータのコピーが含まれます。これはまさに HDF が回避しようとしているものです (そして、ライブラリがオブジェクトに到達してデータをファイルに保存できるようにするこの CompType がある理由)。

だから、もっといいアイデアがあればいいなと思っていました。理想的には、この問題の移植可能な回避策を探していますが、それが不足している場合でも、GCC を使用して x86 および x86_64 で動作するアイデアを教えていただければ幸いです。

----- 後で追加: -----

Greg Hewgill は、データを単純な構造体に格納し、それを継承して実際のクラスを構築することを以下に提案しました。特に HDF の場合、実際には機能しない可能性があると思います。上記よりも複雑な使用シナリオ:

さて、クラス that_uses_derived_non_pod のインスタンスを格納するとき、あたかも base_pod を member_c として持っているかのように、そのメモリ レイアウトを記述することはできません。派生した_non_podがファンキーなものを追加するため、これはオフセットを間違って取得します(仮想関数テーブルのようなものだと思いますか?)。

0 投票する
2 に答える
8539 参照

c++ - HDF5 のデータセットを削除または更新しますか?

HDF5 ファイル内のデータセットに関連付けられたデータをプログラムで変更したいと考えています。データセットを名前で削除する (変更されたデータで再度追加できるようにする) か、データセットを名前で更新する方法が見つからないようです。私は HDF5 1.6.x に C API を使用していますが、任意の HDF5 API へのポインターが役立ちます。

0 投票する
2 に答える
13094 参照

database - HDF5 の評価: HDF5 はデータのモデリングにどのような制限/機能を提供しますか?

C/C++ コードの分析中に収集したデータを格納するために使用するテクノロジを評価しています。C++ の場合、データ量は比較的大きくなる可能性があり、TU あたり最大 20Mb です。

次のSOの回答を読んだ後、 HDF5が使用に適したテクノロジーである可能性があると考えました。ここにいる人々が、私が持っているいくつかの最初の質問に答えるのを手伝ってくれるかどうか疑問に思っていました:

  1. パフォーマンス。データの一般的な使用法は、コンパイラによって生成された「.o」ファイルの有効期間と同様に、1 回の書き込みと「数回」の読み取りです。HDF5 は、SQLite DB などを使用する場合と比べてどうですか? それは合理的な比較でさえありますか?

  2. 時間の経過とともに、保存している情報を追加しますが、新しい形式をサポートするために、完全に新しい "リーダー" のセットを再配布する必要はありません。ユーザー ガイドを読んだ後、HDF5 は XML や DB に似ていることを理解しました。つまり、情報はタグ/列に関連付けられているため、古い構造を読み取るために作成されたツールは、関係のないフィールドを無視します。これについての私の理解は正しいですか?

  3. 書き出したい情報のかなりの部分は、ツリー型の構造 (スコープ階層、型階層など) になります。理想的には、親、子などを持つスコープをモデル化します。1 つの HDF5 オブジェクト「ポイント」を持つことは可能ですか?別の?そうでない場合、HDF5 を使用してこの問題を解決する標準的な手法はありますか? それとも、DB で必要とされるように、データを検索するときに適切なルックアップを使用して、あるオブジェクトを別のオブジェクトに「リンク」する一意のキーが必要ですか?

どうもありがとう!

0 投票する
8 に答える
10317 参照

c++ - std :: vector <std :: string>コンテナをHDF5データセットに書き出すのに最適な方法は?

文字列のベクトルが与えられた場合、それらをHDF5データセットに書き出すための最良の方法は何ですか?現在、私は次のようなことをしています。

少なくとも、上記を次のように変更したいと思います。

  1. 可変長文字列を使用します
  2. 一時的なコンテナは必要ありません

データの保存方法に制限はありません。たとえば、これを行うためのより良い方法がある場合は、 COMPOUNDデータ型である必要はありません。

編集: 問題を絞り込むために、私はC ++側でデータを操作することに比較的精通しています。ほとんどの助けが必要なのは、HDF5側です。

ご協力いただきありがとうございます。

0 投票する
7 に答える
24453 参照

hdf5 - 科学データを保存するための NetCDF と HDF5 に関する意見はありますか?

科学データを保存する方法として、NetCDF と HDF5 についてプラス/マイナスを与えるのに十分な経験を持っている人はいますか?

私は HDF5 を使用しており、Java 経由で読み書きしたいと考えていますが、インターフェイスは本質的に C ライブラリのラッパーであり、混乱を招くことがわかったので、NetCDF は興味深いようですが、それについてはほとんど何も知りません。

編集:私のアプリケーションはデータロギング専用であるため、自己記述形式のファイルを取得します。私にとって重要な機能は、任意のメタデータを追加できること、バイト配列に追加するための高速書き込みアクセスができること、単一ライター/複数リーダーの同時実行性があることです (強く推奨されますが必須ではありません。 2 人の書き込み者が同じファイルを同時に開いて悲惨な結果にならないようにするためのメカニズムをサポートしているかどうかは述べていません)。私は HDF5 の階層的な側面が好きです (特に、「通常の」ファイルシステムのような階層よりもはるかに柔軟な有向非巡回グラフ階層が大好きです)、現在 NetCDF ドキュメントを読んでいます...ファイルの場合、おそらく私にはうまくいきません。:(

更新NetCDF-Javaは netCDF-4 ファイルから読み取りますが、階層グループをサポートしない netCDF-3 ファイルからのみ書き込みます。くそー。

2009 年 7 月 14 日更新: Java の HDF5 にひどく腹を立て始めています。利用可能なライブラリはそれほど優れたものではなく、Java の抽象化レイヤー (複合データ型) に関係する主要な障害がいくつかあります。C の優れたファイル形式ですが、負けたようです。>:(

0 投票する
2 に答える
9518 参照

hdf5 - HDF5 ファイルからのデータの削除

複合要素の 1 次元 (N x 1) データセットを含む HDF5 ファイルを持っています。実際には時系列です。データは最初にオフラインで HFD5 ファイルに収集され、次に分析されます。分析中に、ほとんどのデータは興味深いものではないことが判明し、その一部だけが興味深いものになります。データセットは非常に大きくなる可能性があるため、興味深い要素を維持しながら、興味のない要素を取り除きたいと考えています。たとえば、500 要素のデータセットの要素 0 ~ 100 と 200 ~ 300、および 350 ~ 400 を保持し、残りをダンプします。しかし、どのように?

HDF5 でこれを達成する方法について経験のある人はいますか? どうやら、少なくとも次の方法で行うことができます。

  • (明らかな解決策)、新しい新鮮なファイルを作成し、そこに必要なデータを要素ごとに書き込みます。次に、古いファイルを削除します。
  • または、古いファイルに新しい新しいデータセットを作成し、そこに必要なデータを書き込み、H5Gunlink() を使用して古いデータセットのリンクを解除し、h5repack を介してファイルを実行して、要求されていない空き領域を取り除きます。
  • または、既存のデータセット内の関心のある要素を先頭に向かって移動します (たとえば、要素 200 ~ 300 を位置 101 ~ 201 に、要素 350 ~ 400 を位置 202 ~ 252 に移動します)。次に、H5Dset_extent() を呼び出して、データセットのサイズを縮小します。次に、h5repack を実行して空き領域を解放します。

つまらない要素を取り除いてもかなりファイルが大きくなる可能性があるので、書き直しはしたくない(時間がかかる)のですが、実際に空き容量を解放する必要がありそうです。HDF5 の専門家からのヒントはありますか?

0 投票する
4 に答える
895 参照

c# - 階層的な.Netファイル形式?

当社は、ラボセンサーデータを大量に保持するためのファイル形式をしばらく検討してきました。インストルメンテーションを実行するたびに、ファイルが生成され、トレンド分析などのためにデータベースに保存されます。データを「グループ化」できるため、階層形式が推奨されます。これは、データをデータベースに配置する前の中間ファイル形式です。私たちの開発環境のため、これは私たちの優先リストです:

1).Net準拠。APIは、Webサービスとクライアントアプリケーションで使用されます。お客様の環境を管理することはできないため、pure.Netソリューションが最適です。

2)読み取​​りの速度。読み取りはランダムであり、順次ではありません。速いほど良い。私たちがC#開発ショップでなければ、スピードは1位だと思います。

3)ファイルサイズ。ファイル自体が大きい場合は、良好な圧縮率(86%以上)が望まれます。

4)読み取りのメモリフットプリント。データ量が多いため、単純に読み取ることはできません。各センサーには時間と値のペアがあります。これにより、400万ペアを超える意志が生成される可能性があります。これにより、XMLが不要になりました。

現在HDF5を調べたところ、APIが.NETの分野でひどく不足しており、Webサービスを実行できませんが、探しているサイズ/速度があります。JSONも調べたところ、有望に見えましたが、データの一部を読み戻そうとはしていません。Webを検索しましたが、必要なことを実行するファイル形式は多くありません。どんな助けでも大歓迎です。

0 投票する
1 に答える
899 参照

hdf5 - チャンクされた HDF5 DataSet とスラブサイズ

チャンク化されたデータセットに関する HDF5 のパフォーマンスを評価しています。特に、連続した異なるチャンク間で読み取ることが可能かどうか、またそれによってパフォーマンスがどのように影響を受けるかを把握しようとしています。たとえば、チャンク サイズが 10 のデータセットがあり、値が 100 のデータセットで、値 23 から 48 を読み取りたいとします。パフォーマンスが大幅に低下しますか?

どうもありがとう!

0 投票する
3 に答える
3736 参照

java-native-interface - JNIパフォーマンス

メインプログラムはJavaですが、ストレージからデータを抽出するコードはCで記述されています。抽出されたデータからHDF5ファイルを作成する必要があります。JNIを使​​用してCコードを呼び出してデータを取得し、JavaからHDF5ファイルをビルドするか、CコードからHDF5をビルドする方がよいでしょうか。

JNIまたはCの経験はほとんどありません。

また、私たちの主な基準の1つはパフォーマンスです。JNIを使​​用すると、パフォーマンスにどの程度の影響がありますか?

0 投票する
4 に答える
11800 参照

search - HDF5データセットの検索

私は現在HDF5を調査しています。スレッド「 EvaluatingHDF5」から興味深いコメントを読みました。HDF5がデータを保存するための最適なソリューションであることを理解していますが、どのようにクエリしますか?たとえば、いくつかの識別子を含む大きなファイルがあるとします。特定の識別子がファイルに存在するかどうかをすばやく知る方法はありますか?