問題タブ [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.
dataset - 多数の HDF5 ファイルを連結する
それぞれ約 1.5 GB の約 500 個の HDF5 ファイルがあります。
各ファイルの構造はまったく同じで、7 つの複合 (int、double、double) データセットと可変数のサンプルです。
ここで、各データセットを連結して、このすべてのファイルを連結し、最終的に 7 つのデータセットを含む単一の 750 GB ファイルを作成したいと考えています。
現在、次の h5py スクリプトを実行しています。
- 最大無制限の適切なデータセットで HDF5 ファイルを作成します
- すべてのファイルを順番に開く
- サンプル数を確認してください(可変であるため)
- グローバル ファイルのサイズを変更する
- データを追加する
これには明らかに何時間もかかりますが、これを改善するための提案はありますか?
私はクラスターで作業しているので、HDF5 を並行して使用できますが、自分で何かを実装するにはCプログラミングが得意ではありません。既に作成されたツールが必要です。
python - hdf5 および ndarray の追加 / 大規模なデータセットに対する時間効率の高いアプローチ
バックグラウンド
私は ak の n 次元の時系列を持っており、それぞれが float 値 (n 列と日付を表す 1 列) を保持する mx (n+1) 配列として表されます。
例:
k (約 400 万) の時系列
毎日、データ セットのサブセット (< k) に追加の行を追加したいと考えています。すべてのデータセットは、1 つのhd5f ファイルにグループで保存されます。
質問
行をデータセットに追加する最も時間効率の良い方法は何ですか?
入力は次のような CSV ファイルです。
日付は特定のファイルに対して一意であり、無視できます。私は約400万のデータセットを持っています。問題は、キーを検索し、完全な numpy 配列を取得し、配列のサイズを変更し、行を追加して、配列を再度保存する必要があることです。hd5f ファイルの合計サイズは約 100 GB です。これをスピードアップする方法はありますか?SQLite などを使用してもうまくいかないことに同意できると思います。すべてのデータを取得するとすぐに、平均的なデータ セットには 100 万要素× 400 万データ セットが含まれます。
ありがとう!
c++ - hdf5 時系列でクエリを実行する方法
H5TB APIを使用して、(等距離ではない)時系列をhdf5ファイルのテーブルとして保存します。フォーマットは次のようになります。
次のような「詳細データ」の挿入もあります。
ここで、データを別のデータ形式で保存したいので、次のように hdf5 ファイルを「クエリ」します。
このクエリを実行する方法をいくつか考えました。
- B-Tree インデックスと呼ばれる機能が組み込まれています。これをデータの索引付けに使用できますか?
- 時間チャネルでバイナリ検索を実行してから、チャネル値を読み取る必要があります
- 私は自分でインデックスを作成します (詳細が挿入されるたびに更新します)。ここで使用するのに最適なアルゴリズムは何ですか?
インデックスの主な動機は、クエリの応答を高速にすることです。
ここで何を提案しますか?
python - hdf5 ファイル内のデータにアクセスできるように h5py を拡張するにはどうすればよいですか?
h5py モジュールを使用して hdf5 ファイルを作成する小さな python プログラムがあります。hdf5 ファイルのデータを処理する Python モジュールを作成したいと考えています。どうすればそれができますか?
より具体的には、numpy 配列を PyArrayObject に設定し、PyArg_ParseTuple を使用して読み取ることができます。このようにして、Python モジュールを作成しているときに、numpy 配列から要素を読み取ることができます。個々の要素にアクセスできるように hdf5 ファイルを読み取る方法は?
更新: 以下の回答に感謝します。Python からではなく、C から hdf5 ファイルを読み取る必要があります。その方法はわかっています。例えば:
これで、「\tmp\tmp.h5」という hdf5 ファイルができました。私がする必要があるのは、(python ではなく) C を使用して hdf5 ファイルから個々の配列要素を読み取って、それらの要素で何かを行うことができるようにすることです。これは、numpy 配列を拡張する方法を示しています。hdf5を拡張するには?
編集:文法
bash - サーバーでRを呼び出して、ホストのRセッション内からデータを抽出しますか?
バックグラウンド
ホスト上で実行され、サーバー上でジョブを開始するRスクリプトがあります。ジョブは大きなhdf5ファイルを出力します。
残りの作業はホストで行われます。ただし、R hdf5ライブラリはサーバー上でのみ機能し、ホスト上では機能しません(既知のバグのため)。
ホストのRから、サーバーのRセッションに接続し、R hdf5ライブラリをロードし、hdf5ファイルからデータを抽出して、このオブジェクトをホストに渡すことはできますか?
現在のアプローチ
私の現在の悩みは、サーバー上でRスクリプトを呼び出してRdataファイルへの抽出を行うR内からbashスクリプトを呼び出し、rsyncを使用してそれをホストに戻すことです(すべて内system()
)
質問
サーバー上のこれらのhdf5ファイルからデータを抽出するためのより良い方法はありますか?
browser
デバッグ時にセッションに入るのと同じように、サーバーのRセッションに入るようなことを考えています。
python - PythonでHDF5ファイルを書く最速の方法は?
テキスト/数字が混在する大きな(数十GB)CSVファイルを考えると、メモリ使用量を適切に保ちながら、同じコンテンツでHDF5ファイルを作成する最も速い方法は何ですか?
h5py
できればモジュールを使いたいです。
以下のおもちゃの例では、HDF5にデータを書き込むための信じられないほど遅くて信じられないほど速い方法を見つけました。10,000行程度のチャンクでHDF5に書き込むのがベストプラクティスでしょうか?または、そのようなファイルに大量のデータを書き込むためのより良い方法はありますか?
python - h5pyを含む複合データ型:属性内のデータ型
HDF5でSiloを使用していますが、h5pyで一部のメタデータにアクセスできません。かなり珍しいHDF5構造を吐き出し、DATATYPE
内部にを配置しDATATYPE
ます。これがからの出力の抜粋ですh5dump
:
基本的に、正しくフォーマットされたすべてのデータを含むが、データ型に関連付けられたラベルを含まないをf['sigma_t'].attrs['silo']
返します。tuple
(名前などを知る必要がありますmeshid
)value0
これを取得する方法はありますか?私は途方に暮れています。
サンプルファイルとスクリプト
HDF5ファイルには「sigma_t」フィールドが含まれており、実際のデータはに保存され/.silo/#000004
ます。
脚本:
結果:
私も欲しいのは次のようなものです:
これは可能ですか?
c++ - HDF5 C++ API を使用してデータセットに属性を設定する
HDF5 1.8.7 で HDF5 C++ API を使用しており、H5::Attribute インスタンスを使用して H5::DataSet インスタンスにいくつかのスカラー属性を設定したいと考えていますが、例が見つかりません。C API を使用すると、非常に簡単です。
奇妙な理由により、C++ API の H5::Attribute クラスと H5::DataSet クラスに必要なメソッドがないようです。誰かが C++ API を使用して具体的な例を思い付くことができれば、私は非常に感謝しています.
amazon-s3 - Amazon EC2、S3、EBS での HDF5 ファイルのホスティングとアクセス
かなり大きな HDF5 ファイルをオンラインで配置しようと考えており、Amazon S3 や EBS を保存場所として検討しており、バックエンド処理に EC2 インスタンスを 1 つまたは 2 つ活用する可能性があります。それがどのようにできるか、または以前に行われたかについての実用的なアイデアと、可能であれば実際の例へのリンクを探しています。誰かが他の組み込みデータストアのフラットファイルにアクセスするのと同じ方法で実行できると思いますが、実用的な洞察が得られる場合は車輪の再発明を避けたいと思います.
python - pytablesを使用して列のサブセットを選択する最もエレガントな方法は何ですか?
pytablesに300以上の列があるデータセットがあり、さまざまなサブセットを簡単に選択できるようにしたいと考えています。これに対する非常にエレガントな解決策はないようです、または私が欠けているものがありますか?
また、元のテーブルから選択した列をエイリアシングするだけの別のテーブルを作成する方法にも満足しているので、メインテーブルとサブセットティーブルを作成できます。それを行う方法はありますか?