In [1]:
import numpy as np
import pandas as pd
#import pymc as pm
#from scipy.integrate import odeint
import matplotlib.pyplot as plt
%matplotlib inline
#from mpl_toolkits.mplot3d import Axes3D
#from matplotlib import cm
#from matplotlib.ticker import LinearLocator, FormatStrFormatter
In [35]:
exp=np.genfromtxt("expdata.txt", delimiter='\t')
amp0=np.genfromtxt("amp0.txt", delimiter='\t')
iptg=exp[:,0][:,None]
tet0=exp[:,1][:,None]
MIC_exp=exp[:,2][:,None]
IND_exp=exp[:,3][:,None]
amp0=np.sort(amp0)[:,None]
constants_prob=np.array([ 0.04915429, 0.62570899, 0.3169802 , 0.64259643, 0.34806679,
0.26766727, 0.18546096, 0.14453938])
In [25]:
def lowpass(constants_prob,iptg, amp0):
bg_bla=constants_prob[0]*5000 #20/0.1 #uM/min combo of beta and gamma
laci=constants_prob[1]*50 #0.01 #uM combo of laci/kd_laci
#kd_laci=constants_prob[2]*5e-3 #7.8e-4 #uM
n_laci=constants_prob[2]*5 #2.5
kd_iptg=constants_prob[3]*50 #25 #uM
n_iptg=constants_prob[4]*5 #2
#kcat=constants_prob[6]*5e6 #2.82e5 #1/m
km=constants_prob[5]*500 #100 #uM
ktr=constants_prob[6]*1e-2 #1e3 Combo of ktr and kcat
MIC_int=constants_prob[7]*5 #amp[0,5]
bla=np.zeros(len(iptg))
for i in range(len(iptg)):
D_iptg=1+(iptg[i]/kd_iptg)**n_iptg
D_laci=1+(laci/(D_iptg))**n_laci
bla[i]=bg_bla/D_laci
amp=np.zeros((len(bla),len(amp0)))
for i in range(len(bla)):
for j in range(len(amp0)):
coeff=[-ktr,(ktr*amp0[j]-ktr*km-bla[i]),ktr*amp0[j]*km]
sol=np.roots(coeff)
if sol[0]>=0 and sol[0]<amp0[j]:
amp[i,j]=sol[0]
else:
amp[i,j]=sol[1]
#amp=amp*349.41/1000 #convert to ug/ml
return amp
amp=lowpass(constants_prob,iptg, amp0)
MIC_int=constants_prob[7]*5
MIC_mod=np.zeros(len(iptg))
for i in range(len(iptg)):
for j in range(len(amp0)):
if amp[i,j]>=MIC_int:
break
MIC_mod[i]=amp0[j]
plt.plot(iptg,MIC_exp,'ro',linewidth=2.0, label='$ MIC(exp) $',marker='s',markersize=8)
plt.plot(iptg,MIC_mod,'bo',linewidth=2.0, label='$ MIC(model) $')
plt.legend(loc='lower right');
#pd.DataFrame(np.concatenate((np.transpose([amp0]),np.transpose(amp)) , axis=1),
# columns=['$ amp \\ conc $',iptg[0],iptg[1],iptg[2],iptg[3],iptg[4],iptg[5],iptg[6],iptg[7]])
In [26]:
MIC_mod
Out[26]:
In [98]:
amp=lowpass(constants_prob,iptg, amp0)
kd_amp=0.01
n_amp=2
ampr=50
n_ampr=1
bg_tetc=500
k_tet=1
tetc=np.zeros((len(iptg),len(amp0)))
tet=np.zeros((len(iptg),len(amp0)))
for i in range(len(iptg)):
for j in range(len(amp0)):
D_amp=1+(amp[i,j]/kd_amp)**n_amp
D_ampr=1+(ampr/(D_amp))**n_ampr
tetc[i,j]=bg_tetc/D_ampr
tet[i,j]=tet0[i]*k_tet/(k_tet+tetc[i,j])
MIC_tet_mod=np.zeros(len(iptg))[:,None]
for i in range(len(iptg)):
for j in range(len(amp0)):
if tet[i,j]<=0.9:
break
MIC_tet_mod[i]=amp0[j]
amp0new=np.insert(amp0,[0,0,0],[0,0,0])[None,:]
new=np.hstack((iptg,tet0,IND_exp,tet))
new=np.vstack((amp0new,new))
pd.DataFrame(data=new)
Out[98]:
In [99]:
highpass=np.hstack((IND_exp,MIC_tet_mod))
pd.DataFrame(data=highpass)
Out[99]:
In [46]:
amp=lowpass(constants_prob,iptg, amp0)
amp0new=np.insert(amp0,[0,0,0],[0,0,0])[None,:]
new=np.hstack((iptg,tet0,MIC_exp,amp))
new=np.vstack((amp0new,new))
pd.DataFrame(data=new)
Out[46]:
In [ ]:
plt.semilogx(amp0,amp[0],color='r',linewidth=2.0, label='IPTG= $ 0 \mu M $', basex=2)
plt.semilogx(amp0,amp[1],color='b',linewidth=2.0, label='IPTG= $ 300 \mu M $', basex=2)
plt.xlabel('amp0')
plt.ylabel('amp')
plt.legend(loc='upper left')
plt.grid(True)
In [ ]:
import plotly
plotly.tools.set_credentials_file(username='kadamkaustubh5753', api_key='9WKnfnb9ChfOTQJ2GfQc')
import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
# Read data from a csv
z_data = final_amp
data = [
go.Surface(
x=iptg,
y=np.log2(amp0),
z=z_data,
surfacecolor=z_data
)
]
layout = go.Layout(
title='Amp Steady state',
autosize=False,
width=500,
height=500,
margin=dict(
l=65,
r=50,
b=65,
t=90
)
)
fig = go.Figure(data=data, layout=layout)
py.iplot(fig)
In [ ]:
exp=np.array([[16,0.3],[32,5],[64,10],[128, 20],[256 ,30],[512 , 50],[1024 , 75],[2048 , 300]],dtype=int)
In [90]:
IND_exp.shape
Out[90]:
In [ ]:
amp0new
In [91]:
MIC_tet_mod.shape
Out[91]:
In [ ]:
x=amp.flatten()
x
In [39]:
pd.DataFrame(data=amp)
Out[39]:
In [40]:
pd.DataFrame(data=tet)
Out[40]:
In [ ]: