localPDF

view on github / ohara-lab-su (doc)

localPDF は、Web ブラウザ上で操作する webPDF の PDF 計算機能を、 ローカルの Python から API として利用するためのプロジェクトです。

webPDF では、ファイルの選択や計算の実行を Web UI 上の操作で行いますが、 localPDF では実験データや計算条件を Python から与え、 S(Q)、G(r) などの計算・取得・保存をプログラムから行えます。

数値計算の基本部分には webPDF の計算コアをそのまま利用しています。 これは、webPDF 本家の実装が更新された場合にも、 基本的にはそのまま置き換えて利用できるようにするためです。 そのため、原則として webPDF は変更しません。

webPDF のソースコードをローカル実行用に直接書き換えることは簡単ですが、 それを避けるため、ブラウザ / PyScript 実行環境に依存する部分をローカル環境へブリッジし、 既存の計算コアを利用する方式を採用しています。

使い方

localPDF では、Web 版で行っていた 「実験データを選択して計算条件を設定し、S(Q)、G(r) を計算して保存する」 という操作を Python API から実行します。

基本的な流れは次のとおりです。

Config
  ↓
LocalPDF
  ↓
load_xy()
  ↓
run_all()
  ↓
run_bft()
  ↓
get_*() / save_*()

最小限のコードは次のようになります。

from localPDF import Config, LocalPDF

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

pdf.load_xy("data.dat")
pdf.load_bg_xy("background.dat", factor=1.0)  # background がある場合のみ

pdf.run_all()
pdf.run_bft()

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

pdf.save_sq("sq.dat")
pdf.save_gr_lorch("gr_lorch.dat")

Config で計算条件を読み込み、LocalPDF に実験データを与えます。 run_all() で標準的な PDF 計算を実行し、続けて run_bft() で back Fourier transform と Lorch 処理を実行します。 計算結果は get_*() で Python 上に取得するか、save_*() でファイルに保存できます。

background がない場合は load_bg_xy() は不要です。 計算結果を表示する場合は LocalPDFPlot を利用できます。

詳細な利用方法は「localPDF チュートリアル」、各 API の仕様は 「localPDF API リファレンス」、内部構造を含む説明は「localPDF マニュアル」を参照してください。