XRF_fit.py 技術ドキュメント
プログラムの動作
XRF_fit.py は、X線蛍光 (XRF) スペクトルデータの可視化と基本的な解析を行うためのPythonプログラムです。主に、指定された入力ファイルからXRFスペクトルデータを読み込み、matplotlibとTkinterを組み合わせて構築されたGUI上でグラフとして表示します。
主な機能:
データ読み込み: 指定されたXRFスペクトルデータファイルを読み込みます。入力ファイルの形式はプラグインシステムによって自動的に判別されます。
スペクトル表示: 読み込んだ複数のスペクトルデータを、一つのウィンドウ内の複数のサブプロットに表示します。X軸はXRFの角度(\(2\theta\))またはエネルギー、Y軸は強度です。
GUI操作: Tkinterベースのグラフィカルユーザーインターフェースを提供し、プロットの表示、図のPNGファイルへの保存、および将来的な機能(平滑化、ピークサーチなど)のためのユーザーインターフェース要素(ボタン、エントリー、チェックボックスなど)を配置します。
ログ出力: プログラムの実行ログを、指定された入力ファイル名に基づいたファイル名で自動的に保存します。
解決する課題: このプログラムは、XRFデータの初期的な探索的データ解析 (EDA) と可視化を支援します。研究者や技術者がXRFスペクトルデータを手軽に確認し、基本的な特性を把握するためのツールとして機能します。
原理
XRF_fit.py は、入力されたXRFスペクトルデータに対して直接的な数式計算や物理モデルの適用は行いません。主な処理はデータの読み込み、整形、そしてグラフ描画ライブラリであるMatplotlibを用いた可視化です。
XRFスペクトルデータは通常、X軸に角度(\(2\theta\))またはエネルギー、Y軸に強度を持つデータとして扱われます。プログラムはこれらのスペクトルデータを読み込み、それぞれのスペクトルを独立したサブプロットに描画します。データは数値配列としてNumpyによって処理され、Matplotlibによって曲線としてプロットされます。GUI部分はPythonの標準ライブラリであるTkinterを使用しており、ユーザーインタラクション(ボタンクリック、値入力など)を処理します。
ピークフィッティングやスムージングといったより高度な解析機能は、プログラムのGUI要素として準備されていますが、本バージョンではその具体的なアルゴリズム実装は含まれていません。
必要な非標準ライブラリとインストール方法
XRF_fit.py の実行には、以下の非標準ライブラリが必要です。
numpy: 数値計算ライブラリ。
matplotlib: グラフ描画ライブラリ。
tklib: カスタムのTkinter拡張ライブラリ。
numpy と matplotlib は pip コマンドでインストールできます。
pip install numpy matplotlib
tklib は、Python標準ライブラリのTkinterを拡張したカスタムライブラリであり、本ドキュメント作成時点では一般的なPyPIリポジトリでは公開されていません。このプログラムは、環境変数 tkprog_X_path で指定されたディレクトリ内に tklib ライブラリが存在することを前提としています。tklib の入手およびインストール方法については、別途開発元に問い合わせる必要があります。通常は、tkprog_X_path 環境変数に tklib のルートディレクトリのパスを設定することで利用可能になります。
必要な入力ファイル
プログラムは --infile 引数で指定されたファイルを読み込みます。
ファイル形式: 特定のファイル形式に限定されず、
--input_plugin_dirと--input_plugin_nameで指定されるプラグインモジュールによって解釈可能な形式であれば利用できます。デフォルトのプラグイン名xlsx2xlsxから、Excelファイル (.xlsx) もサポートされている可能性があります。データ構造: XRFスペクトルデータを含むファイルで、一般的には角度(またはエネルギー)と強度のカラム(列)を持つテキスト形式や表形式のデータが期待されます。具体的なデータフォーマットは、使用される入力プラグインによって異なります。
デフォルトファイル:
--infileを指定しない場合、プログラムはデフォルトでKI240409-1-IGZO.txtというファイルを読み込もうとします。
生成される出力ファイル
XRF_fit.py は以下のファイルを生成する可能性があります。
プロット画像ファイル:
ファイル名: デフォルトでは
figure.pngですが、GUI上の「Save figure」ボタンで保存時に指定可能です。内容: GUIに表示されているXRFスペクトルのグラフ画像。PNG形式で保存されます。
ログファイル:
ファイル名:
--infileで指定された入力ファイルのパスを基に自動生成されます。例えば、入力ファイルがpath/to/data.txtの場合、ログファイルはpath/to/data-out.txtとなります。内容: プログラムの実行中の標準出力(コンソールへのメッセージ)がリダイレクトされて記録されます。読み込んだファイル名、プラグイン情報、プロット情報などが含まれます。
コマンドラインでの使用例 (Usage)
XRF_fit.py は、以下のコマンドライン引数を受け付けます。
python XRF_fit.py [OPTIONS]
--mode=strプログラムの実行モードを指定します。
デフォルト値:
plot_all現在の実装では
plot_allのみがサポートされています。
--input_plugin_dir=dir入力ファイル読み込みプラグインが配置されているディレクトリのパスを指定します。
デフォルト値:
$tkprog_X_path/plugin/filter
--input_plugin_name=file_body入力ファイル読み込みに使用するプラグインモジュールのファイル本体名(拡張子
.pyを除く)を指定します。デフォルト値:
xlsx2xlsx
--infile=path解析対象の入力XRFスペクトルファイルのパスを指定します。
デフォルト値:
KI240409-1-IGZO.txt
ヘルプメッセージを表示するには、--help オプションを使用します。
python XRF_fit.py --help
コマンドラインでの具体的な使用例
1. デフォルト設定での実行
プログラムに引数を何も与えずに実行すると、デフォルトの入力ファイル KI240409-1-IGZO.txt を読み込み、plot_all モードでグラフを表示します。
python XRF_fit.py
実行結果の説明:
ログファイル
KI240409-1-IGZO-out.txtが生成され、実行メッセージが記録されます。XRFスペクトルデータが表示されたTkinterウィンドウが開きます。
ウィンドウには複数のXRFスペクトルがサブプロットとして表示されます。
ウィンドウ下部にはツールバーがあり、プロットの拡大・縮小、移動、PNG形式での保存などの操作が可能です。
左側にはGUIウィジェット(スライダ、ボタンなど)が表示されますが、本バージョンではこれらのボタンは主にダミーであり、
smoothingやpeak searchボタンをクリックしても、現時点では特定の解析処理は実行されません(コンソールにクリックイベントが表示されるのみです)。コンソールには
Press ENTER to terminate>>と表示され、ユーザーがEnterキーを押すまでプログラムは待機します。Enterキーを押すと、GUIウィンドウが閉じ、プログラムが終了します。
2. 特定の入力ファイルを指定して実行
別のXRFスペクトルデータファイル my_xrf_data.txt を読み込みたい場合。
python XRF_fit.py --infile my_xrf_data.txt
実行結果の説明:
my_xrf_data-out.txtというログファイルが生成され、標準出力がリダイレクトされます。my_xrf_data.txtの内容が解析され、GUIウィンドウにスペクトルとして表示されます。その他の動作は上記デフォルト実行例と同様です。
3. 特定の入力プラグインを指定してExcelファイルを読み込む (想定)
仮に xlsx_reader.py というプラグインが plugins/filter ディレクトリにあり、Excelファイル (.xlsx) を読み込めるとした場合の例です。
python XRF_fit.py --infile path/to/excel_data.xlsx --input_plugin_name xlsx_reader --input_plugin_dir plugins/filter
実行結果の説明:
path/to/excel_data-out.txtというログファイルが生成されます。指定されたプラグイン
xlsx_readerを使用してexcel_data.xlsxファイルが読み込まれ、GUIウィンドウにデータがプロットされます。プラグインのパス
--input_plugin_dirは、環境変数tkprog_X_pathに依存しない絶対パス、または相対パスで指定することも可能です。
注意: 上記の --input_plugin_dir と --input_plugin_name の例は、tklib のプラグインシステムが想定通りに設定され、対応するプラグインファイルが存在することを前提としています。プラグインが存在しない場合や、ファイル形式とプラグインが一致しない場合はエラーが発生します。