BESearch.py プログラムドキュメント

プログラムの動作

BESearch.py は、X線光電子分光法(XPS)で得られた結合エネルギーデータに基づき、測定されたエネルギー値に対応する可能性のある元素と電子準位を検索するためのPythonプログラムです。プログラムの冒頭にある3重引用符で囲まれた文字列(docstring)は、このプログラムが「光電子分光法のための可能な元素と準位を検索する」ことを説明しています。

主な機能:

  • データ読み込み: 既知の元素と電子準位の結合エネルギー値が記述されたCSVファイル(XPS-BE-Source.csv)を読み込みます。

  • ユーザー入力: ユーザーに対して、検索したい結合エネルギー値(\(T\))とその許容誤差(\(E\))を標準入力からプロンプト表示します。デフォルト値も設定されています。

  • 範囲検索: 入力された結合エネルギー値の許容誤差範囲内にあるすべての元素、電子準位、および対応する結合エネルギー値をデータベースから検索します。

  • 結果表示: 検索結果を整形された形式で標準出力に表示します。

解決する課題: XPSスペクトルから得られたピークの結合エネルギー値が、どの元素のどの電子準位に由来するかを迅速に同定する作業を支援します。特に、複数の元素や準位が近い結合エネルギーを持つ場合に、候補を絞り込むのに役立ちます。

原理

このプログラムは、指定された結合エネルギー値とその許容誤差に基づいて、事前に用意されたデータベースから合致する元素と電子準位を検索します。

アルゴリズム:

  1. データベースの構築:

    • ReadCSV 関数が XPS-BE-Source.csv ファイルを読み込みます。

    • ファイル内の各データ行から、元素記号、元素名、電子準位(例: 1s, 2p1/2, 3d5/2 など)、およびその結合エネルギー値を抽出します。

    • これらのデータは、キーが「元素記号 元素名 準位」という文字列、値が結合エネルギー値(浮動小数点数)である辞書としてメモリに格納されます。

  2. 検索条件の取得:

    • main 関数内で、ユーザーは検索したい結合エネルギー値 (\(T\)) と許容誤差 (\(E\)) を標準入力から入力します。入力がない場合は、それぞれデフォルト値(510 eV、10 eV)が使用されます。

    • pfloat 関数を使用して、入力された文字列を安全に浮動小数点数に変換します。

  3. データ検索:

    • Search 関数が呼び出され、構築されたデータベース、検索ターゲットの結合エネルギー値 \(T\)、および許容誤差 \(E\) を引数として受け取ります。

    • データベース内のすべての結合エネルギー値 (\(V\)) について、以下の条件を満たすかどうかを判定します。

      \[T - E \le V \le T + E\]
  4. 結果の出力:

    • 上記の条件を満たす \(V\) が見つかった場合、対応する元素記号、元素名、電子準位、およびその結合エネルギー値が整形された形式で標準出力に表示されます。

数式・物理式:

プログラムは物理的な結合エネルギー値を計算するものではなく、既知のデータベースに基づいて値を検索するものです。したがって、直接的な物理式は使用されません。検索のロジックは単純な範囲比較に基づいています。

検索ターゲットの結合エネルギーを \(T\)、許容誤差を \(E\)、データベース内の結合エネルギー値を \(V\) とすると、検索条件は以下の不等式で表されます。

\[T - E \le V \le T + E\]

この条件を満たすデータが、検索結果として表示されます。

必要な非標準ライブラリとインストール方法

BESearch.py は、以下の非標準ライブラリを import していますが、現在のプログラムの機能で必須となるのは re のみです。numpy, scipy, matplotlib はプログラム中で実際に使用されていませんが、将来的な機能拡張のために残されている可能性があります。また、csv モジュールも import されていますが、ファイル解析には line.split(',') が直接使用されており、csv モジュールの機能は使われていません。

実際に import されている非標準ライブラリ:

  • numpy

  • scipy (具体的には scipy.interpolate.interp1d)

  • matplotlib (具体的には matplotlib.pyplot, mpl_toolkits.mplot3d.axes3d, matplotlib.cm)

  • re (正規表現を扱うために使用されています)

インストール方法:

これらのライブラリは、Pythonのパッケージマネージャーである pip を使用してインストールできます。以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。

pip install numpy scipy matplotlib

re ライブラリはPythonの標準ライブラリであるため、別途インストールする必要はありません。

必要な入力ファイル

  • ファイル名: XPS-BE-Source.csv

  • 形式: CSV (Comma Separated Values) 形式のテキストファイル。

  • データ構造:

    • ヘッダー行: 少なくとも3列目以降に電子準位を示す文字列(例: 1s, 2s, 2p1/2, 2p3/2, 3d5/2 など)が含まれることが期待されます。プログラムは、spd の文字を含む行を準位のヘッダー行と認識し、各準位名を抽出します。

    • データ行: 各行は以下の構造を持つ必要があります。

      1. 元素記号 (例: C, O, Si)

      2. 元素名 (例: Carbon, Oxygen, Silicon)

      3. 結合エネルギー値: 3列目以降は、各電子準位に対応する結合エネルギー値(数値、単位はeV)が記述されます。対応する値がない場合は空欄でも構いません。

    ファイル内容の例:

    ,,,1s,2s,2p1/2,2p3/2,3s,3p1/2,3p3/2,3d3/2,3d5/2
    C,Carbon,,284.2,40.1,23.0,,,,,,
    O,Oxygen,,532.0,30.0,17.0,,,,,,
    Si,Silicon,,1839.0,151.0,103.5,99.4,19.2,12.7,12.7,,,
    
  • 配置:

    • BESearch.py と同じディレクトリに XPS-BE-Source.csv を配置してください。

    • または、プログラムが実行されるカレントディレクトリに配置してください。プログラムはまずカレントディレクトリを検索し、見つからなければプログラム自身のディレクトリを検索します。

生成される出力ファイル

BESearch.py は、検索結果をファイルとして保存する機能は持っていません。 すべての結果は、プログラム実行中に**標準出力(コンソール)**に直接表示されます。

コマンドラインでの使用例 (Usage)

BESearch.py はコマンドライン引数を直接解析するようには設計されていません。検索する結合エネルギー値と許容誤差は、プログラムの実行中に標準入力から対話形式で入力します。

基本的な実行コマンド:

python BESearch.py

コマンドラインでの具体的な使用例

以下の例では、プログラムを実行し、ユーザーが検索値と誤差を入力する具体的な流れとその出力について説明します。

実行コマンド:

python BESearch.py

ユーザーとの対話と想定される出力:

====================================
  Search possible elements and peaks from binding energy and possible range
====================================

Input search value (Def: 510 eV): 532.5  <-- ユーザーが「532.5」と入力
Input error value (Def: 10 eV): 2.0    <-- ユーザーが「2.0」と入力
Read [XPS-BE-Source.csv] =====================================
  C Carbon 1s 284.2
  C Carbon 2s 40.1
  C Carbon 2p1/2 23.0
  O Oxygen 1s 532.0
  O Oxygen 2s 30.0
  O Oxygen 2p1/2 17.0
  Si Silicon 1s 1839.0
  Si Silicon 2s 151.0
  Si Silicon 2p1/2 103.5
  Si Silicon 2p3/2 99.4
  Si Silicon 3s 19.2
  Si Silicon 3p1/2 12.7
  Si Silicon 3p3/2 12.7
  ... (XPS-BE-Source.csv の内容に応じて続くデータ読み込み表示)
File read end=====

=====================================
Hit for 530.5 - 532.5 - 534.5 eV ...
  O  Oxygen    1s      532.00 eV
  (他に検索範囲内のデータがあれば、同様の形式で表示されます)

実行結果の説明:

  1. プログラムを起動すると、まずタイトルと説明文が表示されます。

  2. Input search value (Def: 510 eV): というプロンプトに対して、ユーザーは検索したい結合エネルギー値(この例では 532.5 eV)を入力します。ここで何も入力せずにEnterキーを押すと、デフォルト値の 510.0 eVが使用されます。

  3. 次に Input error value (Def: 10 eV): というプロンプトに対して、許容誤差(この例では 2.0 eV)を入力します。何も入力せずにEnterキーを押すと、デフォルト値の 10.0 eVが使用されます。

  4. 入力後、プログラムは指定された XPS-BE-Source.csv ファイルの読み込みを開始します。ファイルからデータを読み込む際、各エントリ(元素記号、元素名、準位、結合エネルギー値)がコンソールに順次表示されます。

  5. ファイル読み込みが完了すると、検索が開始されます。Hit for 530.5 - 532.5 - 534.5 eV ... というメッセージは、検索対象の結合エネルギーが 532.5 eVで、許容誤差が 2.0 eVであるため、530.5 eVから 534.5 eVの範囲で検索が行われることを示しています。

  6. この検索範囲内に合致するデータが見つかった場合、その元素記号、元素名、電子準位、および実際の結合エネルギー値が、整形された形式で出力されます(例: O Oxygen 1s 532.00 eV)。

  7. すべての検索が完了すると、プログラムは終了します。