analyze_2layer_Hall_excel.py
プログラムの動作
analyze_2layer_Hall_excel.py は、Excel形式のホール測定データから、2層モデルを用いて薄膜(film)の有効ホール物性を計算するためのPythonプログラムです。基板単体(sub)と薄膜+基板(tot)のホール測定結果をインプットとして、膜厚、シート抵抗、ホール係数などの情報から薄膜固有の電気的特性(シートコンダクタンス、体積 Hall 係数、ホール移動度、キャリア密度など)を抽出します。
主な機能:
Excelファイルからホール測定データを読み込みます。
2層ホールモデルに基づいて、薄膜のシートコンダクタンス (\(G_{film}\)) とシート Hall 係数 (\(RH_{film\_sheet}\)) を算出します。
これらの値から、薄膜の体積伝導率 (\(\sigma_{film}\))、ホール移動度 (\(\mu_H_{film}\))、シートキャリア密度 (\(n_{sheet\_film}\))、体積キャリア密度 (\(n_{volume\_film}\)) を計算します。
計算結果を、元のExcelファイルに出力シートとして追加保存します。出力は、各層の物性を横並びで表示する「wide」形式と、各層を別々の行で表示する「long」形式の2種類を提供します。
使用された仮定と計算式をまとめた「README_Hall」シートも生成します。
解決する課題: 積層構造を持つサンプル(例えば、薄膜が基板上に成膜されている場合)では、薄膜単体の電気特性を直接測定することが困難です。このプログラムは、基板単体と薄膜+基板の測定結果を解析することで、薄膜自体のホール物性を間接的に評価することを可能にします。
原理
このプログラムは、2層モデルに基づくホール効果測定の解析を行います。全体(薄膜+基板)の電気特性は、個々の層の特性の合計として扱われます。
仮定:
基板と薄膜は同じキャリアタイプであると仮定されます。
ホール係数 (\(RH\)) は絶対値として扱われます。入力データでは、n型の\(RH\)値は正の値として統一されていることが前提とされます。
キャリア密度の計算には、\(|RH_{sheet}|\) が使用されます。
RH_total(全体の体積 Hall 係数)は、装置に入力された薄膜の厚さd_filmを用いて、体積 Hall 係数 (\(cm^3/C\)) に換算済みであると扱われます。このスクリプトでは、入力表のd_film[um]をこのthickness_tot_cmとして使用します。
基本的な計算式:
シート Hall 係数への変換: 体積 Hall 係数 \(RH_{volume}\) (\(cm^3/C\)) をシート Hall 係数 \(RH_{sheet}\) (\(cm^2/C\)) に変換します。 $\(RH_{sheet} = \frac{RH_{volume}}{d_{cm}}\)\( ここで \)d_{cm}$ は層の厚さ (cm) です。
基板と全体のシート Hall 係数はそれぞれ以下のように計算されます。 $\(RH_{sub\_sheet} = \frac{RH_{sub\_volume}}{d_{sub\_cm}}\)\( \)\(RH_{tot\_sheet} = \frac{RH_{tot\_volume}}{d_{film\_cm}}\)\( ここで、\)d_{sub_cm}\( は基板の厚さ (cm)、\)d_{film_cm}$ は薄膜の厚さ (cm) です。
薄膜のシートコンダクタンス: 全体のシートコンダクタンス \(G_{tot}\) (\(S/sq\)) から基板のシートコンダクタンス \(G_{sub}\) (\(S/sq\)) を引くことで、薄膜のシートコンダクタンス \(G_{film}\) を求めます。 $\(G_{film} = G_{tot} - G_{sub}\)$
薄膜のシート Hall 係数: 2層モデルにおいて、全体のシート Hall 係数は各層の寄与の和として表されます。この関係を薄膜のシート Hall 係数について解くと、以下の式が得られます。 $\(RH_{film\_sheet} = \frac{G_{tot}^2 \cdot RH_{tot\_sheet} - G_{sub}^2 \cdot RH_{sub\_sheet}}{G_{film}^2}\)$
ホール移動度: シートコンダクタンスとシート Hall 係数からホール移動度 \(\mu_H\) (\(cm^2/(V \cdot s)\)) を計算します。 $\(\mu_H = G_{sheet} \cdot RH_{sheet}\)$
シートキャリア密度: 電気素量 \(E_{CHARGE}\) (\(1.602176634 \times 10^{-19}\) C) と絶対シート Hall 係数からシートキャリア密度 \(n_{sheet}\) (\(cm^{-2}\)) を計算します。 $\(n_{sheet} = \frac{1}{E_{CHARGE} \cdot |RH_{sheet}|}\)$
体積キャリア密度: シートキャリア密度と層の厚さから体積キャリア密度 \(n_{volume}\) (\(cm^{-3}\)) を計算します。 $\(n_{volume} = \frac{n_{sheet}}{d_{cm}}\)$
体積伝導率: シートコンダクタンスと層の厚さから体積伝導率 \(\sigma\) (\(S/cm\)) を計算します。 $\(\sigma = \frac{G_{sheet}}{d_{cm}}\)$
単位変換: 入力される厚さの単位は以下のように変換されます。
\(d_{sub}\) (mm) は \(d_{sub\_cm} = d_{sub\_mm} \times 0.1\) で cm に変換されます。
\(d_{film}\) (µm) は \(d_{film\_cm} = d_{film\_um} \times 10^{-4}\) で cm に変換されます。
必要な非標準ライブラリとインストール方法
このプログラムを実行するには、openpyxl ライブラリが必要です。
以下のコマンドを使用してインストールできます。
pip install openpyxl
必要な入力ファイル
プログラムは、以下の形式のExcelファイル (.xlsx) を入力として期待します。
ファイル形式:
Excelワークブック (.xlsx 形式)
データは1つのシートに格納されている必要があります。
ヘッダー行は最初の行(1行目)に存在する必要があります。
期待されるデータ構造と列名: 以下の列名(またはその代替候補)がヘッダー行に含まれている必要があります。プログラムは列名の表記のゆらぎをある程度吸収しますが、以下の一般的な表記に近づけることを推奨します。
プログラム内部名 |
必須/任意 |
例となる列名候補 |
説明 |
|---|---|---|---|
|
必須 |
|
温度 (ケルビン) |
|
必須 |
|
基板の厚さ (ミリメートル) |
|
必須 |
|
薄膜の厚さ (マイクロメートル) |
|
必須 |
|
基板のシートコンダクタンス (S/sq) |
|
必須 |
|
基板の体積 Hall 係数 (cm³/C) |
|
必須 |
|
薄膜+基板のシートコンダクタンス (S/sq) |
|
必須 |
|
薄膜+基板の体積 Hall 係数 (cm³/C) |
|
任意 |
|
(比較用) 基板のシート Hall 係数入力 |
|
任意 |
|
(比較用) 薄膜+基板のシート Hall 係数入力 |
|
任意 |
|
(比較用) 薄膜のシートコンダクタンス入力 |
|
任意 |
|
全体の電流 (アンペア) |
|
任意 |
|
全体の磁場 (テスラ) |
|
任意 |
|
全体のホール電圧 (ボルト) |
注意事項:
Hall 係数 (\(RH\)) は、すべてのデータポイントで符号なしの大きさ(絶対値)として扱われます。n型キャリアのデータも正の値として入力されていることを前提とします。
RH_total(薄膜+基板の体積 Hall 係数)は、Hall 測定装置への入力厚さとしてd_film[um]を使用して計算された値であることが前提です。
生成される出力ファイル
プログラムは、入力Excelファイルと同じディレクトリに、新しいExcelファイル {入力ファイル名ステム}_analyzed.xlsx を生成します(-o オプションで出力ファイル名を指定しない場合)。この出力ファイルには、以下の3つの新しいシートが追加されます。
analyzed_wideシート:各温度測定ポイントごとに1行で、基板 (sub)、薄膜+基板 (tot)、そして抽出された薄膜 (film) のHall物性が横並びで表示されます。
計算されたすべての物性(シートコンダクタンス、体積伝導率、体積 Hall 係数、シート Hall 係数、ホール移動度、シートキャリア密度、体積キャリア密度など)が含まれます。
入力された元のデータ(温度、膜厚など)も含まれ、計算中に発生した警告も表示されます。
データの比較検証用に、入力ファイルに存在した
RH_sub_sheet_input,RH_tot_sheet_input,G_film_inputといった列も含まれます。
analyzed_longシート:各温度測定ポイントと各層(sub, tot, film)の組み合わせごとに1行でデータが表示されます。
縦長のデータ形式であり、グラフ作成やピボットテーブルでの分析に便利です。
各行には、
layer列でどの層の物性であるかが示されます。
README_Hallシート:この解析プログラムで使用された主要な仮定と計算式が記載されています。
出力シート (
analyzed_wideとanalyzed_long) の簡単な説明も含まれます。ユーザーが解析の背景を理解するのに役立つ情報が提供されます。
コマンドラインでの使用例 (Usage)
基本的なコマンドラインでの実行方法は以下の通りです。
python analyze_2layer_Hall_excel.py <input_xlsx_file> [options]
引数:
<input_xlsx_file>: 必須。解析対象のExcelファイルへのパス。例:data.xlsx
オプション:
-o <output_xlsx_file>,--output <output_xlsx_file>:出力するExcelファイルのパスを指定します。
このオプションが指定されない場合、入力ファイル名に
_analyzedを追加したファイル名がデフォルトで使用されます(例:input.xlsxの場合input_analyzed.xlsx)。
--sheet <sheet_name>:入力Excelファイル内の解析対象シート名を指定します。
このオプションが指定されない場合、Excelワークブックの最初のシートが使用されます。
コマンドラインでの具体的な使用例
ここでは、my_hall_data.xlsx という入力ファイルがあり、その中に Measurement 1 という名前のシートにデータが格納されていると仮定します。
例1: デフォルトの出力ファイル名で解析を実行
python analyze_2layer_Hall_excel.py my_hall_data.xlsx --sheet "Measurement 1"
実行結果の説明:
上記のコマンドを実行すると、my_hall_data_analyzed.xlsx という名前の新しいExcelファイルが生成されます。このファイルには、元の my_hall_data.xlsx の内容に加えて、analyzed_wide、analyzed_long、README_Hall の3つのシートが追加されています。標準出力には、以下のようなメッセージが表示されます。
=== Two-layer Hall analysis completed ===
Input : my_hall_data.xlsx
Output: my_hall_data_analyzed.xlsx
Analyzed rows: 10
Skipped rows : 2
ここで Analyzed rows は正常に解析されたデータ行の数、Skipped rows は必須データが不足しているなどの理由でスキップされた行の数を示します。
例2: 特定の出力ファイル名を指定して解析を実行
python analyze_2layer_Hall_excel.py my_hall_data.xlsx -o results_2layer.xlsx
実行結果の説明:
このコマンドでは、シート名を指定していないため、my_hall_data.xlsx の最初のシートが解析対象となります。解析結果は results_2layer.xlsx というファイルに保存されます。標準出力には、出力ファイル名が results_2layer.xlsx と表示されます。
=== Two-layer Hall analysis completed ===
Input : my_hall_data.xlsx
Output: results_2layer.xlsx
Analyzed rows: 10
Skipped rows : 2