XRF.peaksearch のソースコード

"""
ピーク検出とデータ平滑化を行うモジュール。

このモジュールは、入力データに対してSavitzky-Golayフィルタによる平滑化と微分計算を行い、
指定された閾値と条件に基づいてピークを自動的に検出します。
検出されたピークは、元のデータや処理された微分データとともにグラフにプロットされます。

関連リンク: :doc:`peaksearch_usage`
"""
import sys
import numpy as np
from numpy import exp
import pandas as pd
import scipy.signal
import matplotlib.pyplot as plt
import matplotlib.widgets as wg


from tklib.tkutils import replace_path, getarg, getintarg, getfloatarg, pint, pfloat
from tklib.tkparams import tkParams
from tklib.tkvariousdata import tkVariousData
from tklib.tkapplication import tkApplication


#=============================
# parameters
#=============================
[ドキュメント] def usage(app): """ コマンドライン引数の使用方法を表示します。 スクリプトの実行方法を標準出力に表示します。 :param app: `tkApplication`のインスタンス。 :type app: tklib.tkapplication.tkApplication :returns: なし。 :rtype: None """ print("usage: python {} args".format(sys.argv[0]))
[ドキュメント] def initialize(app): """ アプリケーションのパラメータを初期化します。 `tkParams`オブジェクトを作成し、デフォルトのファイル名、X/Y軸の範囲、ラベル、 Savitzky-Golayフィルタのパラメータ、閾値、プロットサイズなどを設定します。 :param app: `tkApplication`のインスタンス。 :type app: tklib.tkapplication.tkApplication :returns: なし。 :rtype: None """ app.cparams = tkParams() cparams = app.cparams cparams.mode = 'peak search' cparams.infile = 'xrd-narrow.xlsx' cparams.xmin = -1e100 cparams.xmax = 1e100 cparams.xlabel = '0' cparams.ylabel = '1' cparams.threshold = 100.0 cparams.ydiff1_threshold = 1.0e-2 cparams.norder = 4 cparams.nsmooth = 11 cparams.figsize = [12, 8] cparams.figsize_test = [12, 8] cparams.fontsize = 16 cparams.legend_fontsize = 14 cparams.fontsize_test = 12 cparams.legend_fontsize_test = 12
[ドキュメント] def update_vars(app): """ コマンドライン引数からアプリケーションパラメータを更新します。 `sys.argv`から指定されたインデックスの引数を読み込み、`tkParams`オブジェクトの 対応する属性を更新します。これにより、デフォルト設定を上書きすることが可能です。 :param app: `tkApplication`のインスタンス。 :type app: tklib.tkapplication.tkApplication :returns: なし。 :rtype: None """ cparams = app.cparams cparams.mode = getarg (1, cparams.mode) cparams.infile = getarg (2, cparams.infile) cparams.xmin = getfloatarg(3, cparams.xmin) cparams.xmax = getfloatarg(4, cparams.xmax) cparams.xlabel = getarg (5, cparams.xlabel) cparams.ylabel = getarg (6, cparams.ylabel) cparams.threshold = getfloatarg(7, cparams.threshold) cparams.ydiff1_threshold = getfloatarg( 8, cparams.ydiff1_threshold) cparams.norder = getintarg ( 9, cparams.norder) cparams.nsmooth = getintarg (10, cparams.nsmooth)
[ドキュメント] def main(app): """ アプリケーションの主要な実行フローを制御します。 `exec_peak_search`関数を呼び出し、ピーク検出と結果のプロットを実行します。 :param app: `tkApplication`のインスタンス。 :type app: tklib.tkapplication.tkapplication :returns: なし。 :rtype: None """ cparams = app.cparams exec_peak_search(app)
if __name__ == '__main__': app = tkApplication() print(f"Initialize parameters") initialize(app) print(f"Update parameters by command-line arguments") update_vars(app) main(app)