Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

データ保存とmetadata

計算結果は、後から確認できる形で保存します。画面への出力だけでは、条件を変えて比較したり、同じデータから図を作り直したり、他の言語で解析したりすることが難しくなります。

表形式データ

時系列や少数列の結果は、CSVで保存すると扱いやすいです。

t,energy,magnetization
0.0,-1.24,0.83
0.1,-1.25,0.82

CSVはgnuplot、Python、Julia、表計算ソフトなどから読みやすいため、最初の保存形式として適しています。

多次元配列

格子上の場、波動関数、画像、相関関数などの多次元配列では、CSVはあまり適していません。形状、軸、データ型を別に管理する必要があり、ファイルサイズも大きくなりやすいためです。

このような場合は、次の形式を検討します。

  • HDF5
  • NumPy形式(.npy, .npz
  • 必要に応じた独自binary形式

HDF5やNumPy形式は、多くの言語やツールから読み書きしやすい形式です。Rust側で計算し、保存したデータをPythonやJuliaで解析する流れにも向いています。

metadata

数値データだけでなく、実行条件も保存します。例えば、次のような情報です。

  • 入力パラメータ
  • 格子サイズ、shape、axisの意味
  • 時間刻み、空間刻み
  • 境界条件
  • 乱数seed
  • crate version、Rust version
  • 出力ファイル名
  • 実行日時

metadata は、JSON、TOML、YAMLなどのテキスト形式で保存すると確認しやすいです。

{
  "model": "ising_2d",
  "lattice_size": [64, 64],
  "temperature": 2.269,
  "seed": 12345,
  "output": "samples.npy"
}

compute と plot を分ける

本書では、計算、保存、可視化を分けます。

  1. Rustで計算する。
  2. 結果とmetadataを保存する。
  3. 保存済みデータから図を作る。
  4. 図と数値を使って検証する。

この流れにすると、AI agent に入出力コードやプロット用スクリプトを任せやすくなります。ただし、保存する列、axis、単位、境界条件、検証対象が正しいかは人間が確認します。

Last change: , commit: 23d4376