・酵素反応速度論的解析をする際に、モデルの式に数値を当てはめてパラメータを推定するcurve fittingをやりたかったのだけれど、KNIMEでのやり方が分からなかった。
import pandas as pd
import numpy as np
y_in = np.array(input_table_1["v"])
x_in = np.array(input_table_1["[S](uM)"])
from scipy.optimize import curve_fit
def nonlinear_fit(x,Vmax,Km):
return Vmax*x/(Km+x)
popt, pcov=curve_fit(nonlinear_fit, x_in, y_in)#popt:最適推定値,pcov:共分散
#95%信頼区間の計算
stdev = np.sqrt(np.diag(pcov))
CI95 = 1.96 * stdev
result=np.stack([popt,popt-CI95,popt+CI95])
output_table_1 = pd.DataFrame(result, index=["val","LL","UL"], columns=["Vmax","Km"])
print(output_table_1 )
・標準誤差の出し方は以下を参考にした。
・Python Scriptノードの出力では、VmaxとKmとその95%信頼区間の下限と上限を出力することにした(下図)。
・ちなみに、ダミーデータ作成の際にVmaxを1、Kmを10に設定したので、結構良い線いっている気がする。
・最終的に元データとFittingして求めた曲線をプロットして眺めてみた(下図)。
・あっているのかどうかは分からないが、それなりにそれっぽい感じになった。
終わり。