Daijiro Taira

糖分析 (HPAEC-PAD)Windows 版を配布

HPAEC糖分析 woodsugar

島津LabSolutionsのHPAEC-PAD(高速陰イオン交換クロマトグラフィー+パルスドアンペロメトリー検出)で測った中性糖のデータから、木材などの多糖(セルロース・ヘミセルロース)量を求めるWindowsデスクトップアプリ「Wood Sugar Analyzer」。

HPAEC糖分析 woodsugar の操作の様子
クロマト確認 → 試料情報&結果 → 検量線 → 残存率。タブを切り替えるだけで、測定データから多糖量・条件比較まで到達できます。

測定のExportフォルダを選ぶだけで標準を自動判別し、保持時間(RT)の自動合わせ・重なったピークの分割・検量線・Excel/レポート出力までを一つの画面で一気通貫に行えます。

使い方

  1. フォルダを開く(測定Exportを一括取込)

    フォルダを開く(測定Exportを一括取込)

    島津LabSolutionsの測定フォルダ(Export)を選ぶだけ。テキスト書き出し(.txt)でも装置ネイティブ(.lcd)でも読み込め、同名で両方あるときは.lcdを優先します。名前が standard… のものを標準、それ以外をサンプルとして自動判別し、フォルダ内の全クロマトを一度に取り込みます。

  2. 標準を選ぶ(7糖/3糖を切替)

    標準を選ぶ(7糖/3糖を切替)

    検量線に使う標準ファイルと希釈率を確認します。標準は自動でチェックされ、希釈率も名前(standard1/4 → 4倍)から推定。『主要3種』を押せばGlc・Man・Xylだけの3糖標準にも対応でき、『全糖』で7糖に戻せます。

  3. 糖を自動で割り当て・波形を確認

    糖を自動で割り当て・波形を確認

    その日の標準のピークを基準RT(Retention Time=保持時間)として、各ピークを溶出順に Rha・Ara・Gal・Glc・Man・Xyl・Fru へ自動で割り当て。サンプルは標準とのRTのずれ(offset)を補正して追従します。色帯がそのまま面積=定量に使う値です。

  4. 保持時間(RT)を手で微調整

    保持時間(RT)を手で微調整

    ピークの当たりがずれていたら、右の『糖RTの手修正』に直接入力するか、『クリックでRT修正』をONにして波形上のピークをクリック(クリック付近 ±0.1分でいちばん高い点に自動で吸着)。直すとその場で再計算されます。

  5. 重なったピークの分割を確認

    重なったピークの分割を確認

    実サンプルではGlc/Manなどが1つの山に融合しがち。同じ日の標準のピーク形(σ=幅、a=裾の非対称)を鋳型に、面積比だけを『負にならない』制約で解いて配分します(NNLS=非負最小二乗)。『分割パラメータ』で各糖のσ・a・面積・R²(当てはまり)を確認できます。

  6. 手動で面積を合わせる(手動積分)

    手動で面積を合わせる(手動積分)

    自動の積分範囲が気に入らなければ、糖を選んで『範囲を表示/編集』→ 波形上の黄色い帯を左右にドラッグして範囲を決め、『この範囲で確定』。色塗り=面積=定量値が常に一致します。『面積を自動に戻す』でいつでも元の自動積分に戻せます。

  7. 試料情報を入力(重量・液量・希釈)

    試料情報を入力(重量・液量・希釈)

    『メタデータ・結果』タブで、各試料の重量(mg)・液量(mL)・希釈率などを入力。下の表のセルを直接打ち替えれば試料ごとに個別入力でき、上の共通値+『共通値を全行に適用』で全行へ一括反映、『CSV読込』でまとめて入力、と使い分けられます。

  8. 結果を同じ画面で確認

    結果を同じ画面で確認

    下の結果表に、各糖の面積・mol%(モル比=組成)・wt%(試料重量に対する重量%=含量)、セルロース/ヘミセルロースのwt%、回収率までその場で表示。測定下限未満は『半定量』、面積ゼロは『N.D.(未検出)』ときちんと区別します。

  9. 検量線をチェック

    検量線をチェック

    『検量線』タブで糖ごとの slope(濃度/面積の傾き)・R²(直線への当てはまり)を確認。原点回帰なので研究室で開発されたソフト IC Data Analyzer と数値が一致します。検量範囲を外れた糖には品質フラグ(上振れ=PAD飽和の恐れ→希釈して再測定、下振れ=半定量)が付きます。

  10. Excelに出力(数式で検算できる)

    Excelに出力(数式で検算できる)

    Summary/残存率/検量線/計算式メモの要点シートを出力。『残存率』シートは緑=入力・灰=数式で、面積→濃度→質量→wt%→残存率までを全部Excelの数式で再現します。緑のセルを変えると結果が自動で再計算され、計算過程をそのまま検算できます。

  11. HTMLレポートで一覧

    HTMLレポートで一覧

    検量線・組成(mol%)・多糖量・残存率の図をまとめたレポートをHTML/Markdownで出力。ブラウザで開いてそのまま共有でき、必要なら IC Data Analyzer 互換のCSV(IC互換CSV)も出せます。

  12. 条件を変えた試料を比べる(残存率)

    条件を変えた試料を比べる(残存率)

    基準試料を100%として、処理条件(このデータは熱分解温度240→400℃)を変えたときに各多糖がどれだけ残ったかを『残存率』タブで一覧。比率の議論は重量基準(wt%)で行うため、ある成分がND(未検出)でも他成分が膨らんで破綻しません。

  13. 組成の移り変わりを見る(トレンド)

    組成の移り変わりを見る(トレンド)

    『トレンド』タブは組成(mol%)の推移を条件順に表示。高温域(340℃以上)は多糖がほぼ分解して微量域=半定量になるため線が暴れますが、これは『ほとんど残っていない』ことの裏返しです。

ダウンロード

仕組みと使った技術

全体の流れ

  1. 入力: 島津LabSolutionsからテキストエクスポートしたHPAEC-PADクロマトファイルをフォルダ単位で受け取る。
  2. RT自動アンカー: その日の標準の最大7ピーク(溶出順にRha/Ara/Gal/Glc/Man/Xyl/Fru)を基準RTとして登録し、サンプル側はRTオフセットを推定して相対マッチすることで測定日ごとのRTドリフトに追従する。
  3. 再積分と融合ピーク分割: 標準・サンプルともに生波形からクラスタベースラインで再積分(intensity·sec)。Glc/Manなどが1ピークに融合した場合は、同日標準のピーク形状(修正ガウシアン・σ/aを固定)を鋳型にNNLSテンプレート混合で面積比を求め配分する(confidence flag付き半定量)。
  4. 検量線と品質フラグ: 原点回帰(slope=Σ(CA)/Σ(A²))でIC Data Analyzerと完全一致。検量範囲外は化学的に非対称なフラグを付与——上振れ(PAD飽和の恐れ)は倍率+リスク度+希釈再測定推奨、下振れ(検出あり・最低標準未満)は半定量、面積0はN.D.と厳密区別する。
  5. 定量: 主値は未規格化wt%+回収率(未測定成分を糖に押し込まない)、副値はIC Data Analyzer互換((100−リグニン)規格化)。グルコマンナン補正(Man/Glc比)・無水補正(既定OFF)も選択可能。
  6. 出力: results.csv(計算式サイドカー*_計算式.txt付き)/results.xlsx(Summary/残存率/Calibration/計算式シートで入力フル精度のままExcel数式で再現)/report.html+report.md(検量線・mol%・多糖量・残存率の図付き)。
  7. GUI(PySide6)でフォルダ一括取込→クロマト確認/手修正→定量→CSV/Excel/レポート出力まで一気通貫。メタデータタブにバッチ共通設定・共通値・CSV読込・フィルダウンを集約。

使った技術

Python 3.11+
コア解析エンジン・CLI・バッチ処理の実装言語
NumPy / SciPy
NNLS(非負最小二乗)による融合ピーク分割・ガウシアンフィッティング・検量線回帰
pandas
クロマトデータの読み込み・集計・CSV/Excel出力の中間処理
openpyxl
Excel出力(計算シートのExcel数式埋め込み・number_format書式・グラフ生成)
markdown
HTMLレポート生成(report.md→report.html変換)
PySide6 / pyqtgraph / matplotlib
GUIフロントエンド(クロマト可視化・手動積分修正・メタデータ入力)
PyInstaller
Windows向けデスクトップアプリ(Wood Sugar Analyzer)として配布(Python不要のEXE)
pytest
テスト97件。エクスポート結果のラウンドトリップ検証を含む

実装の工夫

  • 出力の監査性: Excelの計算シートに面積→濃度→質量→wt%/mol%→セル/ヘミセルをすべてExcel数式で再現し、入力値(面積・slope・重量・液量・希釈率・MW・無水係数)はフル精度で格納。表示桁はnumber_formatで整形するだけで格納値を丸めないため、Excelで再計算した値は定量結果と厳密一致(差は1e-14〜1e-19)する。
  • 検量レンジフラグの化学的非対称化: 上振れはPAD飽和リスクがあるため倍率・リスク度・希釈推奨を明示する一方、下振れは原点回帰で0向き外挿のバイアスが小さいため煽らずサンプル単位で半定量に集約する設計。実データ検証で警告34件→各サンプル最大2行に整理できた。
  • 生波形からの再積分によるLabSolutions過積分補正: Peak Tableの面積をそのまま使わず、標準・サンプルともに生波形からクラスタベースラインで再積分する。これにより、GUIの色塗り面積と定量に使う面積が一致し、LabSolutionsのFru/Xylの広い裾による過積分が自動補正される。
  • 融合ピーク分割はNNLS非負制約: IC Data Analyzerが融合領域ごとにσ・テーリングaを反復最適化するのに対し、woodsugarは同日標準から得たσ/aを固定してNNLSで比率のみ解く(より簡素・安定)。基底関数(修正ガウシアン)はIC互換。
  • クロスバッチ残存率: 別測定日のフォルダを混ぜず各々を自分の標準で別々に定量し、基準試料のwt%(絶対量)に対する比を取る。mol%(組成比)基準はND時に他成分が膨張して破綻するためwt%基準を採用。
  • 配布: PyInstaller の onedir でフォルダ一式(Wood Sugar Analyzer.exe + _internal)にまとめ、ZIPで研究室・社内配布。Python のインストールは不要。
  • Codex(read-only)との分担: GUI実装などの中規模変更はCodexに「置換前→置換後の確定コード」を起草させ、本体がコードを適用してpytestで検証する役割分担を採用した。

用語

HPAEC-PAD
高速陰イオン交換クロマトグラフィー+パルスドアンペロメトリー検出。糖を分離し電気化学的に検出する分析法。
RT(保持時間 / Retention Time)
ピークが出てくるまでの時間。糖ごとにほぼ決まっており、ピークがどの糖かを見分ける手がかりになる。
検量線 / slope / R²
標準の『濃度↔ピーク面積』の関係。slope は濃度/面積の傾き、R² は直線への当てはまりの良さ(1に近いほど良い)。
mol% と wt%
mol% は検出した糖どうしのモル比(=組成、何対何か)。wt% は試料重量に対する重量%(=含量、どれだけ入っているか)。
セルロース / ヘミセルロース
木材の主要な多糖。セルロースはグルコース由来、ヘミセルロースは Man・Xyl などが混ざった多糖。
NNLS(非負最小二乗)
重なったピークを『面積は負にならない』という制約のもとで各糖へ配分する計算手法。
半定量 / N.D.
半定量=検出はあるが最低標準より薄く参考値あつかい。N.D.=面積ゼロで未検出。両者をはっきり区別する。
無水補正
多糖は糖がつながるとき結合ごとに水が抜けるため、測った単糖の重さを多糖残基の重さに直す補正(既定OFF)。mol% には影響しない。
残存率 / 回収率
残存率=基準試料を100%としたときの各糖の残り具合。回収率=測定した糖の合計が試料重量のどれだけを説明できるか。