simple_model_optimize.py
import numpy as np
import random
import matplotlib.pyplot as plt
import argparse
def modl(mr0, pr0, mb0, pb0,
a_mr, r, be_mr, a_pr, be_pr, a_leak, a_mb, k_b, be_mb, a_pb, be_pb,
dt, A, N):
dmr = a_mr * r * N - be_mr * mr0
dpr = a_pr * mr0 - be_pr * pr0
dmb = a_leak + a_mb * r * N * (k_b * A * pr0) ** 2 / (1 + (k_b * A * pr0) ** 2) - be_mb * mb0
dpb = a_pb * mb0 - be_pb * pb0
mr0 = mr0 + dmr * dt
pr0 = pr0 + dpr * dt
mb0 = mb0 + dmb * dt
pb0 = pb0 + dpb * dt
return mr0, pr0, mb0, pb0
mr = [0]
pr = [0]
mb = [0]
pb = [0]
a_mr = 0.161
r = 0.784
be_mr = 2.657
a_pr = 0.36
be_pr = 2.658
a_leak = 1.13E-16
a_mb = 5.269
k_b = 0.696
be_mb = 0.231
a_pb = 0.231
be_pb = 0.181
dt = 0.01
parser=argparse.ArgumentParser()
parser.add_argument("-A", "--AHL", dest = "AHL", help = "AHL concentration")
parser.add_argument("-D", "--DNA", dest = "DNA", help = "DNA concentration")
parser.add_argument("-T", "--TIME", dest = "TIME", help = "Calculation time")
args = parser.parse_args()
A = float(args.AHL)
N = float(args.DNA)
time = float(args.TIME)
T = np.arange(0, time, dt)
for t in T:
if t == 0:
continue
mr1, pr1, mb1, pb1 = modl(mr[-1], pr[-1], mb[-1], pb[-1],
a_mr, r, be_mr, a_pr, be_pr, a_leak, a_mb, k_b, be_mb, a_pb, be_pb,
dt, A, N)
mr.append(mr1)
pr.append(pr1)
mb.append(mb1)
pb.append(pb1)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(T, mr, "--", label = "mRNA of LuxR")
ax.plot(T, pr, "--", label = "Protein of LuxR")
ax2 = ax.twinx()
ax2.plot(T, mb, label = "mRNA of GFP", )
ax2.plot(T, pb, label = "Protein of GFP")
ax.legend(loc='upper left')
ax.grid()
ax.set_xlabel("Time(h)")
ax.set_ylabel("Concentration of LuxR($ng/ul$)")
ax2.set_ylabel("Concentration of GFP($ng/ul$)")
ax2.legend(loc='lower right')
plt.show()
import numpy as np
import random
import matplotlib.pyplot as plt
import argparse
def modl(mr0, pr0, mb0, pb0,
a_mr, r, be_mr, a_pr, be_pr, a_leak, a_mb, k_b, be_mb, a_pb, be_pb,
dt, A, N):
dmr = a_mr * r * N - be_mr * mr0
dpr = a_pr * mr0 - be_pr * pr0
dmb = a_leak + a_mb * r * N * (k_b * A * pr0) ** 2 / (1 + (k_b * A * pr0) ** 2) - be_mb * mb0
dpb = a_pb * mb0 - be_pb * pb0
mr0 = mr0 + dmr * dt
pr0 = pr0 + dpr * dt
mb0 = mb0 + dmb * dt
pb0 = pb0 + dpb * dt
return mr0, pr0, mb0, pb0
mr = [0]
pr = [0]
mb = [0]
pb = [0]
a_mr = 0.161
r = 0.784
be_mr = 2.657
a_pr = 0.36
be_pr = 2.658
a_leak = 1.13E-16
a_mb = 5.269
k_b = 0.696
be_mb = 0.231
a_pb = 0.231
be_pb = 0.181
dt = 0.01
parser=argparse.ArgumentParser()
parser.add_argument("-A", "--AHL", dest = "AHL", help = "AHL concentration")
parser.add_argument("-D", "--DNA", dest = "DNA", help = "DNA concentration")
parser.add_argument("-T", "--TIME", dest = "TIME", help = "Calculation time")
args = parser.parse_args()
A = float(args.AHL)
N = float(args.DNA)
time = float(args.TIME)
T = np.arange(0, time, dt)
for t in T:
if t == 0:
continue
mr1, pr1, mb1, pb1 = modl(mr[-1], pr[-1], mb[-1], pb[-1],
a_mr, r, be_mr, a_pr, be_pr, a_leak, a_mb, k_b, be_mb, a_pb, be_pb,
dt, A, N)
mr.append(mr1)
pr.append(pr1)
mb.append(mb1)
pb.append(pb1)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(T, mr, "--", label = "mRNA of LuxR")
ax.plot(T, pr, "--", label = "Protein of LuxR")
ax2 = ax.twinx()
ax2.plot(T, mb, label = "mRNA of GFP", )
ax2.plot(T, pb, label = "Protein of GFP")
ax.legend(loc='upper left')
ax.grid()
ax.set_xlabel("Time(h)")
ax.set_ylabel("Concentration of LuxR($ng/ul$)")
ax2.set_ylabel("Concentration of GFP($ng/ul$)")
ax2.legend(loc='lower right')
plt.show()