Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

XRR-structure-analysis-app

X線反射率法(XRR: X-Ray Reflectivity)の解析アプリ。CSVで定義した膜構造モデルをもとに、差分進化法(Differential Evolution)で薄膜の膜厚・密度・界面粗さを推定します。

A standalone XRR analysis app: define your film stack in CSV, fit thickness / density / roughness with differential evolution. Pure NumPy Parratt engine — no refl1d dependency.

fit demo

特徴

  • Parratt漸化式 + Nevot-Croce粗さ因子を自前実装(NumPyベクトル化)。refl1d/bumps非依存で、Windows環境でも pip install だけで動作
  • 膜構造はCSVで定義: 1行=1層、各パラメータに初期値・探索範囲・フィットフラグを指定
  • 光学定数δ・βは化学式と密度から自動計算(periodictable 使用)
  • 目的関数はlog10スケール残差(XRRの6桁超のダイナミックレンジに対応)
  • δ・βの密度線形性を利用した高速化により、6パラメータのフィットが数秒で完了
  • 装置効果を考慮: footprint補正、Gaussian分解能畳み込み、スケール因子、バックグラウンド
  • Rigaku .ras(アッテネータ列対応)と汎用2列テキストの読み込み
  • Streamlit UI: 構造エディタ、収束ライブ表示、密度深さプロファイル、Excelレポート出力
  • 物理検証済みのテストスイート(Fresnel解析解との照合、Kiessigフリンジ周期、合成データ復元)

インストール

git clone https://github.com/yharada520/XRR-structure-analysis-app.git
cd XRR-structure-analysis-app
pip install -r requirements.txt

使い方

Streamlitアプリ

streamlit run app.py
  1. 測定データ(.ras / .csv / .txt)をアップロード(「デモデータを読み込む」で試用可)
  2. 膜構造モデルをテンプレートから選ぶか、表エディタで編集
  3. 「フィット開始」— 収束状況がライブ表示されます
  4. 結果(パラメータ表・密度プロファイル・残差)を確認し、Excel/CSVでエクスポート

シミュレーションCLI

python simulate.py examples/sio2_on_si.csv --out sim.png --csv-out sim.csv

膜構造CSVの書式

1行=1層(上から表面層→基板の順)。fit_* = 1 のパラメータが min/max の範囲でフィットされます。

layer,formula,density_init,density_min,density_max,thickness_init,thickness_min,thickness_max,roughness_init,roughness_min,roughness_max,fit_density,fit_thickness,fit_roughness
SiO2,SiO2,2.2,2.0,2.4,20.0,15.0,25.0,0.3,0.1,1.0,1,1,1
Si_sub,Si,2.33,,,inf,,,0.2,0.1,1.0,0,0,1
  • formula: 化学式(δ・βの計算に使用。例: SiO2, Al2O3, NiFe)
  • 厚さ・粗さの単位は nm、密度は g/cm³
  • 基板(最終行)の thickness_init は inf

多層膜の例は examples/al2o3_on_si.csv(有機汚染層/Al₂O₃/界面SiOx/Si基板の4層)を参照。

multilayer simulation

物理モデル

  • 屈折率 n = 1 − δ + iβ、kz = (2π/λ)·√(n² − cos²θ)
  • 界面Fresnel係数にNevot-Croce因子 exp(−2·kz,j·kz,j+1·σ²) を乗じ、基板側から漸化的に振幅反射率を合成(Parratt 1954)
  • 測定強度モデル: I(θ) = scale × footprint(θ) × conv(R(θ), Δθ) + background

テスト

python -m pytest tests/

主な検証項目: Si臨界角0.223°(CuKα)、単一界面のFresnel解析解との一致(相対誤差<1e-10)、屈折補正後のKiessigフリンジ周期 2π/d、3%ノイズ合成データからの膜厚±0.1%・密度±0.1%復元。

ロードマップ

  • M1: 物理エンジン + CSV膜構造定義
  • M2: 差分進化フィッティング + データローダー
  • M3: Streamlit UI
  • M4: 遺伝的アルゴリズム(pygad)選択肢 + BICモデル自動選択 + バッチ処理
  • M5: 不確かさ定量化(ブートストラップ/MCMC)+ レポート強化

参考文献

  • 表 和彦, X線薄膜測定法 第5回 X線反射率測定法, リガクジャーナル 40(2), 1–9 (2009)
  • L. G. Parratt, Phys. Rev. 95, 359 (1954)
  • L. Névot and P. Croce, Rev. Phys. Appl. 15, 761 (1980)

ライセンス

Apache License 2.0

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages