HIT 系统生物学 实验一:定量模拟生化反应 参考代码

本文介绍了如何利用Python和Matlab中的龙格-库塔算法模拟生化反应,通过米氏方程探讨底物S、酶E、中间产物ES和产物P随时间的变化,以及产物生成速率与底物浓度的关系。
摘要由CSDN通过智能技术生成

实验目的:

深入理解米氏方程

掌握使用龙格-库塔算法编程定量模拟生化反应

实验内容:

1:应用质量作用定律和原子守恒定律推导米氏方程

2:模拟仿真底物S、酶E、中间产物ES、产物P的与时间关系曲线

3:模拟仿真产物P生成速率与底物浓度之间关系曲线

定量模拟生化反应初始参数为:

k1=1000(1/秒.摩尔)=1(1/秒.毫摩尔),

k_1=1(1/秒);k2=0.05(1/秒);

E0=0.5mM(毫摩尔)=0.0005M(摩尔);

提示仿真算法采用Matlab中的龙格-库塔法ode23函数:

 原理及算法:

由质量作用定律得:

 由原子守恒定律得:

故:

其中:

 实验环境:

python3.9 matplotlib3.6.2 pycharm64

参考代码:

## funcX:计算物质X的导数
## y:物质X	t:步长	l_:传入的一系列参数
def funcP(y, t, l_):
    k2 = l_[0]
    ES = l_[1]
    return k2 * ES
def funcS(y, t, l_):
    k1 = l_[0]
    E = l_[1]
    k_1 = l_[2]
    ES = l_[3]
    return -k1 * E * y + k_1 * ES
def funcES(y, t, l_):
    k1 = l_[0]
    E = l_[1]
    S = l_[2]
    k_1 = l_[3]
    k2 = l_[4]
    return k1 * E * S - (k_1 + k2) * y
def funcE(y, t, l_):
    k1 = l_[0]
    S = l_[1]
    k_1 = l_[2]
    k2 = l_[3]
    ES = l_[4]
return -k1 * y * S + (k_1 + k2) * ES
## 龙格-库塔算法
## y:物质	x:时间 dt:
def runge_kutta(y, x, dt, f, l_):
    k1 = dt * f(y, x, l_)
    k2 = dt * f(y + 0.5 * k1, x + 0.5 * dt, l_)
    k3 = dt * f(y + 0.5 * k2, x + 0.5 * dt, l_)
    k4 = dt * f(y + k3, x + dt, l_)
    return y + (k1 + 2 * k2 + 2 * k3 + k4) / 6.
## 产物生成速率与底物浓度关系函数:
def fun(k1, k_1, k2, E, S):
return (k2 * E * S) / (S + ((k_1 + k2) / k1))
## main 函数
if __name__ == '__main__':
## 初始化各物质浓度与反应参数
    t = 0.
    dt = 0.001
    k1 = 1e3
    k_1 = 1
    k2 = 0.05
    E = 0.5e-3
    E_total = E
    P = 0.
    ES = 0.
    S = 1e-3
    Es, Ss, ESs, Ps, ts = [], [], [], [], []
##  联立迭代计算
    while t <= 300:
        P0 = runge_kutta(P, t, dt, funcP, [k2, ES])
        S0 = runge_kutta(S, t, dt, funcS, [k1, E, k_1, ES])
        ES0 = runge_kutta(ES, t, dt, funcES, [k1, E, S, k_1, k2])
        E0 = runge_kutta(E, t, dt, funcE, [k1, S, k_1, k2, ES])
        P = P0
        S = S0
        ES = ES0
        E = E0
        t += dt
        Ps.append(P)
        Ss.append(S)
        ESs.append(ES)
        Es.append(E)
        ts.append(t)
##  输出底物S、酶E、中间产物ES、产物P的与时间关系曲线
    plt.plot(ts, Ps, label='P')
    plt.plot(ts, Ss, label='S')
    plt.plot(ts, ESs, label='ES')
    plt.plot(ts, Es, label='E')
    plt.legend()
    plt.show()
##  计算输出产物P生成速率与底物浓度关系曲线
    Vs, Ss = [], []
    for i in range(5000):
        Vs.append(fun(k1, k_1, k2, E_total, i / 100000))
        Ss.append(i / 100000)
    plt.plot(Ss, Vs, label='v')
    plt.axhline(2.5 * pow(10, -5), color="red", linestyle='--')
    plt.plot([0, 0.00105], [1.25 * pow(10, -5), 1.25 * pow(10, -5)], linestyle='--', color="red")
    plt.plot([0.00105, 0.00105], [0, 1.25 * pow(10, -5)], linestyle='--', color="red")
    plt.xlim(0, 0.05)
    plt.ylim(0, 2.6e-5)
    plt.show()

实验结果:

底物S、酶E、中间产物ES、产物P的与时间关系曲线:

我们观测到S、E、ES、P与时间的关系。E与ES的总量保持不变,E浓度先减少后增加,ES与E的变化相反;P浓度不断增加,最后趋近0.001;S浓度不断降低,最后趋近0。

产物P生成速率与底物浓度之间关系曲线:

我们可以发现,在底物浓度很低时,反应速度随底物浓度的增加而急速加快,两者呈正比关系,表现为一级反应。随着底物浓度的升高,反应速度不再呈正比例加快,反应速度增加的幅度不断下降。如果继续加大底物浓度,反应速度不再增加,表现为零级反应。此时,无论底物浓度增加多大,反应速度也不再增加,酶已被底物所饱和。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值