tftanalyze プログラム仕様

概要:

TFT n-チャネルトランジスタの電気特性を解析するツールです。

詳細説明:

このスクリプトは、TFT (Thin-Film Transistor) のn-チャネルデバイスにおける I-V特性(伝達特性 (ID-VG) および出力特性 (ID-VD))データを読み込み、 解析し、結果をExcelレポートとPNGプロットとして出力します。 コマンドラインからの使用例は以下の通りです。 python tftanalyze.py --mode all --infile_vg transfer.csv --infile_vd output.csv

主な機能:

CSV形式の測定データを自動的にエンコーディングを検出して読み込みます。 伝達特性データから閾値電圧 (Vth)、移動度 (Mobility)、サブスレッショルドスイング (S) などの 主要なデバイスパラメータを抽出します。 出力特性データから線形領域のコンダクタンス (gd) や移動度 (mu_lin, mu_eff) を評価します。 サビツキー・ゴレイフィルターを用いたデータの平滑化をサポートします。 解析結果をインタラクティブなグラフ表示とPNGファイルとして保存します。 全ての解析結果と生データ、平滑化データをExcelファイルに集約して出力します。

関連リンク:

tftanalyze_usage

class tft.tftanalyze.Tee(*streams)

ベースクラス: object

stdout/stderr をコンソールとログファイルへ同時出力する簡単な Tee。

詳細説明:

このクラスは、複数のファイルライクオブジェクトに書き込み操作をミラーリングするために使用されます。 例えば、標準出力への書き込みと同時にログファイルへの書き込みを行う場合に便利です。

引数:
param streams:

データを書き込む対象となる一つ以上のファイルライクオブジェクト。

type streams:

file-like objects

flush()
write(data)
tft.tftanalyze.add_read_columns_grouped(df, xcol, groupcol, args)

データフレームに電流のクリッピングと平滑化された電流の列を追加します。

詳細説明:

この関数は、読み込み/プレビューモードのために、各グループ(またはデータ全体)に対して、 以下の列を追加します: ID_abs_floor: IDの絶対値を args.Imin でクリッピングした値。 ID_smooth_linear: 線形スケールで平滑化されたID。 logID_smooth: 対数スケールで平滑化された log10(abs(ID))。 ID_smooth_log: logID_smooth を元に対数スケールで平滑化されたID。 ID_smooth: args.read_smooth_domain に応じて ID_smooth_linear または ID_smooth_log。 savgol_used_linear, savgol_used_log, savgol_used: Savitzky-Golay平滑化が適用された点を示すブールマスク。

重要な点: 伝達特性 (ID-VG) のプレビューは、デフォルトで log10(abs(ID)) の平滑化後に逆変換します。 出力特性 (ID-VD) のプレビューは、線形電流平滑化と線形Y軸プロットを強制します。 デフォルトでは、端点付近ではSavitzky-Golayフィルターの完全な中心ウィンドウがないため、 平滑化は無効化されます。これにより、VD=0付近の人工的なずれを回避します。

引数:
param df:

処理対象のDataFrame。

type df:

pandas.DataFrame

param xcol:

データのX軸となる列名(例: 'VG', 'VD')。

type xcol:

str

param groupcol:

グループ化に使用する列名(例: 'VD', 'VG')。この列が存在しない場合、データ全体が単一のグループとして扱われます。

type groupcol:

str

param args:

コマンドライン引数を含むオブジェクト。Imin, lsq_order, smooth_npoints, read_keep_edge_raw, read_smooth_domain 属性を使用します。

type args:

argparse.Namespace

戻り値:
returns:

クリップおよび平滑化された電流列が追加されたDataFrame。

rtype:

pandas.DataFrame

tft.tftanalyze.add_sweep_index(df, col, idx_col)

指定された列の掃引方向の変化に基づいて、掃引セグメントのインデックスを追加します。

詳細説明:

データフレームの指定された列 (col) の値の連続的な変化を分析し、 掃引方向が反転するたびに掃引セグメントのインデックスを1つ増やします。 これにより、多方向掃引データ(例: VGの往復掃引)を個別のセグメントに分割できます。 結果のインデックスは新しい列 (idx_col) としてデータフレームに追加されます。

引数:
param df:

処理対象のDataFrame。

type df:

pandas.DataFrame

param col:

掃引方向を検出する基準となる列名(例: 'VG', 'VD')。

type col:

str

param idx_col:

生成される掃引インデックス列の名前。

type idx_col:

str

戻り値:
returns:

掃引セグメントインデックス列が追加されたDataFrame。

rtype:

pandas.DataFrame

tft.tftanalyze.analyze_idvd_logic(df, args, cox)

TFTの出力特性 (ID-VD) を解析し、デバイスの線形領域特性と移動度を評価します。

詳細説明:

入力されたID-VDデータフレームから、以下の解析を実行します: 1. 最大のVD値における伝達特性スライス (df_full) を用いて、参照閾値電圧 (vth_ref) を抽出します。 2. 各VG値におけるID-VD曲線に対して、線形領域(低いVD)での伝達コンダクタンス (gd) を線形回帰で計算します。 3. 低いVDスライスにおけるID-VGデータから、相互コンダクタンス (gm) とS値を計算します。 4. 抽出されたgdとgm、および vth_ref を用いて、実効移動度 (mu_eff) と線形移動度 (mu_lin) を導出します。 5. 各移動度抽出点に対して線形領域条件のチェック (region_check_linear) を行い、警告情報を記録します。 6. 解析結果の概要をコンソールに出力し、出力曲線と移動度プロットを生成します。

引数:
param df:

ID-VDデータを含むDataFrame。VG, VD, ID列が必要です。

type df:

pandas.DataFrame

param args:

コマンドライン引数を含むオブジェクト。 idx_vg, idx_vd, Imin, L, W, region_factor, save_plot, plot_dir 属性を使用します。

type args:

argparse.Namespace

param cox:

単位面積あたりのゲート酸化膜容量 [F/cm^2]。

type cox:

float

戻り値:
returns:

各VGにおける解析結果の辞書リストと、生成されたMatplotlibのFigureオブジェクトのタプル。 有効なデータがない場合は ([], None) を返します。

rtype:

tuple[list[dict], matplotlib.figure.Figure or None]

tft.tftanalyze.analyze_vg_core(df_full, vd_val, args, cox)

特定VDスライスのID-VGから、線形法と飽和法の両方でVth/移動度を抽出します。

詳細説明:

ID-VGデータに基づいて、線形領域(最大相互コンダクタンス gm から)と 飽和領域(最大 d(sqrt(ID))/dVg から)の閾値電圧 (Vth) と移動度を抽出します。 サブスレッショルドスイング (S) やオフ電流 (Ioff) も計算します。 抽出されたポイントの動作領域チェックも行い、推奨される抽出方法を提示します。

引数:
param df_full:

全てのVG-ID測定データを含むDataFrame。

type df_full:

pandas.DataFrame

param vd_val:

解析対象のドレイン電圧 [V]。

type vd_val:

float

param args:

コマンドライン引数を含むオブジェクト。smooth_npoints, lsq_order, Imin, L, W, region_factor, ID_S 属性を使用します。

type args:

argparse.Namespace

param cox:

単位面積あたりのゲート酸化膜容量 [F/cm^2]。

type cox:

float

戻り値:
returns:

特定VDスライスにおける詳細な解析結果を含む辞書。データが不十分な場合はNone。

rtype:

dict or None

tft.tftanalyze.annotate_vline(ax, x, label, ymin=None, ymax=None)

Matplotlibのプロットに垂直線とテキストアノテーションを追加します。

詳細説明:

指定されたX座標 (x) に垂直線 (axvline) を引き、 その線の近くにテキストラベル (label) を回転させて配置します。 Y軸の範囲 (ymin, ymax) が指定されていない場合、現在のプロットのY軸範囲が使用されます。

引数:
param ax:

プロット対象のMatplotlib Axesオブジェクト。

type ax:

matplotlib.axes.Axes

param x:

垂直線を引くX座標。

type x:

float

param label:

垂直線の横に表示するテキストラベル。

type label:

str

param ymin:

垂直線が描画されるY軸の下限。Noneの場合、現在のY軸の下限が使用されます。

type ymin:

float or None

param ymax:

垂直線が描画されるY軸の上限。Noneの場合、現在のY軸の上限が使用されます。

type ymax:

float or None

戻り値:
returns:

なし

rtype:

None

tft.tftanalyze.build_analysis_points(res)

伝達特性解析の主要点をロングフォーマットで返します。

詳細説明:

res 辞書からVth, Smin, mu_max などの主要な解析ポイントを抽出し、 Excelサマリーシートに適したリスト形式で提供します。 各ポイントは、そのVG, ID, 導関数、移動度などの詳細な情報とともに辞書として格納されます。

引数:
param res:

伝達特性解析結果を含む辞書。df (解析対象のDataFrame) および idx_ で始まるキー (各ポイントのインデックス) が必要です。

type res:

dict

戻り値:
returns:

各解析ポイントのデータを格納した辞書のリスト。

rtype:

list[dict]

tft.tftanalyze.calculate_cox(dg_nm, epsg)

ゲート酸化膜容量 (Cox) を計算します。

詳細説明:

ゲート絶縁膜の厚さ (ナノメートル単位) と比誘電率から、 単位面積あたりのゲート酸化膜容量 (F/cm^2) を計算します。 物理定数として真空の誘電率 (EPS0) を使用します。

引数:
param dg_nm:

ゲート絶縁膜の厚さ [nm]。

type dg_nm:

float

param epsg:

ゲート絶縁膜の比誘電率。

type epsg:

float

戻り値:
returns:

単位面積あたりのゲート酸化膜容量 [F/cm^2]。

rtype:

float

tft.tftanalyze.classify_transfer_region(linear_check, saturation_check)

線形/飽和/中間領域の推奨を返します。

詳細説明:

線形領域チェックと飽和領域チェックの結果に基づいて、 現在解析中の動作点が線形、飽和、またはどちらでもない中間領域のどれに属するかを分類します。 分類結果と、それに関連する推奨/警告メッセージを返します。

引数:
param linear_check:

region_check_linear 関数からの結果辞書。

type linear_check:

dict

param saturation_check:

region_check_saturation 関数からの結果辞書。

type saturation_check:

dict

戻り値:
returns:

推奨される領域タイプと、関連する警告/説明メッセージのタプル。

rtype:

tuple[str, str]

tft.tftanalyze.default_excel_name(mode)

指定された解析モードに応じたデフォルトのExcelファイル名を返します。

詳細説明:

異なる解析モード('read', 'analyze_idvg', 'analyze_idvd', 'all')に対して、 それぞれ適切なデフォルトのExcelファイル名を決定します。 指定されたモードが辞書にない場合は、汎用的なレポートファイル名を返します。

引数:
param mode:

解析モードを示す文字列。

type mode:

str

戻り値:
returns:

デフォルトのExcelファイル名。

rtype:

str

tft.tftanalyze.detect_and_load(filepath, reverse_vg=False)

CSVファイルからTFT解析用データを自動検出して読み込みます。

詳細説明:

対応形式: 1. 既存対応の「列ヘッダ行 + 数値データ行」形式 2. Keysight/Agilent 4155系の DataName / DataValue 形式

後者では、DataValueブロックにVDやVGなどのSecondary掃引列が明示されない場合でも、 メタデータから VD または VG を復元して既存解析コードへ渡します。

引数:
param filepath:

読み込むCSVファイルのパス。

type filepath:

str

param reverse_vg:

Trueの場合、VGの符号を反転します。pチャネルデータの前処理を意図しています。

type reverse_vg:

bool

戻り値:
returns:

読み込まれたデータを含むDataFrame。ファイルが見つからないかデータが読み込めない場合はNone。

rtype:

pandas.DataFrame or None

tft.tftanalyze.get_args()

コマンドライン引数をパースします。

詳細説明:

この関数は、TFT解析スクリプトに必要な全てのコマンドライン引数を定義し、 ユーザーが指定した引数をパースして返します。 引数には、入力ファイルパス、解析モード、TFTデバイスの物理的寸法、 誘電体定数、電流の閾値、平滑化パラメータ、プロット表示・保存設定などが含まれます。

戻り値:
returns:

パースされた引数を含む argparse.Namespace オブジェクト。

rtype:

argparse.Namespace

tft.tftanalyze.interpolate_id_at_vd(df_vg, vd_target)

単一のVG出力曲線内で、要求されたVD値におけるIDの絶対値を線形補間します。

詳細説明:

与えられたデータフレーム (df_vg) が特定のVGでのID-VDデータを含んでいると仮定し、 vd_target における abs(ID) の絶対値を線形補間によって推定します。 vd_target が測定範囲外の場合、またはデータが不足している場合は np.nan を返します。 補間はVDとID列をソートした後に行われます。

引数:
param df_vg:

単一のVG値におけるID-VDデータを含むDataFrame。VDとID列が必要です。

type df_vg:

pandas.DataFrame

param vd_target:

補間したい目標ドレイン電圧 [V]。

type vd_target:

float

戻り値:
returns:

vd_target における補間された abs(ID) の絶対値。データが利用できない場合や範囲外の場合は np.nan。

rtype:

float

tft.tftanalyze.main()

プログラムのエントリポイントです。

詳細説明:

この関数は、コマンドライン引数をパースし、Excel、PNG、ログファイルの 出力パスを準備します。標準出力と標準エラー出力をコンソールとログファイルの両方に 出力するように設定した後、run_analysis 関数を呼び出して主要な解析ロジックを実行します。 解析終了後、Tee 機能は解除されます。

戻り値:
returns:

なし

rtype:

None

tft.tftanalyze.make_summary_dataframe(t_summary)

伝達特性解析結果のリストから、Excel出力用のPandas DataFrameを作成します。

詳細説明:

t_summary リスト内の各解析結果辞書から、Excelサマリーシートに適した 主要なパラメータを抽出します。 元のデータフレーム (df) や詳細な分析ポイント (analysis_points)、 および内部的なインデックス (idx_ で始まるキー) は除外されます。 結果はPandas DataFrameとして整形され、Excelへのエクスポートに適した形式で提供されます。

引数:
param t_summary:

各VDスライスでの伝達特性解析結果を含む辞書のリスト。

type t_summary:

list[dict]

戻り値:
returns:

主要な解析結果パラメータを含むPandas DataFrame。

rtype:

pandas.DataFrame

tft.tftanalyze.nearest_row_by_current(df, target_id)

データフレーム内で指定された目標電流 (target_id) に最も近いID_smoothを持つ行を検索します。

詳細説明:

データフレーム df の ID_smooth 列を基に、目標電流値 target_id との絶対差が最小となる行を特定します。 見つかった行のインデックスとその行全体のデータを返します。 データフレームが空の場合、または ID_smooth 列が存在しない場合は、Noneを返します。

引数:
param df:

検索対象のDataFrame。ID_smooth列が必要です。

type df:

pandas.DataFrame

param target_id:

検索する目標電流値 [A]。

type target_id:

float

戻り値:
returns:

目標電流に最も近い行のインデックスと、その行のPandas Series。 データフレームが空の場合は (None, None) を返します。

rtype:

tuple[int or None, pandas.Series or None]

tft.tftanalyze.plot_idvg_quad(res, args)

伝達特性解析結果を 2x2 サブプロットとして可視化します。

詳細説明:

ID-VGデータに基づいて計算された様々なデバイス特性(ID-VG曲線、線形抽出、飽和抽出、移動度プロファイル)を 2x2のサブプロットとして表示します。各プロットには、Vth、Smin、移動度最大値などの主要な解析ポイントが アノテーションとして表示されます。プロットはファイルに保存することも可能です。

引数:
param res:

analyze_vg_core 関数によって生成された、単一VDスライスの解析結果を含む辞書。

type res:

dict

param args:

コマンドライン引数を含むオブジェクト。save_plot および plot_dir 属性を使用します。

type args:

argparse.Namespace

戻り値:
returns:

生成されたMatplotlibのFigureオブジェクト。

rtype:

matplotlib.figure.Figure

tft.tftanalyze.plot_idvg_triple(res, args)

伝達特性解析結果を 2x2 サブプロットとして可視化します。

詳細説明:

ID-VGデータに基づいて計算された様々なデバイス特性(ID-VG曲線、線形抽出、飽和抽出、移動度プロファイル)を 2x2のサブプロットとして表示します。各プロットには、Vth、Smin、移動度最大値などの主要な解析ポイントが アノテーションとして表示されます。プロットはファイルに保存することも可能です。

引数:
param res:

analyze_vg_core 関数によって生成された、単一VDスライスの解析結果を含む辞書。

type res:

dict

param args:

コマンドライン引数を含むオブジェクト。save_plot および plot_dir 属性を使用します。

type args:

argparse.Namespace

戻り値:
returns:

生成されたMatplotlibのFigureオブジェクト。

rtype:

matplotlib.figure.Figure

tft.tftanalyze.plot_path(args, name)

入力stemつきPNG保存パスを作成します。

詳細説明:

コマンドライン引数 (args) から取得した出力ステムとプロットディレクトリを基に、 指定された名前 (name) でPNGファイルの完全な保存パスを構築します。

引数:
param args:

コマンドライン引数を含む argparse.Namespace オブジェクト。 output_stem および plot_dir 属性を使用します。

type args:

argparse.Namespace

param name:

保存するPNGファイルの名前(拡張子なし)。

type name:

str

戻り値:
returns:

生成されたPNGファイルの完全なパス。

rtype:

str

tft.tftanalyze.plot_read_data(df_read, xcol, groupcol, title, args, fname_base, yscale='log')

読み込み/プレビューモードで平滑化されたデータをプロットします。

詳細説明:

生のクリップされたデータ (ID_abs_floor) と平滑化されたデータ (ID_smooth) を X軸 (xcol) に対してプロットします。 groupcol が指定されている場合、データはグループごとにプロットされ、凡例に表示されます。 Y軸はオプションで対数スケールに設定できます。 生成されたプロットは、args.save_plot がTrueの場合、指定されたディレクトリにPNGファイルとして保存されます。

引数:
param df_read:

読み込み/プレビュー用に処理されたデータを含むDataFrame。

type df_read:

pandas.DataFrame

param xcol:

X軸としてプロットする列名(例: 'VG', 'VD')。

type xcol:

str

param groupcol:

データをグループ化するための列名(例: 'VD', 'VG')。 この列が存在しない場合、データ全体が単一のグループとして扱われます。

type groupcol:

str

param title:

プロットのタイトル。

type title:

str

param args:

コマンドライン引数を含むオブジェクト。save_plot と plot_dir 属性を使用します。

type args:

argparse.Namespace

param fname_base:

保存するPNGファイル名のベース。

type fname_base:

str

param yscale:

Y軸のスケール('log'または'linear')。Noneの場合、線形スケール。デフォルトは'log'。

type yscale:

str or None

戻り値:
returns:

生成されたMatplotlibのFigureオブジェクト。

rtype:

matplotlib.figure.Figure

tft.tftanalyze.prepare_output_paths(args)

Excel/PNG/log の保存先を入力ファイルと同じディレクトリにそろえます。

詳細説明:

入力ファイルパス(args.infile_vg, args.infile_vd)を基準に、 Excelレポート、PNGプロット、ログファイルの出力ディレクトリとファイル名を決定し、 argsオブジェクトに設定します。これにより、全ての出力が関連する入力ファイルの近くに集約されます。

引数:
param args:

コマンドライン引数を含む argparse.Namespace オブジェクト。 infile_vg, infile_vd, mode, out_excel 属性を使用します。

type args:

argparse.Namespace

戻り値:
returns:

出力パスが設定された argparse.Namespace オブジェクト。

rtype:

argparse.Namespace

tft.tftanalyze.print_transfer_report(res)

伝達特性解析結果をコンソールに整形して出力します。

詳細説明:

analyze_vg_core 関数によって生成された伝達特性の解析結果辞書 (res) から、 線形領域と飽和領域の閾値電圧 (Vth)、移動度 (mu)、サブスレッショルドスイング (Smin)、 オフ電流 (Ioff) などの主要なデバイスパラメータを抽出し、 コンソールに分かりやすい形式で詳細なレポートを出力します。 また、各移動度抽出点における動作領域の適合性チェック結果も表示します。

引数:
param res:

伝達特性解析結果を含む辞書。

type res:

dict

戻り値:
returns:

なし

rtype:

None

tft.tftanalyze.read_4155_dataname_datavalue_csv(filepath, encoding='utf-8-sig')

Keysight/Agilent 4155系の DataName/DataValue CSV を読み込みます。

詳細説明:

戻り値は (df, metadata) です。DataValue行が見つからない場合は (None, metadata) を返し、通常CSV読み込みへフォールバックできるようにします。

引数:
param filepath:

読み込むCSVファイルのパス。

type filepath:

str

param encoding:

ファイルの文字コード。デフォルトは'utf-8-sig'。

type encoding:

str

戻り値:
returns:

データを含むDataFrameとメタデータの辞書のタプル。 DataValue行が見つからない場合は (None, metadata)。

rtype:

tuple[pandas.DataFrame or None, dict]

tft.tftanalyze.region_check_linear(vd, vg, vth, factor=3.0)

線形領域動作の条件をチェックします。

詳細説明:

トランジスタが線形領域で動作しているかどうかを判断するために、 指定されたVG、VD、Vth、および安全係数 (factor) を使用して VG - Vth >= factor * VD の条件を確認します。 VDが正でない場合、VG-Vthが負の場合、または条件が満たされない場合は警告が生成されます。

引数:
param vd:

ドレイン電圧 [V]。

type vd:

float

param vg:

ゲート電圧 [V]。

type vg:

float

param vth:

閾値電圧 [V]。

type vth:

float

param factor:

線形領域を保証するための安全係数。デフォルトは3.0。

type factor:

float

戻り値:
returns:

線形領域チェックの結果を含む辞書。 ok (bool), warning (str), VD_abs (float), VG_minus_Vth (float), ratio (float), criterion (str) を含みます。

rtype:

dict

tft.tftanalyze.region_check_saturation(vd, vg, vth, factor=3.0)

飽和領域動作の条件をチェックします。

詳細説明:

トランジスタが飽和領域で動作しているかどうかを判断するために、 指定されたVG、VD、Vth、および安全係数 (factor) を使用して VD >= factor * (VG - Vth) の条件を確認します。 VG-Vthが正でない場合、または条件が満たされない場合は警告が生成されます。

引数:
param vd:

ドレイン電圧 [V]。

type vd:

float

param vg:

ゲート電圧 [V]。

type vg:

float

param vth:

閾値電圧 [V]。

type vth:

float

param factor:

飽和領域を保証するための安全係数。デフォルトは3.0。

type factor:

float

戻り値:
returns:

飽和領域チェックの結果を含む辞書。 ok (bool), warning (str), VD_abs (float), VG_minus_Vth (float), ratio (float), criterion (str) を含みます。

rtype:

dict

tft.tftanalyze.run_analysis(args)

スクリプトのメイン実行ロジックをカプセル化します。

詳細説明:

この関数は、コマンドライン引数をパースし、ゲート酸化膜容量 (Cox) を計算します。 選択された解析モード (read, analyze_idvg, analyze_idvd, all) に応じて、 対応するデータ読み込み、解析、プロット生成の関数を呼び出します。 すべての結果(生データ、平滑化データ、解析サマリー、詳細分析ポイント)は集約され、 最終的に単一のExcelレポートファイルとPNGプロットとして出力されます。 プロットは --show_plot が指定されている場合、インタラクティブに表示されます。

引数:
param args:

コマンドライン引数を含む argparse.Namespace オブジェクト。

type args:

argparse.Namespace

戻り値:
returns:

なし。解析結果はファイルシステムに出力されます。

rtype:

None

tft.tftanalyze.run_read_mode(args)

読み込み/プレビューモードの処理を実行します。

詳細説明:

指定された入力ファイル(伝達特性と出力特性)を読み込み、Imin で電流をクリッピングし、 Savitzky-Golayフィルターで平滑化します。その後、処理されたデータをプロットし、 結果の概要をコンソールに出力します。 伝達特性 (ID-VG) データは対数電流平滑化がデフォルトですが、 出力特性 (ID-VD) データは線形電流平滑化と線形Y軸プロットが強制されます。 処理されたデータフレームとサマリー情報は、Excelエクスポートのために返されます。

引数:
param args:

コマンドライン引数を含むオブジェクト。 infile_vg, infile_vd, reverse_vg, idx_vg, idx_vd, Imin, read_smooth_domain, save_plot, plot_dir 属性を使用します。

type args:

argparse.Namespace

戻り値:
returns:

MatplotlibのFigureオブジェクトのリスト。 読み込まれた/処理されたデータフレームをタグ('vg'または'vd')で格納した辞書。 読み込み処理のサマリー情報を含む辞書(各グループごと)のリスト。

rtype:

tuple[list[matplotlib.figure.Figure], dict[str, pandas.DataFrame], list[dict]]

tft.tftanalyze.savgol_center_only(y, win, order, keep_edge_raw=True)

サビツキー・ゴレイフィルターを適用し、オプションで端点付近の生データを保持します。

詳細説明:

scipy.signal.savgol_filter は端点付近を外挿/補間することがあります。 TFT出力曲線では、VD=0側の点数が少ないため、端点平滑化が系統的なずれのように見えることがあります。 keep_edge_raw=True の場合、完全な中心ウィンドウを持つ点のみが平滑化された値に置き換えられ、 端点付近のデータは元のクリップされたデータのまま維持されます。 データ長が短すぎる場合、またはウィンドウ長が不正な場合は、元のデータが返され、 平滑化が適用されなかったことを示すブール配列が返されます。

引数:
param y:

平滑化するデータ配列。

type y:

numpy.ndarray or list

param win:

サビツキー・ゴレイフィルターのウィンドウ長。奇数である必要があります。

type win:

int

param order:

フィルターの多項式の次数。

type order:

int

param keep_edge_raw:

Trueの場合、完全な中心ウィンドウを持たない端点付近のデータを生データのまま保持します。

type keep_edge_raw:

bool

戻り値:
returns:

平滑化されたデータ配列と、各点が平滑化に使用されたかを示すブール配列のタプル。

rtype:

tuple[numpy.ndarray, numpy.ndarray]

tft.tftanalyze.select_sweep_segment(df, col, idx, label, sort_after=True, verbose=False)

掃引方向の変化インデックスに基づいて、DataFrameから特定の掃引セグメントを選択します。

詳細説明:

この関数は、add_sweep_index を使用して、指定された列 (col) の掃引セグメントインデックスを計算し、 その後、要求されたインデックス (idx) に対応するセグメントのみをフィルタリングして返します。 要求されたインデックスが存在しない場合、利用可能な最初のセグメントがフォールバックとして選択されます。 オプションで、選択されたセグメントを col 列でソートできます。

引数:
param df:

処理対象のDataFrame。

type df:

pandas.DataFrame or None

param col:

掃引セグメントを識別する基準となる列名(例: 'VG', 'VD')。

type col:

str

param idx:

選択する掃引セグメントのインデックス。

type idx:

int

param label:

警告メッセージなどで使用するインデックスのラベル(例: 'idx_vg')。

type label:

str

param sort_after:

Trueの場合、選択後に col 列でDataFrameをソートします。デフォルトはTrue。

type sort_after:

bool

param verbose:

Trueの場合、選択されたセグメントに関する詳細情報を出力します。デフォルトはFalse。

type verbose:

bool

戻り値:
returns:

選択された掃引セグメントを含むDataFrame。元のDataFrameがNoneまたは空の場合、 または col 列がない場合は、元のDataFrameまたはNoneを返します。

rtype:

pandas.DataFrame or None

tft.tftanalyze.valid_savgol_window(n, requested, order)

指定されたデータ点数に対して有効な奇数のSavitzky-Golayウィンドウ長を返します。

詳細説明:

サビツキー・ゴレイフィルターのウィンドウ長は、多項式の次数よりも大きく、 かつ奇数である必要があります。また、データ点数を超えることはできません。 この関数は、与えられた制約 (n, requested, order) に基づいて、 これらの条件を満たす最小かつ有効な奇数のウィンドウ長を計算して返します。

引数:
param n:

データ点の総数。

type n:

int

param requested:

要求されたSavitzky-Golayウィンドウ長。

type requested:

int

param order:

Savitzky-Golayフィルターの多項式の次数。

type order:

int

戻り値:
returns:

有効な奇数のSavitzky-Golayウィンドウ長。

rtype:

int