我希望重新创建this link中显示的这些图表:
我需要按正确的顺序排列它们,我也不确定每个图形需要使用的k值。 我已经尝试了几个k值,但似乎无法使其正确。我的代码如下所示。 任何帮助都会很棒,谢谢。
#define parameters
k1= np.linspace(0,1,2)
k2=1
n1=3
n2=3
K1=0.3
K2=0.3
beta1=0
beta2=0.05
x = np.linspace(0,1)
def r_inact_1loop(x,k1=1): #np.linspace(10,0,0.5)): #k1=1
return k1*x
def r_activation(x,k1=1): #np.linspace(0,1,2.5))
return k2*(beta2*K2**n2/(K2**n2+x**n2) + x**n2/(K2**n2+x**n2))*(1-x)
def r_inact_2loop(x,k1=1): #np.linspace(2.5,0,1)):
return k1*(beta1*x**n1/(K1**n1+x**n1) + K1**n1/(K1**n1+x**n1))*x
#graphs
fig = plt.figure(figsize=(16,5))
ax1 = fig.add_subplot(1,3,1)
ax2 = fig.add_subplot(1,3,2)
ax3 = fig.add_subplot(1,3,3)
ax1.set_xlabel('Fraction of activated A')
ax2.set_xlabel('Fraction of activated A')
ax3.set_xlabel('Fraction of activated A')
ax1.set_ylabel('Rate of A inactivation or activation')
ax2.set_ylabel('Rate of A inactivation or activation')
ax3.set_ylabel('Rate of A inactivation or activation')
for k in k1: #k1
ax1.plot(x, r_inact_1loop(x,k),label='in1 k1={:.1f}'.format(k))
ax1.plot(x, r_activation(x,k),label='ac k1={:.1f}'.format(k))
#ax1.legend(loc='best')
ax2.plot(x, r_inact_1loop(x,k),label='in1 k1={:.1f}'.format(k))
ax2.plot(x, r_inact_2loop(x,k),label='in2 k1={:.1f}'.format(k))
#ax2.legend(loc='best')
ax3.plot(x, r_activation(x,k),label='ac k1={:.1f}'.format(k))
ax3.plot(x, r_inact_2loop(x,k),label='in2 k1={:.1f}'.format(k))
#ax3.legend(loc='best')
plt.xlim(0,1)
plt.ylim(0,0.7)
plt.show()
答案 0 :(得分:0)
首先,您的r_activation
功能对我来说似乎不对:
def r_activation(x,k1=1): #np.linspace(0,1,2.5))
return k2*(beta2*K2**n2/(K2**n2+x**n2) + x**n2/(K2**n2+x**n2))*(1-x)
未使用参数k1
。
第二,对于第一个图,激活曲线可以由r_inact_1loop
函数生成,1-x
作为第一个参数而不是x
。
第3,我用不同的线型绘制了不同k的激活/失活曲线,以说明不同k
的影响。
k=1
ax1.plot(x, r_inact_1loop(x,k),label='in1 k1={:.1f}'.format(k), c='r')
ax1.plot(x, r_inact_1loop((1-x),k),label='ac k1={:.1f}'.format(k), c='b')
ax1.plot(x, r_inact_1loop((1-x),k*0.5),label='ac k1={:.1f}'.format(k), c='b', ls='--')
#ax1.plot(x, r_activation(x,k),label='ac k1={:.1f}'.format(k))
#ax1.legend(loc='best')
ax2.plot(x, r_inact_1loop(x,k),label='in1 k1={:.1f}'.format(k), c='r')
ax2.plot(x, r_activation(x,k),label='ac k1={:.1f}'.format(k), c='b')
#ax2.plot(x, r_inact_2loop(x,k),label='in2 k1={:.1f}'.format(k))
#ax2.legend(loc='best')
ax3.plot(x, r_inact_2loop(x,k),label='in2 k1={:.1f}'.format(k), c='r')
ax3.plot(x, r_inact_2loop(x,k*2),label='in2 k1={:.1f}'.format(k), c='r', ls='--')
ax3.plot(x, r_activation(x,k),label='ac k1={:.1f}'.format(k), c='b')
#ax3.legend(loc='best')
plt.xlim(0,1)
plt.ylim(0,1)
第4次,说第3次,原始图中的红色区域如下获得:保持激活曲线不变,并改变失活曲线的k
值,使得失活曲线和激活曲线至少拦截(因此可以双稳态)。将有一组上限和下限k
以使拦截成为可能,红色区域显示k
边界(我想我必须在数字上解决{{1}的上限和下限}})。