TG装置間 温度補正ツール
同じ試料を2台のTG(熱重量)装置で測ると、装置ごとの温度校正のクセで分解曲線の位置が数℃ずれます。このツールは、片方の温度軸をΔ℃だけ平行移動して、もう一方の曲線に最も重なるΔを自動で探し当てる“2台の物差し合わせ”。

補正前後をグラフで見ながら微調整して、補正済みExcelとして書き出せます。
使い方
-
画面の見方
左にグラフ(上=TG曲線/下=DTG曲線)、右に操作パネル(ファイル選択・サンプル情報・補正方法・温度シフト・DTG閾値・評価指標・保存)。装置の種類はファイルの中身から自動判定されるので、TG-MS(Netzsch)とTG-View(Hitachi)はどちらの欄に入れても正しく識別されます。
-
2つのファイルを読み込む → 自動でRMSE最小化
TG-MS(.csv/.xlsx)とTG-View(.xlsx)を選んで「読み込み」を押すと、温度シフトΔを-30〜+30℃で探索してRMSEが最小になるΔを自動適用します。この試料では Δ=+5.94℃、補正前RMSE 3.968% → 補正後 1.421%(約64%改善)。灰=TG-MS原曲線/青=TG-View(基準)/赤破線=補正後が、ぴたりと重なります。
-
グラフで重なりを確認する
上がTG(%)、下がDTG(質量減少速度。通常は%/minだが、ここではピーク比較のため最大値を1に正規化して表示)。凡例は①と同じ(灰点線=補正前・青=基準・赤破線=補正後)。黄色の帯が「評価区間」で、TG-MSのDTGがピーク高さの10%を超える最大連続域(このときは約254〜385℃)。この区間でRMSEを最小化しているので、分解が活発な温度域でカーブが重なります。
-
補正方法と評価指標を読む
補正方法は RMSE最小化(推奨)・T50・T5・DTGピーク・手動 から選べ、それぞれのΔが併記されます(この試料では RMSE最小化 +5.94/T50 +6.74/T5 +6.28/DTGピーク +11.27℃)。パネル下部の評価指標には RMSE 1.421・R²(決定係数)0.9960・Max差 4.129%(384℃付近)・評価点126 が表示され、「補正なし 3.968 → 1.421(64%改善)」で改善が一目で分かります。
-
手動で微調整して“合い具合”を体感する
スライダーや矢印キー(←→で±0.1℃、Shift+←→で±1℃)でΔを手で動かせます。試しに最適値(+5.94℃)から約12℃引いた -6.06℃ にずらすと、赤破線が左へずれて曲線が離れ、RMSEは1.421→7.519へ悪化。どれだけ合っているかが数値と見た目の両方で分かります。
-
DTG閾値で評価区間を絞る
評価区間は「TG-MSのDTGがピーク高さの何%を超える区間か」で決まります。10%→30%に上げると評価点数は 126→73 に減り、評価区間は 約254〜385℃ から 約299〜374℃ へ分解の中心に絞られます(このときのRMSEは1.382)。絶対値ではなくピーク比で判定するので、分解が弱い(DTGが小さい)試料でも同じ閾値が使えます。
-
補正済みExcelを出力する(元ファイルは非破壊)
「名前を付けて保存」を押すと、元ファイルを変更せず別ファイルに書き出します。画像は出力Excelの『補正情報』シートで、適用したΔ・評価指標・補正法ごとの比較・温度指標・処理手順が記録されます。これに加えて、TG-MSデータ(温度列にΔ加算済み)と、TG-Viewデータ(150℃規格化TG%とDTG%/minをExcel数式で追加)の計3シート構成です。
ダウンロード
-
TG補正ツール(Windows・ZIP) ↓
約89MB・展開して TG補正ツール.exe を起動(Python不要・Windows)
仕組みと使った技術
全体の流れ
- 1. TG-MSファイル(xlsx/csv)とTG-Viewファイル(xlsx)をGUIで選択。A1セルのキーワードで装置種別を自動判定し、複数シートがある場合はダイアログで選択させる。
- 2. 前処理: TG-MS の等温保持区間(測定開始直後の温度一定域)を単調増加フィルタで除去。TG-View の DTG を μg/min から %/min に変換。両装置のTG(%)を150℃時点を100%として規格化する。
- 3. 評価区間の決定: TG-MS の DTG をピーク高さで正規化し、値がデフォルト閾値0.1(ピーク高さの10%)を超える最大連続区間のみを評価対象とする。閾値は絶対値ではなくピーク比を採用することで低分解性試料でも同じ閾値が使える。
- 4. RMSE最小化探索: Δを -30〜+30℃の範囲で2段階探索(粗0.1℃刻み→細0.01℃刻み)しながら、各Δで補正後TG-MSにTG-Viewを線形補間して残差を計算し、RMSEが最小となるΔを採用。指標法(T50・T5・DTGピーク)と同じ土俵で比較し、最もRMSEの小さい方法を推奨として表示する。
- 5. GUI表示: TG曲線(上段)とDTG曲線(下段)をリアルタイム更新。評価区間を黄色帯、Max差発生温度を赤縦線で表示。スライダーや矢印キーで0.1℃/1.0℃刻みの手動微調整も可能。補正方法はRMSE最小化のほかT50・T5・DTGピーク・手動調整を選択可能。
- 6. 出力: 「名前を付けて保存」で元ファイルを変更せずに補正済みExcelを出力。TG-MSデータシート(温度列にΔ加算済み)、補正情報シート(Δ値・評価指標・補正法比較・処理手順説明)、TG-ViewデータシートにExcel数式で計算列(TG % 150℃規格化、DTG %/min)を追加した3シート構成。
使った技術
- Python 3.9+
- 全処理のランタイム。3.9以上を対象としfrom __future__ import annotationsで互換性確保
- tkinter
- デスクトップGUIフレームワーク。Canvas+Scrollbarでスクロール可能パネルを実現。ttk.Scaleはresolutionパラメータ非対応のためtk.Scaleを使用
- matplotlib (TkAgg)
- GUIに埋め込んだグラフ描画。スライダー操作時はset_xdata()のみで差分更新し全再描画より高速化。マーカーはartistを再利用しremove()に依存しない(バージョン差対策)
- numpy
- np.interp による線形補間、np.nanmax によるNaN耐性ピーク検出、単調増加フィルタ処理
- pandas
- xlsx/CSVファイルの読み込みとDataFrame操作
- openpyxl
- 補正済みExcelの読み書き。CSVはxlsxに変換してから処理(openpyxlはCSV非対応のため)
- xlsxwriter
- 補正情報シートへの書き込み
- PyYAML
- default.yamlによるデフォルトパラメータ管理(DTG閾値0.1、探索範囲±30℃等)
- PyInstaller (--onedir)
- Python不要の単体exe化。--onedirモードで起動が速く、配布はフォルダごとzipで渡す
実装の工夫
- CLIコア(core/: loader, indicators, correction, evaluator, selector)を先に完成させ、GUIはそれを呼ぶ薄いUI層として設計。コアだけでテスト可能な構造により品質確保しやすかった。
- 推奨補正法は、物理指標法(T50・T5・DTGピーク)だけでなく連続探索のRMSE最小化も同じ土俵に乗せてRMSE最小のものを選ぶ。これにより、既定で適用される補正と『推奨』『評価区間』が常に一致する。
- 装置自動判定はA1セルのキーワードで行い、どちらのファイルを先に選んでもTG-MS/TG-Viewが正しく識別される。Netzsch CSVはヘッダ行が37行目・38行目で揺れるため、行33-42の範囲で「Temp」含む行を動的検出する実装とした。
- DTG評価閾値は当初 2.0 %/min 固定の絶対値判定で実装したが、低分解性試料(DTG絶対値が小さい試料)では評価区間が空になる問題が発覚。DTG / nanmax(DTG) > 0.1 のピーク比に変更し全試料で同じ閾値が機能するよう改善。破壊的変更には 0 < threshold < 1 の範囲検証を追加して旧値(2.0)が静かに壊れないようにした。
- TG-Viewシートへの出力は静的値でなくExcel数式(=D23/$D$1531*100等)で書き込み、研究者が後から計算式を検証・再計算できる透明性を確保した。
- Netzsch CSVの℃文字はlatin-1エンコード。utf-8→latin-1→cp1252のフォールバック自動判定でエンコーディングエラーを回避。また日本語パスでのopenpyxl失敗はPath(...)でstr→Pathに統一して対応。
- GUIのMax差マーカーはartistのremove()に依存すると一部のmatplotlibで『cannot remove artist』例外を起こすため、set_xdata/set_textで再利用する方式に変更してバージョン差に強くした。
- 仕様変更や修正の前に別のAIにセカンドオピニオンを依頼し、致命的バグ(範囲検証なし・旧値での沈黙的破綻・NaNの誤表示・評価基準の文言不明瞭)を実装前/公開前に潰す運用にしている。
用語
- TG / DTG
- TGは熱重量分析(試料を昇温しながら質量変化を%で記録したもの)。DTGはその時間微分(質量減少速度、%/min)で、分解が最も速い温度=ピークが分解の目印になる。
- 温度シフト Δ
- TG-MSの温度軸を平行移動する量(T_補正 = T_原 + Δ)。装置間の温度校正のずれを吸収する、このツールが求める唯一の値。
- RMSE最小化(推奨)
- Δを-30〜+30℃で細かく動かし、補正後TG-MSと基準TG-Viewの各温度点でのTG値の差(残差)のRMSEが最小になるΔを直接探す方法。既定で適用される。
- T50 / T5 / DTGピーク
- 物理的な温度指標から決める補正法。T50=50%減量温度、T5=5%減量温度、DTGピーク=分解速度が最大になる温度。各装置のその温度の差をΔにする。
- RMSE
- 二乗平均平方根誤差。補正後の2曲線の食い違いの大きさ(残差の二乗平均の平方根)。小さいほどよく重なっている。
- R²(決定係数)
- 補正後のTG-MSが基準TG-Viewの形をどれだけ説明できているか。1に近いほど形が一致。
- Max差 / Max差温度
- 評価区間内で最も食い違っている点の差(%)と、その発生温度。局所的な破綻がないかの確認用。
- 評価区間
- RMSEを計算する温度範囲。TG-MSのDTGがピーク高さの一定割合(既定10%)を超える最大連続域に絞り、ノイズの影響を避ける。
- DTG閾値(ピーク比)
- 評価区間を決めるしきい値。DTGの絶対値ではなく、ピーク高さを1としたときの相対値で判定する(既定0.1=ピークの10%)。
- 150℃規格化
- 両装置のTG(%)を150℃時点で100%に揃える前処理。装置間でTGの絶対値は直接比較できないため。
- 等温保持の除去(単調増加フィルタ)
- 測定開始直後の温度一定区間を取り除き、温度が単調に増える区間だけを使う前処理(線形補間の前提)。