deconvolution プログラム仕様

deconvolution.Gaussian(x, x0, whalf)
概要:

ガウス関数を計算します。

詳細説明:

中心 x0、半値半幅 whalf のガウス関数を返します。

引数:
param x:

評価点。

type x:

float

param x0:

関数の中心。

type x0:

float

param whalf:

半値半幅(HWHM)。

type whalf:

float

戻り値:
returns:

ガウス関数の値。

rtype:

float

deconvolution.Hij(xstep, Wa, Grange, i, j)
概要:

畳み込み行列の要素 Hij を計算します。

詳細説明:

ステップサイズ xstep、半値半幅 Wa、範囲 Grange を用いて、 インデックス i と j に対応する畳み込み関数の値を計算します。

引数:
param xstep:

x軸のステップサイズ。

type xstep:

float

param Wa:

半値半幅(HWHM)。

type Wa:

float

param Grange:

畳み込み関数の範囲を Wa の単位で指定。

type Grange:

float

param i:

行インデックス。

type i:

int

param j:

列インデックス。

type j:

int

戻り値:
returns:

Hij 行列の要素の値。

rtype:

float

deconvolution.Lorentzian(x, x0, whalf)
概要:

ローレンツ関数を計算します。

詳細説明:

中心 x0、半値半幅 whalf のローレンツ関数を返します。

引数:
param x:

評価点。

type x:

float

param x0:

関数の中心。

type x0:

float

param whalf:

半値半幅(HWHM)。

type whalf:

float

戻り値:
returns:

ローレンツ関数の値。

rtype:

float

deconvolution.Ridge(x, y, m, lsqfunc, w, nGmax, alpha=0.0, is_print=False)
概要:

Ridge回帰により係数を計算します。

詳細説明:

最小二乗関数 lsqfunc とエッジ補正重み w を用いて、 観測データ y から係数 ci を推定します。正則化パラメータ alpha を使用します。

引数:
param x:

x軸のデータ点配列。

type x:

numpy.ndarray or list

param y:

観測データ配列。

type y:

numpy.ndarray or list

param m:

係数の数(データ点の数)。

type m:

int

param lsqfunc:

最小二乗法で使用する関数。2つの引数 (x1, x2) を取ります。

type lsqfunc:

callable

param w:

エッジ補正重み配列。

type w:

list

param nGmax:

畳み込み関数の最大インデックス範囲。

type nGmax:

int

param alpha:

正則化パラメータ(リッジパラメータ)。デフォルトは0.0。

type alpha:

float

param is_print:

中間結果を出力するかどうかのフラグ。デフォルトはFalse。

type is_print:

bool

戻り値:
returns:

推定された係数のリスト。

rtype:

list

deconvolution.SmoothingByPolynomialFit(y, n)
概要:

多項式フィッティング(Savitzky-Golay風)でデータを平滑化します。

詳細説明:

各データ点について、幅 n の範囲内で多項式フィッティングを行い、 その中心点の値で置き換えることでデータを平滑化します。 Savitzky-Golayフィルターに似た重み付けが使用されます。

引数:
param y:

平滑化するデータ配列。

type y:

list

param n:

平滑化の窓幅。

type n:

int

戻り値:
returns:

平滑化されたデータ配列。

rtype:

list

deconvolution.SmoothingBySimpleAverage(y, n)
概要:

移動平均でデータを平滑化します。

詳細説明:

各データ点について、幅 n の範囲内の平均値で置き換えることでデータを平滑化します。 データ端では利用可能な点のみを使用します。

引数:
param y:

平滑化するデータ配列。

type y:

list

param n:

移動平均の窓幅。

type n:

int

戻り値:
returns:

平滑化されたデータ配列。

rtype:

list

deconvolution.Smoothing_Penalty_Regression(x, y, m, lsqfunc, w, nGmax, alpha=0.0, nsmooth=1, is_print=False)
概要:

Smoothing Penalty回帰により係数を計算します。

詳細説明:

最小二乗関数 lsqfunc とエッジ補正重み w を用いて、 観測データ y から係数 ci を推定します。正則化パラメータ alpha と平滑化幅 nsmooth を使用します。

引数:
param x:

x軸のデータ点配列。

type x:

numpy.ndarray or list

param y:

観測データ配列。

type y:

numpy.ndarray or list

param m:

係数の数(データ点の数)。

type m:

int

param lsqfunc:

最小二乗法で使用する関数。2つの引数 (x1, x2) を取ります。

type lsqfunc:

callable

param w:

エッジ補正重み配列。

type w:

list

param nGmax:

畳み込み関数の最大インデックス範囲。

type nGmax:

int

param alpha:

正則化パラメータ(ペナルティパラメータ)。デフォルトは0.0。

type alpha:

float

param nsmooth:

平滑化の幅。デフォルトは1。

type nsmooth:

int

param is_print:

中間結果を出力するかどうかのフラグ。デフォルトはFalse。

type is_print:

bool

戻り値:
returns:

推定された係数のリスト。

rtype:

list

deconvolution.apply_args_to_globals(args)
概要:

解析されたコマンドライン引数をグローバル変数に適用します。

詳細説明:

argsオブジェクトから取得した値で、スクリプト全体の動作を制御するグローバル変数を更新します。

引数:
param args:

コマンドライン引数を格納したNamespaceオブジェクト。

type args:

argparse.Namespace

deconvolution.build_arg_parser()
概要:

コマンドライン引数パーサーを構築します。

詳細説明:

1次元スペクトルデータをガウス関数またはローレンツ関数型の装置関数で 逆畳み込みするための引数パーサーを作成します。

戻り値:
returns:

設定済みのArgument Parserオブジェクト。

rtype:

argparse.ArgumentParser

deconvolution.convolve(xraw, yraw, ywf, **kwargs)
概要:

データを畳み込みます。

詳細説明:

numpy.convolve を使用して生データ yraw をウィンドウ関数 ywf で畳み込みます。 畳み込み関数の和で結果を正規化し、必要に応じてx軸を拡張します。

引数:
param xraw:

生データのx軸配列。

type xraw:

numpy.ndarray or list

param yraw:

生データのy軸配列。

type yraw:

numpy.ndarray or list

param ywf:

ウィンドウ関数(フィルター関数)のy値配列。

type ywf:

numpy.ndarray or list

param kwargs:

numpy.convolve に渡される追加のキーワード引数。

type kwargs:

dict

戻り値:
returns:

畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (numpy.ndarray, numpy.ndarray)

deconvolution.convolve_func(x, x0, whalf=None)
概要:

設定された関数タイプに基づいて畳み込み関数を計算します。

詳細説明:

func_type グローバル変数に応じてガウス関数またはローレンツ関数を呼び出します。 whalf が指定されない場合は、グローバル変数 Wa が使用されます。

引数:
param x:

評価点。

type x:

float

param x0:

関数の中心。

type x0:

float

param whalf:

半値半幅(HWHM)。指定されない場合はグローバルなWaが使用されます。

type whalf:

float or None

戻り値:
returns:

畳み込み関数の値。

rtype:

float

deconvolution.deconvolute_deconvolve(xRaw, yRaw, xG, yG)
概要:

scipy.signal.deconvolve を用いて逆畳み込みを実行します。

詳細説明:

scipy.signal.deconvolve を直接使用して、観測データ yRaw からウィンドウ関数 yG を逆畳み込みします。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

list

param yRaw:

生データのy軸配列。

type yRaw:

list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

戻り値:
returns:

逆畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (list, numpy.ndarray)

deconvolution.deconvolute_fft(xRaw, yRaw, xG, yG)
概要:

FFT(高速フーリエ変換)を用いて逆畳み込みを実行します。

詳細説明:

生データとウィンドウ関数をFFTし、周波数領域で除算を行うことで逆畳み込みを実行します。 データ長は2のべき乗に調整されます。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

list

param yRaw:

生データのy軸配列。

type yRaw:

list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

戻り値:
returns:

逆畳み込み後のx軸配列、y軸配列、FFT処理された生データのx軸配列、y軸配列、FFT処理されたウィンドウ関数のx軸配列、y軸配列のタプル。

rtype:

tuple of (list, list, list, list, list, list)

deconvolution.deconvolute_gauss_seidel(xRaw, yRaw, xG, yG, fig, ax)
概要:

Gauss-Seidel法を用いて逆畳み込みを実行します。

詳細説明:

反復計算により、畳み込み方程式をGauss-Seidel法で解き、データを逆畳み込みします。 途中で平滑化や負値クリッピングを行い、グラフをリアルタイムで更新します。 収束条件または最大反復回数に達するまで処理を続行します。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

list

param yRaw:

生データのy軸配列。

type yRaw:

list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

param fig:

MatplotlibのFigureオブジェクト。

type fig:

matplotlib.pyplot.Figure

param ax:

Matplotlibの軸オブジェクトのリスト。最初の要素が使用されます。

type ax:

list of matplotlib.axes.Axes

戻り値:
returns:

逆畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (list, list)

deconvolution.deconvolute_jacobi(xRaw, yRaw, xG, yG, fig, ax)
概要:

Jacobi法を用いて逆畳み込みを実行します。

詳細説明:

反復計算により、畳み込み方程式をJacobi法で解き、データを逆畳み込みします。 途中で平滑化や負値クリッピングを行い、グラフをリアルタイムで更新します。 収束条件または最大反復回数に達するまで処理を続行します。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

list

param yRaw:

生データのy軸配列。

type yRaw:

list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

param fig:

MatplotlibのFigureオブジェクト。

type fig:

matplotlib.pyplot.Figure

param ax:

Matplotlibの軸オブジェクトのリスト。最初の要素が使用されます。

type ax:

list of matplotlib.axes.Axes

戻り値:
returns:

逆畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (list, list)

deconvolution.deconvolute_nnls(xRaw, yRaw, xG, yG)
概要:

非負最小二乗法(NNLS)を用いて逆畳み込みを実行します。

詳細説明:

観測データ yRaw と装置関数の基底 K を用いて、係数が非負であるという制約の下で 最小二乗問題を解きます。任意でRidgeまたはSmoothな正則化を適用できます。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

numpy.ndarray or list

param yRaw:

生データのy軸配列。

type yRaw:

numpy.ndarray or list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

戻り値:
returns:

逆畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (numpy.ndarray, list)

deconvolution.deconvolute_ridge(xRaw, yRaw, xG, yG)
概要:

Ridge回帰を用いて逆畳み込みを実行します。

詳細説明:

観測データ yRaw からRidge回帰により逆畳み込み係数を推定します。 エッジ補正重みと正則化パラメータ alpha を使用します。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

list

param yRaw:

生データのy軸配列。

type yRaw:

list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

戻り値:
returns:

畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (list, list)

deconvolution.deconvolute_sp(xRaw, yRaw, xG, yG, nsmooth)
概要:

Smoothing Penalty法を用いて逆畳み込みを実行します。

詳細説明:

観測データ yRaw からSmoothing Penalty回帰により逆畳み込み係数を推定します。 エッジ補正重み、正則化パラメータ alpha、および平滑化幅 nsmooth を使用します。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

list

param yRaw:

生データのy軸配列。

type yRaw:

list

param xG:

ウィンドウ関数のx軸配列。

type xG:

list

param yG:

ウィンドウ関数のy軸配列。

type yG:

list

param nsmooth:

平滑化の幅。

type nsmooth:

int

戻り値:
returns:

逆畳み込み後のx軸配列とy軸配列のタプル。

rtype:

tuple of (list, list)

deconvolution.edge_weight_at(w, n, nGmax, j, w_floor=1e-06)
概要:

係数インデックス j に対する対称的なエッジ補正重みを返します。

詳細説明:

与えられた重みリスト w とインデックス j に基づいて、対称的なエッジ補正重みを計算します。

引数:
param w:

エッジ補正重み配列。

type w:

list

param n:

データ点の総数。

type n:

int

param nGmax:

畳み込み関数の最大インデックス範囲。

type nGmax:

int

param j:

係数のインデックス。

type j:

int

param w_floor:

重みの最小値。これより小さくならないようにクリップされます。デフォルトは1.0e-6。

type w_floor:

float

戻り値:
returns:

係数インデックス j におけるエッジ補正重み。

rtype:

float

deconvolution.extend_smooth(x, y, nzero, nlin, xstep=0.0)
概要:

データの端をゼロ埋めと線形補間で拡張・平滑化します。

詳細説明:

データ y の先頭に nzero 個のゼロを追加し、最初の nlin 点を線形に整形して 滑らかな接続を実現します。xstepは内部で計算されます。

引数:
param x:

元のx軸配列。

type x:

numpy.ndarray or list

param y:

元のy軸配列。

type y:

numpy.ndarray or list

param nzero:

データ先頭に追加するゼロの数。

type nzero:

int

param nlin:

線形整形を適用するデータ点の数。

type nlin:

int

param xstep:

x軸のステップサイズ。デフォルトは0.0ですが、xから計算されます。

type xstep:

float

戻り値:
returns:

拡張・平滑化されたx軸配列とy軸配列のタプル。

rtype:

tuple of (numpy.ndarray, numpy.ndarray)

deconvolution.main()
概要:

メイン処理を実行します。

詳細説明:

コマンドライン引数を解析し、入力データを読み込み、 選択されたモードに基づいて逆畳み込み処理を実行します。 結果はプロットされ、Excelファイルに保存されます。

deconvolution.make_basis_matrix(xRaw, whalf, w=None, nGmax=None)
概要:

装置関数の稠密な基底行列を構築します。

詳細説明:

K[i, j] は係数 j を観測点 i にマッピングします。 エッジ重みが提供された場合、各基底列は同じ補正で使用されます。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

numpy.ndarray or list

param whalf:

半値半幅(HWHM)。

type whalf:

float

param w:

エッジ補正重み配列。デフォルトはNone。

type w:

list or None

param nGmax:

畳み込み関数の最大インデックス範囲。デフォルトはNone。

type nGmax:

int or None

戻り値:
returns:

装置関数の基底行列。

rtype:

numpy.ndarray

deconvolution.make_edge_correction_weights(xRaw, whalf, nGmax, w_floor=1e-06)
概要:

Ridge回帰のような手法で使用されるエッジ補正重みを作成します。

詳細説明:

データ範囲の端で係数が不自然に大きくなるのを防ぐための重みリストを生成します。 重みは畳み込み関数の累積和に基づいて計算されます。

引数:
param xRaw:

生データのx軸配列。

type xRaw:

numpy.ndarray

param whalf:

半値半幅(HWHM)。

type whalf:

float

param nGmax:

畳み込み関数の最大インデックス範囲。

type nGmax:

int

param w_floor:

重みの最小値。これより小さくならないようにクリップされます。デフォルトは1.0e-6。

type w_floor:

float

戻り値:
returns:

エッジ補正重みのリスト。

rtype:

list

deconvolution.make_first_difference_matrix(n)
概要:

平滑化ペナルティのための1階差分行列 D を返します。

詳細説明:

D @ c は [c[1]-c[0], c[2]-c[1], ...] のようなベクトルを生成します。 このベクトルにペナルティを課すことで、係数の急激な振動を抑制します。

引数:
param n:

係数の数。

type n:

int

戻り値:
returns:

1階差分行列。

rtype:

numpy.ndarray

deconvolution.make_wf(Wa, Grange, xstep)
概要:

サンプリングされたウィンドウ関数(フィルター関数)を作成します。

詳細説明:

半値半幅 Wa と範囲 Grange を用いて、xstep 間隔でサンプリングされた ウィンドウ関数 yG を生成し、その積算値 SG で正規化します。 x軸が降順であっても、ウィンドウ関数が空にならないように xstep の絶対値が使用されます。

引数:
param Wa:

半値半幅(HWHM)。

type Wa:

float

param Grange:

畳み込み関数の範囲を Wa の単位で指定。

type Grange:

float

param xstep:

x軸のステップサイズ。

type xstep:

float

戻り値:
returns:

x軸のサンプリング点リストと、正規化されたウィンドウ関数値リストのタプル。

rtype:

tuple of (list, list)

例外:
raises ValueError:

xstepが非ゼロでない場合、または正規化積算値SGがゼロ以下の場合。

deconvolution.parse_label(value)
概要:

データ列セレクタを解析します。

詳細説明:

整数インデックスまたはラベル文字列として解析します。

引数:
param value:

解析する値。整数または文字列。

type value:

int or str

戻り値:
returns:

解析された列インデックス(整数)またはラベル(文字列)。

rtype:

int or str

deconvolution.parse_xlimit(value)
概要:

x軸の範囲制限を解析します。

詳細説明:

'*'または'none'は無制限を示し、数値文字列は浮動小数点数に変換されます。 これは、xmin/xmaxがオープンに設定できる以前の動作を維持します。

引数:
param value:

解析する値。数値、文字列、またはNone。

type value:

any

戻り値:
returns:

解析されたx軸の制限値、またはNone。

rtype:

float or None

deconvolution.plot_input_data(xRaw, yRaw, label_x='', label_y='')
概要:

選択された入力データのみをプロットします。

詳細説明:

逆畳み込みを実行せず、指定された入力データをグラフに表示するだけのモードです。 逆畳み込みの結果はExcelファイルに出力されません。

引数:
param xRaw:

入力データのx軸配列。

type xRaw:

list

param yRaw:

入力データのy軸配列。

type yRaw:

list

param label_x:

x軸のラベル文字列。

type label_x:

str

param label_y:

y軸のラベル文字列。

type label_y:

str

deconvolution.usage(app=None)
概要:

スクリプトの使用方法を表示します。

詳細説明:

build_arg_parser() によって生成されたヘルプメッセージを出力します。

引数:
param app:

Tkinterアプリケーションオブジェクト。現在は使用されません。

type app:

tkApplication or None