RustPDF Documentation

This project is maintained by ohara-lab-su

RustPDF Python I/F チュートリアル

1. 最適化なし

from rust_pdf import Config
from rust_pdf import RustPDF

config = Config("config.json")
pdf = RustPDF(config=config)

pdf.load_xy("data.dat")
pdf.run_all()

q, sq = pdf.get_sq()
r, gr = pdf.get_gr()
r_lorch, gr_lorch = pdf.get_gr_lorch()

2. background あり

pdf.load_bg_xy("background.dat", factor=1.0)
pdf.run_all()

factor は Config.bg_factor、Rust parameter key では Back Ground Factor に反映される。

3. 通常 optimize 後に計算

config = Config("fit_config.json")
pdf = RustPDF(config=config)

pdf.load_xy("data.dat")

opt = pdf.optimize()
pdf.run_all()

opt.parameters は最適化後 parameter tree。 同じ内容は pdf.config に反映済みなので、 直後の run_all() は最適化後 parameter で計算する。

4. quick optimize 後に計算

opt = pdf.quick_optimize()
pdf.run_all()

quick optimize は Rust quick_run() と同じく、 Halton multi-start を省略し現在値から LM を1回実行する。

5. low-level I/F を直接使う

import rust_pdf

out = rust_pdf.run(config_dict, tth, intensity)
opt = rust_pdf.optimize(config_dict, tth, intensity)
quick = rust_pdf.quick_optimize(config_dict, tth, intensity)

この経路は高レベル RustPDF を追加しても残る。

6. 保存

pdf.save_iq("iq.dat")
pdf.save_sq("sq.dat")
pdf.save_gr("gr.dat")
pdf.save_gr_lorch("gr_lorch.dat")

7. import と内部ファイル分割

利用側の import は変更しない。

from rust_pdf import Config
from rust_pdf import RustPDF

Config は config.py、RustPDF は pdf.py に実装されるが、 __init__.py から re-export される。

8. 通常計算

RustPDF の通常 pipeline は run()。

config = RustPDFConfig("config.json")
pdf = RustPDF(config=config)

pdf.load_xy("data.dat")
pdf.run()

background がある場合:

pdf.load_bg_xy("background.dat", factor=1.0)
pdf.run()

9. parameter optimization

optimizer は通常 pipeline とは独立して明示的に実行する。

pdf.optimize()
pdf.run()

quick optimizer:

pdf.quick_optimize()
pdf.run()

最適化結果:

opt = pdf.last_optimize_result
print(opt.termination)
print(opt.parameters)

RustPDF に run_auto() は設けない。

また localPDF の run_bft() は独立した BFT_smooth() 処理を意味するが、 Rust pipeline に同じ独立処理段階はないため RustPDF には設けない。

サンプルファイルの最終構成

サンプルは2本だけとする。

main_rust_manual.py
main_rust_auto.py

main_rust_manual.py は通常 pipeline を明示的に pdf.run() する手動版。

main_rust_auto.py は parameter optimization を行う自動版であり、 オリジナル Rust API の意味を保って、

pdf.optimize()
pdf.run()

と明示的に実行する。

run_auto() のような独自 API は使用しない。