1.平衡・速度解析
SPANAは滴定、時間変化などの複数のスペクトルデータを用いて平衡、速度などの理論モデルに対する非線形最小二乗最適化計算を行う。
演算は濃度、温度、時間など独立変数およびパラメータ(Pi)を用いてモデルから算出されるスペクトル強度(Ytheoreical)と測定されたスペクトル強度(Yobs)の二乗残差(ss)
ss = 煤iYobs - Ytheoretical)2
を最小化するパラメター(Pi)セットを推定する。
SPANAに組み込まれている理論モデルを以下に示す(表中スペクトル強度 Y は吸光度 Abs で示されている)。
モデル | スペクトル強度 |
平衡モデル | |
Sequential 1:n Complex formationl ABi-1 + B <-> ABi , Ki= [ABi]/[ABi-1][B] i = 1〜n , nmax = 5 |
Abs = εA[A] + 買テABi[ABi] |
Sequential 1:n Complex formation accompaning Pre-equilibrium of A pA* <-> qA, Ko= [A]q / [A*]p ABi-1 + B <-> ABi , Ki= [ABi]/[ABi-1][B] i = 1〜n , nmax = 5 |
Abs = εA*[A*] + εA[A] + 買テABi[ABi] |
Independent 1:n Complex formation Aempty i Bj-1 + B <-> Aoccupied i Bj Ki = [Aoccupied i Bj]/[Aempty i Bj-1][B] i , j = 1〜n , nmax = 5 |
Abs = (買テA)[A] + ( emptyεA + occupiedεAiB)[ABj] |
pH titration model with n pKa’s AHi-1 + H+ <-> AHi Ki= [AHi]/[AHi-1][H+] i = 1〜n , nmax = 5 |
Abs = εA[A] + 買テAHi [AHi] |
n-Step 1 : n Complex formation ABi-1 + B <-> ABi K=[ABi]/[ABi-1][B]a (i = 1〜n) (a=1 : Independent complexation (a>1 : Cooperative complexation <Hill’s type expression>) -Job's Analyses - [A]Total + [B]Total = C (constant) φ = [B]Total / C , 1 - φ = [A]Total / C , φ= 0 〜1 |
Abs = nεA[A] + 倍(n - i)εA + iεAB}(n ! / ((n - i) !・i !)) [ABi] |
One-step m:n Complex formation mA + nB <-> AmBn K = [AmBn]/[A]m[B]n - Job's Analyses - [A]Total + [B]Total = C (constant) φ = [B]Total / C , 1 - φ = [A]Total / C , φ= 0 〜1 |
Abs = εA[A] + εAmBn[AmBn] |
One-step m-n Self-reorganization mA <-> nA* K = [A*]n/[A]m |
Abs = εA[A] + εA*[A*] |
Thermal Dependency mA <-> nA* K = [A*]n/[A]m = exp(-(ΔH-TΔS)/RT) A + B <-> AB K = [AB]/[A][B] = exp(-(ΔH-TΔS)/RT) |
Abs = εA[A] + εA*[A*] Abs = εA[A] + εAB[AB] |
Competitive 1:1 Complex formation A + I <-> AI K0 = [AI]/[A][I] A + B <-> AB K1 = [AB]/[A][B] A, B : spectroscopically inactive I : spectroscopically active |
Abs = εI [I] + εAI [AI] |
Competitive 1:2 Complex formation A + I <-> AI K0 = [AI]/[A][I] A + B <-> AB K1 = [AB]/[A][B] AB + B <-> BAB K2 = [BAB]/[AB][B] A, B : spectroscopically inactive I : spectroscopically active |
Abs = εI [I] + εAI [AI] |
速度モデル | |
0 th Oder reaction |
Abs = k t +Abs0 |
1st Order reaction A → B k : rate const. |
Abs = εA[A]t + εB[B]t |
2nd Order Reaction A + B → C k : rate const. |
Abs = εA[A]t + εB[B]t + εC[C]t |
Successive Reaction A → B → C k1, k2 : rate const. |
Abs = εA[A]t + εB[B]t + εC[C]t |
NMR Line Shape Analyses A <-> B k+ , k- : rate const. |
I(v) = f (v, vA, vB, pA, k+, T2A, T2B, C) |
一般関数 y : dependent variable t : independent variable a, b, c, d, e, f : parameters to be optimized |
y = a √ t + b y = a t + b y = a t2 + b t + c y = a t3 + b t2 + c t + d y = a t4 + b t3 + c t2 + d t + e y = a t5 + b t4 + c t3 + d t2 + e t + f y = (a t + b) / (t + c) + dt y = a ln (b t) + c t + d y = a exp (b t) + c t + d y = a exp (b t) + c exp (d t) + e y = a / (1 + exp (-(t - b) /c) + d t + e (Logistic function) y = a / (1 + (t - b)2/c2) + d t + e (Lorentz function) y = a exp (-(t - b)2/c2) +d t + e (Gauss function) |
ユーザー定義関数 y[i] : dependent variable x[1] : independent variable ( = t) c[i] : constant defined in the program p[i] : parameters to be optimized |
y[i] = f ( x[1], c[i], p[i] ) |
2.波形分割
SPANAは測定スペクトルをGauss関数、Lorentz関数、またはVoigt関数を用いて波形分割を行う。関数成分の形、数は自動または手動によって指定する。
3.成分分析
SPANAは重回帰分析の手法によって、測定スペクトル中に含まれる最大10種の成分に対する標準スペクトルの含有率を推定する。またスペクトル群に対する主成分分析を行い含まれる化学種数の推定を行う。
4.ユーザー定義関数のSPANAへの組み込み
予め組み込まれた関数の他にユーザーが定義した関数に対して最小二乗最適化計算を行う機能。ここでは、ユーザー定義関数のSPANAへの組み込みの方法について説明する(実際の使用法に関しては”Example"の項を参照)。
a) データ
SPANAの最適化計算選択のダイログボックスにおいて"External"を選択して"Do Program"ボタンを押すとSPANAは収集したデータを次のようなフォーマットで"spana_lsq.dta"と言うASCII形式のファイルをSPANAプログラムが置かれたフォルダーに出力したの後、ユーザーが指定した"exe"形式の最適化計算プログラムを実行する。
"spana_lsq.dta"のフォーマット
(sp:サンプリング・ポイント数、 ds:データ・セット数、 d(i) [i = 1〜 ds]:データ数)
b) プログラム
ユーザーが使用するプログラムはこのファイルからデータを取得して最適化計算を行うものであればどのようなものでもよい.が、SPANA ver.5ではC言語で書かれた一般最小二乗計算プログラム(spana_lsq.c)と反応速度解析用最小二乗計算プログラム(spana_redap.c)の2つを標準プログラムとして提供する。このプログラムを使用する場合、以下の手順でユーザーの実験系に対応する関数モデルをC言語で定義したファイルを作成しコンパイルすることで必要なexe形式のプログラムを作ることが出来る。コンパイルについては一般的なC言語コンパイラーが使用できるが、例えば無料で提供されているDJGPP、或いは Microsoft Visual Studio C++ などが簡便に使える。
一般最小二乗計算プログラムspana_lsq.cでは次の変数、パラメータを使用する。
y[i] : dependent variable (スペクトル滴定におけるAbsなど測定値)、i = 1 - 20
x[1]: independent variable (滴定における滴定試剤濃度など"t"変数に対応し、SPANAでは添え字は"1"に固定)
c[i] : 条件設定定数(滴定における被滴定サンプル濃度など)、i = 1 - 30
p[i] : 最適化すべきパラメータ、i = 1 - 20
以上の変数、パラメータを使用して実験系の理論モデルに対応した式,、y[i] = f (x[i], c[i], p[i]) を
void function(int i,double x[],double p[])
{ }
の形のfunction内に定義したファイルを作成する。その一例として10点までの測定波長に対応した1:1錯体生成系の滴定を異なる温度で行ったデータから平衡の熱力学的パラメータ、ΔHとΔS、を求めるプログラムの例を以下に示す。
このプログラムでは /* */に囲まれた部分はコメント行でプログラム上実質の意味は無い。また、#include <math>およびextern
double y[ ], c[ ];の行は最小二乗計算ルーチンspana_lsq.c内で宣言されている変数等をこのサブルーチンで使用することを意味しているので常にこのまま残して使用する。
以下、void function { }内に差スペクトルをy[i]、滴定試薬濃度をx[1]、滴定サンプル濃度をc[1]、測定温度をc[2]、ΔHをp[1]、ΔSをp[2]、各測定波長における差モル吸光係数をp[3]
- p[12]として、差スペクトルの理論式
ΔAbs = (Abs - εA[A] 0 =) Δε[AB]
が定義されている。
これを、spana_lsq.cとリンクしてコンパイルすればSPANAから使用できるexe形式の実行プログラムが得られる。例えば、function
ファイルをテキストファイルとして"titrn_t-dep.c"の名で保存した後、DJGPPのコマンドから、
gcc -o titrn_t-dep.exe spana_lsp.c titrn_t-dep.c
または、Microsoft Visual Studio C++ のコマンドから
cl titrn_t-dep.c spana_lsp.c
とすると、実行プログラムtitrn_t-dep.exeが得られる。2)
これらのプログラム作成についてはC言語の初歩的な知識があれば十分だが、詳細についてはC言語の専門書、またDJGPPについてはDJGPPのホームページなどを参照されたい。
また、spana_redap.cは反応速度解析用の最小二乗最適化プログラムで、反応速度を微分形速度式から解析する。詳しくは参考文献1)を参照されたい。
また、他の例については”Least Square"の項も参照されたい。
以上、詳細について不明な点があれば、メイルにてお問い合わせください。
1)「生体機能関連化学実験法」、日本化学会生体機能関連化学部会編、p49、化学同人、 2003
2) これらのプログラムのソースファイル、実行プログラムはSPANA(ver.5)の添付ファイルに含まれている。