(1) ビルトイン関数を用いたFitting
waveを作り直します。
make/o/d/n=100 a
setscale/p x 0, 0.1, "ms", a
display a
ModifyGraph mode(a)=3,marker(a)=19
a=9.37*exp(-0.24*x)+0.2*sin(5*x)+enoise(0.1)
関数enoise(num)は、-numから+numの間のuniformな乱数を発生する関数です。グラフに人為的なノイズを加えるために使用しています。
まず、このグラフを、指数関数でfitしてみましょう。メニューで、Analysis ->
Curve FittingでCurve Fitting Dialogを開きます。Functionでは、expを選択。Y
dataにはaを、X dataには、-calculated-を選択します。destinationは-auto trace-のまま。そしてDoItボタンをクリック。あるいは、コマンド入力で、
CurveFit exp a /D
とします。fitする範囲をえらぶことも可能です。その場合、コマンド入力は、
CurveFit exp a(xcsr(A),xcsr(B)) /D
となります。なお、xの値が0から大きくはなれている場合は、expのかわりにexp_XOffsetを用いた方が安定したfittingが出来ます。
cursorを使用した場合の図
(2) ユーザー定義関数を用いたFitting
IGORに備わっているFit関数は、限られています。ユーザー定義の関数でfittingを行って見ましょう。
関数を、y = Gmax * (x-Vrev)/(1 + exp(-(x-Vhalf)/Vs)) と定義し、ダミーのデータを作ります。
make/o/n=16/d a
setscale/P x -100, 10, "mV", a
a=3*(x-50)/(1+exp(-(x+10)/7))+enoise(10)
=== 古いバージョン (Version 4より前;現在でも使用可) ===
関数には4個のパラメータが含まれています。ユーザー適宜のfittingは、このパラメータを含むwaveを関数に渡し、それらを初期値として用いて、fittingを行います。したがって、まずパラメータの初期値を含むwave paramを作ります。
make/n=4/d param={1, 10, -10, 3}
{ }の中で初期値を設定しています。次にProcedure Windowを開いて関数 ivを定義します。
Function iv(pa, x)
wave pa
variable x
return pa[0]*(x-pa[1])/( 1 + exp(- (x- pa[2])/pa[3]))
end
メニューでAnalysis -> Curve FittingのDialogを開きます。Funcitonの選択のなかにivがあるはずです。ivを選ぶことと、Coefficientsでparamを選択すること以外は、ビルトイン関数の場合と変わりありません。うまくfittingがいかない場合は、もともと式が間違えている可能性、あるいは初期値がまずい場合があります。出来るだけ初期値は予想される値を丁寧に入れたほうが無難です。
=== バージョン4以降 ===
メニューでAnalysis -> Curve FittingのDialogを開きます。
Function and Dataのタブを開きます。
Y Dataには、fitするもとのWaveの名前を入れます。
X Dataは、通常_calculated_でよいはずです。
New Fit Functionボタンをクリックして、関数定義Dialogを開きます。
関数に名前をつけます(ここではivとしておきます)。
fitするパラメータをFit Coefficientsのところに順番に入れていきます。
(これらのパラメータの名前の付け方が自由になったのが、古いバージョンとの違いです)。
ここでは、Gmax、Vrev、Vhalf、Vsの4つです。
Independent Variableには、xを入れます。
Fit Functionには、
f(x) = Gmax * (x-Vrev)/(1 + exp(-(x-Vhalf)/Vs))
と定義します。
Test Compileで成功すれば、Save Fit Function Nowボタンをクリックして、Dialogを閉じます。
新しく定義した関数は、Procedure Windowに保存されています。
次に、Coefficientsタブを開きます。
パラメータをwaveの名前を入れます。_default_であれば、自動的にWaveが作成されます。
各パラメータのだいたいの値を入れます。
これで準備完了。Do Itボタンをクリックすれば、fittingが出来るはずです。
なおこの例は、電位依存性ナトリウムチャネルの測定値から活性化に関するパラメータを用いるときに用いるfittingです。