Python:如何将具有层次函数内部的 ODE 系统拟合到多个数据中

问题描述

我正在研究一些生物学数据,以使用 GFP 荧光蛋白和细胞生长数据对细菌系统的行为进行建模。基本上,它们是在 24 小时内测量的两个不同的数据集,我将它们放在两个不同的数据框中(假设名称为 fdataodata)。

现在,我有一个系统 ODE 模型,我需要适合这两个数据:

[dGFP] = a + (d + g(OD))[GFP]    #g(OD) is basically another ODE to describe the growth rate
[dOD] = m * (1 - (OD/n)) * OD    #this represents g(OD)

我编写了一个 Python 函数来对增长数据进行参数估计,如下所示:

import pandas as pd
import numpy as np
from scipy.integrate import odeint
from scipy.optimize import curve_fit

odata = df3[df3.columns[col]] #reading growth data
t = list(range(0,len(odata.index)))

def testfunc(t,k1,k2):
    
    def cell_density_model(OD,t,m,n):
        dOD = m * (1 - (OD[0]/n)) * OD[0]
        return dOD
    
    Ca0 = np.abs(odata[0])
    rates = (k1,k2)
    Casol = odeint(cell_density_model,Ca0,rates)
    return Casol[:,0]

k_fit,kcov = curve_fit(testfunc,odata)
print(k_fit)
fit = testfunc(t,k_fit[0],k_fit[1])

plt.plot(t,odata,'+',label='data')
plt.plot(t,fit,'-',label='fit')
plt.legend(loc='best')
plt.show()

我有一个不同的函数来拟合蛋白质数据(不是工作代码)。我想做的基本上是将它们整合在一起,但我现在知道该怎么做。

def fitfunc(t,xa,xd,xCa0):
    
    a = xa
    d = xd
    Ca0 = xCa0
    
    def andGate(y,t):
        
        [GFP] = y
        OD = testfunc(t,amr,amc)       #this seems problematic
        GFP_ = a - (d + OD) * GFP 
        return [GFP_]
    
    Casol = odeint(andGate,t)
    return Casol[:,0]

def modelfit(t,xd):
    return fitfunc(t,Ca0)

fdata = df2[df2.columns[col]]    #reading fluorescence data
t = list(range(0,len(fdata.index)))

Ca0 = np.abs(fdata[0])
params,cov = curve_fit(modelfit,fdata)
fit = fitfunc(t,*params,Ca0)
print(params)

plt.plot(t,fdata,'x',label='fit')
plt.legend(loc='best')
plt.show()

有谁知道如何做到这一点?我已经尝试过 scipy 的 curve_fitlmfit。我愿意使用不同的库以及 Python 来重写我的函数。任何帮助将不胜感激。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...