tkxrd.py ライブラリ技術ドキュメント

ライブラリの機能や目的

tkxrd.py ライブラリは、結晶学およびX線回折 (XRD) データ処理に関連する基本的な定数、ユーティリティ、およびオブジェクトモデルを提供するPythonモジュールです。

  • 目的: このライブラリは、結晶構造解析、特にX線回折のシミュレーションや解析を行うアプリケーションの基盤となることを意図しています。一般的な物理定数、数学関数、そして結晶構造を記述するためのデータ構造を集約しています。

  • 主な機能:

    • 一般的なX線源とその特性波長をマッピングした Xray_wavelengths 辞書を提供します。

    • numpy および tklib の科学計算モジュールから、度数/ラジアン変換に最適化された多くの数学関数を内部的に利用します。

    • tklib フレームワークの一部として、プログラム変数管理、ファイル操作、INIファイル解析、および結晶学に特化した科学計算をサポートします。

    • tkCrystalObject (結晶構造データ) や tkSpaceGroup (空間群情報) などのクラス定義を内部的に利用し、構造解析におけるデータ表現の基礎を提供します。

  • 解決する課題: 結晶学的な計算に必要な定数や補助関数を一元化することで、開発者がこれらの要素を繰り返し実装する手間を省きます。また、一般的なX線源データへの標準的なアクセスを提供します。

importする方法

tkxrd.py ライブラリは、Pythonの標準的な import 文を使用して、他のPythonプログラムからインポートできます。

例:

import tkxrd

# X線波長データを参照する
cu_ka_wavelength = tkxrd.Xray_wavelengths["CuKa"]
print(f"CuKaの波長: {cu_ka_wavelength} Å")

特定の変数のみをインポートする場合:

from tkxrd import Xray_wavelengths

# X線波長データを直接参照する
mo_ka_wavelength = Xray_wavelengths["MoKa"]
print(f"MoKaの波長: {mo_ka_wavelength} Å")

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

tkxrd.py が動作するために直接的または間接的に必要な非標準ライブラリは以下の通りです。

  1. NumPy: 高性能な数値計算を可能にするPythonライブラリです。tkxrd.py は、このライブラリから多くの数学関数や定数を内部的に利用しています。

    • インストール方法:

      pip install numpy
      
  2. tklib (カスタムライブラリ): tkxrd.py は、tklib パッケージ内の複数のモジュール(例: tklib.tkobject, tklib.tkcrystal.tkcrystalobject, tklib.tksci.tksci など)に深く依存しています。このパッケージは、恐らくこのプロジェクト固有のカスタムライブラリであり、標準の pip で直接インストールできるものではない可能性があります。

    • このドキュメントでは tklib 自体の具体的なインストール方法は提供できませんが、通常は以下のいずれかの方法で利用可能になると考えられます。

      • tkxrd.py と同じプロジェクトリポジトリ内に含まれている。

      • プロジェクトの requirements.txt に記載され、pip install -r requirements.txt でインストールされる。

      • 開発者が手動でPythonのサイトパッケージディレクトリにコピーするか、PYTHONPATH 環境変数に追加する。

importできる変数と関数

tkxrd.py をインポートすることで、以下の変数が直接利用可能になります。

変数

  • Xray_wavelengths (dict):

    • 様々なX線源とその特性X線波長(単位: オングストローム Å)をマッピングした辞書です。

    • キーはX線源の名前(例: "CuKa", "MoKa1")、値は対応する波長です。

    • 例:tkxrd.Xray_wavelengths["CuKa"]\(1.54184\) を返します。

関数とクラス

tkxrd.py は、それ自身で直接関数やクラスを定義していません。代わりに、numpytklib パッケージから多数の関数やクラスを自身のモジュールスコープにインポートし、内部的に利用しています。

これらのインポートされた関数やクラスは、tkxrd モジュールをインポートした際に、tkxrd.<関数名>tkxrd.<クラス名> の形式で直接外部から呼び出すことはできません。これらは tkxrd.py が内部処理で使用するためのものです。

もしこれらの関数やクラスをプログラムで利用したい場合は、tkxrd.py を介するのではなく、それらが定義されている元のモジュール(例: numpytklib.tksci.tkscitklib.tkcrystal.tkcrystalobject など)から直接インポートする必要があります。

以下に、tkxrd.py が内部で利用している主な関数やクラスのタイプを参考として示します。

NumPy から内部利用される主な数学関数・定数: sin, cos, tan, arccos, arcsin, arctan, sqrt, exp, log, pi

tklib.tksci.tksci から内部利用される主な科学計算関数・定数:

  • a0: ボーア半径 (\(0.529177210903\) Å)。

  • NA: アボガドロ定数 (\(6.02214076 \times 10^{23} \text{ mol}^{-1}\))。

  • torad(degree): 度数からラジアンに変換します。

  • todeg(radian): ラジアンから度数に変換します。

  • Round(value, num_digits): 数値を指定された桁数に丸めます。

  • Factorize(n): 整数 n を素因数分解します。

  • IsFactor(n, factor): factorn の因数であるか判定します。

  • degcos(degree): 度数単位の角度のコサインを計算します。

  • degsin(degree): 度数単位の角度のサインを計算します。

  • degtan(degree): 度数単位の角度のタンジェントを計算します。

  • acos(x), asin(x), atan(x): ラジアン単位で逆三角関数を計算します。

  • degacos(x), degasin(x), degatan(x): 度数単位で逆三角関数を計算します。

tklib.tkutils から内部利用される主なユーティリティ関数:

  • SplitFilePath(path): ファイルパスをディレクトリパス、ファイル名、拡張子に分割します。

  • GetList(text): 文字列からリストを抽出します。

tklib.tkre から内部利用される主な正規表現関連関数:

  • DelQuote(text): 文字列から引用符(シングルクォート、ダブルクォート)を削除します。

  • DelSpace(text): 文字列から空白文字を削除します。

tklib パッケージから内部利用される主なクラス:

  • tkObject: tklibにおける基底オブジェクト。

  • tkCrystalObject: 結晶構造データを扱うためのオブジェクト。

  • tkSpaceGroup: 空間群に関する情報(対称操作など)を扱うためのオブジェクト。

  • tkFile: ファイル操作を抽象化するためのオブジェクト。

  • tkIniFile: INI形式の設定ファイルを読み書きするためのオブジェクト。

tklib.tkprogvars から内部利用される主なプログラム変数:

  • ProgramDir: プログラムのルートディレクトリパス。

  • DBDir: データベースファイルのディレクトリパス。

  • AtomDBDir: 原子データベースファイルのディレクトリパス。

  • RietanDir: Rietan関連ファイルのディレクトリパス。

main scriptとして実行したときの動作

提供された tkxrd.py のソースコードには、if __name__ == "__main__": ブロックが存在しないため、このスクリプトを直接実行(例: python tkxrd.py)しても、特別な処理は実行されません。

このファイルは、ライブラリとして他のプログラムからインポートされることを主な目的として設計されており、単体で実行されるアプリケーションではありません。通常、ライブラリファイルが直接実行された際に何らかの動作をさせる場合は、テストコードの実行、設定の初期化、または簡単なデモンストレーション機能などが if __name__ == "__main__": ブロック内に記述されますが、tkxrd.py にはそのような記述はありません。