用Python复现PLOS ONE论文分岔图的技术问题求助
复现PLOS ONE论文分岔图的问题
我正尝试复现一篇PLOS ONE论文中的分岔图,目标分岔图如下:
系统对应的微分方程为:
我的思路是绘制每个方程的零倾线,再找出不同s4(论文选定的分岔参数)值下的零倾线交点,以此复现分岔图,但目前绘制的零倾线完全没有分岔图的特征,我怀疑要么是方程用错了,要么是代码有问题。
我不确定当前的方向是否正确——是不是应该改为绘制Nanog合成速率与降解速率的零倾线,再针对多个s4值重复这个操作?
第一次尝试的代码
def os_nullcline(os): return (u * (((s1 * os**v) / ((k1 + os**v) * do)) * ((s2 * os**v) / ((k2 + os**v) * ds))))/dos def n_nullcline(n, os): return (((s4 * n**b) / (k4 + n**b)) + ((s3 * os**v) / (k3 + os**v)) + np.random.normal(0, sigma) * n)/dn # Defining values for u and v npts = 100 os_values = np.linspace(0, 4000, npts) n_values = np.linspace(0, 4000, npts) # Calculating the nullcline value os_null = os_nullcline(os_values) n_null = n_nullcline(n_values, os_values) # Plotting nullclines plt.plot(os_values, os_null, label='os nullcline', color='blue') plt.plot(n_null, n_values, label='n nullcline', color='red')
第二次尝试的代码(针对Nanog合成/降解零倾线)
后来我考虑到零倾线交点对应稳态水平,于是尝试绘制Nanog合成速率与降解速率的零倾线,但得到的图表明显不对:
import numpy as np import matplotlib.pyplot as plt def plot_nullclines(k4, b, s4, k3, s3, dn, v): n_values = np.linspace(0, 10, 100) os_values = np.linspace(0, 10, 100) # Nullcline equation 1 nullcline1 = (k4 + n_values**b) * (s4 * n_values**b) + (k3 + os_values**v) * (s3 * os_values**v) # Nullcline equation 2 nullcline2 = dn * n_values # Plotting nullclines plt.plot(n_values, nullcline1, label='Nullcline 1', color='blue') plt.plot(n_values, nullcline2, label='Nullcline 2', color='red') plt.xlabel('n') plt.ylabel('Expression level') plt.title('Nullclines of the given equations') plt.legend() plt.grid(True) plt.show() # Example usage plot_nullclines(k4=10, b=2, s4=14, k3=10, s3=0.1, dn=1, v=1)
错误的输出图:
内容的提问来源于stack exchange,提问作者jane mcgrath
相关产品推荐
相关产品推荐

