This project is maintained by ohara-lab-su
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()
pdf.load_bg_xy("background.dat", factor=1.0)
pdf.run_all()
factor は Config.bg_factor、Rust parameter key では
Back Ground Factor に反映される。
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 で計算する。
opt = pdf.quick_optimize()
pdf.run_all()
quick optimize は Rust quick_run() と同じく、
Halton multi-start を省略し現在値から LM を1回実行する。
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 を追加しても残る。
pdf.save_iq("iq.dat")
pdf.save_sq("sq.dat")
pdf.save_gr("gr.dat")
pdf.save_gr_lorch("gr_lorch.dat")
利用側の import は変更しない。
from rust_pdf import Config
from rust_pdf import RustPDF
Config は config.py、RustPDF は pdf.py に実装されるが、
__init__.py から re-export される。
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()
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 は使用しない。