生物医学网络科学Biomedical Network Science
Example08 / 13

负自调控加快响应;不一致型 1 型前馈环产生脉冲并加速

所属专题
生物分子网络与拓扑特征
下载
Notebook · .py
  1. 简单调控 dX/dt = β − αX 与负自调控 dX/dt = β·Kn/(Kn + X^n) − αX(K = 0.5,n = 2)的上升时间比较。 两者稳态相同(调节 β 使负自调控的稳态也等于 1),比较达到稳态一半所需的时间 T_1/2。
  2. I1-FFL:X 激活 Z,同时激活 Z 的抑制物 Y;dZ/dt = β·[θ(Y < K) + (1 − θ(Y < K))/F] − αZ,F 为抑制倍数。 与“稳态相同的简单调控”比较。 输出解读:负自调控的 T_1/2 明显小于 ln2/α ≈ 0.69(K 越小、n 越大越快);I1-FFL 的 Z 先冲高后回落(脉冲),到达稳态一半的时间更短。

Output输出图

负自调控加快响应;不一致型 1 型前馈环产生脉冲并加速:输出图 1

Output文字输出

简单调控 T1/2 = 0.691(理论 ln2 = 0.693);负自调控 T1/2 = 0.147
I1-FFL:Z 峰值 = 0.501,稳态 ≈ 0.201,T1/2 = 0.107;同稳态简单调控 T1/2 = 0.691

Code代码

# (a) 简单调控 dX/dt = β − αX 与负自调控 dX/dt = β·K^n/(K^n + X^n) − αX(K = 0.5,n = 2)的上升时间比较。
#     两者稳态相同(调节 β 使负自调控的稳态也等于 1),比较达到稳态一半所需的时间 T_1/2。
# (b) I1-FFL:X 激活 Z,同时激活 Z 的抑制物 Y;dZ/dt = β·[θ(Y < K) + (1 − θ(Y < K))/F] − αZ,F 为抑制倍数。
#     与“稳态相同的简单调控”比较。
# 输出解读:负自调控的 T_1/2 明显小于 ln2/α ≈ 0.69(K 越小、n 越大越快);I1-FFL 的 Z 先冲高后回落(脉冲),到达稳态一半的时间更短。
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import brentq

alpha, dt, T = 1.0, 0.001, 6.0
t = np.arange(0, T, dt)

def half_time(x):
    return t[np.argmax(x >= 0.5 * x[-1])]

# (a) 简单调控与负自调控
X_s = 1 - np.exp(-alpha * t)                          # β = α = 1,稳态 1
K, n = 0.5, 2
beta_nar = brentq(lambda b: b * K**n / (K**n + 1.0) - alpha * 1.0, 0.1, 1e6)  # 使稳态 = 1
X_n = np.zeros_like(t)
for i in range(1, len(t)):
    x = X_n[i - 1]
    X_n[i] = x + dt * (beta_nar * K**n / (K**n + x**n) - alpha * x)
print(f"简单调控 T1/2 = {half_time(X_s):.3f}(理论 ln2 = {np.log(2):.3f});负自调控 T1/2 = {half_time(X_n):.3f}")

# (b) I1-FFL 与稳态相同的简单调控
F, K_y, beta = 5.0, 0.5, 1.0
Y = 1 - np.exp(-alpha * t)                            # Y 由 X 激活
Z = np.zeros_like(t)
for i in range(1, len(t)):
    prod = beta if Y[i - 1] < K_y else beta / F
    Z[i] = Z[i - 1] + dt * (prod - alpha * Z[i - 1])
Z_simple = (beta / F) * (1 - np.exp(-alpha * t))      # 同稳态的简单调控
print(f"I1-FFL:Z 峰值 = {Z.max():.3f},稳态 ≈ {Z[-1]:.3f},T1/2 = {half_time(Z):.3f};"
      f"同稳态简单调控 T1/2 = {half_time(Z_simple):.3f}")

fig, ax = plt.subplots(1, 2, figsize=(10, 3.5))
ax[0].plot(t, X_s, label="simple"); ax[0].plot(t, X_n, label="NAR"); ax[0].set_title("rise time")
ax[1].plot(t, Z, label="I1-FFL"); ax[1].plot(t, Z_simple, label="simple (same steady state)")
ax[1].set_title("pulse & acceleration")
for a in ax: a.set_xlabel("time"); a.legend()
plt.tight_layout(); plt.show()

Run在浏览器中运行

首次加载 Python 环境约需 20–40 秒;可以修改参数后重新运行。

负自调控加快响应;不一致型 1 型前馈环产生脉冲并加速