#################################################################################
# SAVE THE FILE WITH THE EXTENSION .ODE PRIOR TO RUNNING IT IN XPP

# BELOW IS THE ODE FILE ACCOMPANYING THE MANUSCRIPT "POTENTIAL ROLE OF BISTABLE HISTIDINE # KINASE IN ASYMMETRIC DIVISION CYCLE OF CAULOBACTER CRESCENTUS"

#  THE PARAMETERS ARE FOR SIMULATING THE ** MUTANT F778L **

# AUTHORS: KARTIK SUBRAMANIAN	
#          MARK PAUL
#	   JOHN TYSON
# DATE:	   APRIL 2013	

##################################################################################				

###### 	DIVJ,DIVK and PLEC PARAMETERS 	###########

param divj_tot=0.5,	plec_tot=1

param ksyn_dk=0.015,	kdeg_dk=0.005,	kdeg_dkp=0.005

param kj_jk=1,	kjk_j=0.1,	ke_jkin=0.5

param kpc_ph1=5,	kph1_pc=5

param kph1_p11=5,	kp11_ph1=2.5

param kp11_pk0=0,	kpk0_p11=0

param kpk0_pk1=0.16,	kpk1_pk0=5

param kpk1_pk2=5,	kpk2_pk1=0.0016

param kpk1_pk1h=5,	kpk1h_pk1=5

param kpk1_pk2p=0.16,	kpk2p_pk1=5

param kpk2_pt2=5,	kpt2_pk2=0.15

param kpt2_pk1h=0.16,	kpk1h_pt2=5

param kpk2p_pc=5,	kpk1p_pc=5

param kpk2_pk3=0.16,	kpk3_pk2=5

param kpk3_pt3=5,	kpt3_pk3=0.15

param kpt3_pk1p=0.16,	kpk1p_pt3=5

param kpk1p_1h=5,	k1h_pk1p=0.16

param kpk3_pk2p=0.0016,	kpk2p_pk3=5

param kpk3_pk4=5,	kpk4_pk3=0.0016

param kpk4_pt4=5,	kpt4_pk4=0.15

param kp11_pt4=0.0755,	kpt4_p11=5

param kpc_ph2=0.05,	kph2_pc=5

param kph2_p22=0.0165,	kp22_ph2=1.6e-08

param kp22_pk4=0,	kpk4_p22=0

param kpt4_pk3h=0.16,	kpk3h_pt4=5

param kpk3_pk3h=5,	kpk3h_pk3=5

param kpk1p_p3h=5,	kp3h_pk1p=0.0016

param kph1_p12=1.6e-02,	kp12_ph1=1.6e-04

param kp12_pk2=0,	kpk2_p12=0

param kph2_p12=1.6,	kp12_ph2=1.6e-04

param kh1_h2=1.6e-02,	kh2_h1=1.6

######## PLED parameters #####################################

param ksyn_pld=0.01,	kdeg_pld=0.005,	kdeg_pldp=0.005

param kpk1_pk5=10,	kpk5_pk1=0.31

param kpk5_pt5=10,	kpt5_pk5=0.31

param kpt5_pk1h=10,	kpk1h_pt5=0.31

param kpk3_pk6=10,	kpk6_pk3=0.31

param kpk6_pt6=10,	kpt6_pk6=0.31

param kpt6_pk3h=10,	kpk3h_pt6=0.31

param phos_tot=0.1,	kphos_ph3=1,	kph3_phos=0.1,	ke_ph3=0.2

############ DivL and CckA params ########################

param divl_tot=1,	kbdl_dldk=1,	kudl_dldk=0.1 
 
param ksyndl=0.005,	kdegdl=0.005

####### DivL influencing CckA #####

param kcp_ck=1,	kck_cp=0.1,	Km_dl=0.75,	ccka_tot=1

### Ctra synthesis

param ksyn_ctr=0.05,	kdeg_ctr=0.02,	kdeg_ctrp=0.02

## Cpdr synthesis

param ksyn_cpd=0.05,	kdeg_cpd=0.02,	kdeg_cpdp=0.02

## CckA acting on CtrA 

param kck_ck1=1,	kck1_ck=0.1,	kck1_ct1=1,	kct1_ck1=0.1

param kct1_ck1h=1,	kck1h_ct1=0.1

param kbcp_cps=1,	kucp_cps=0.1,	ke_cps=1

## CckA acting on CpdrP 

param kck_ck2=1,	kck2_ck=0.1,	kck2_ct2=1,	kct2_ck2=0.1

param kct2_ck2h=1,	kck2h_ct2=0.1

param kbcp_cps2=1,	kucp_cps2=0.1,	ke_cps2=1

param kpld_pld2=0,	kpld2_pld=0.1,	kdeg_pld2=0.04

param kph1_ph2=10,	kph2_ph1=5e-03

################# EQUATIONS ################

dDIVKP/dt = -kdeg_dkp*DIVKP -kpc_ph1*PLEC*DIVKP + kph1_pc*PLECH1   + kpk0_pk1*PK0 -  kpk1_pk0*PK1*DIVKP + kpk1_pk2p*PK1 - kpk2p_pk1*PK2P*DIVKP + kpt2_pk1h*PT2 - kpk1h_pt2*PK1H*DIVKP + ke_jkin*JK + kpk2_pk3*PK2 - kpk3_pk2*PK3*DIVKP + kpt3_pk1p*PT3 - kpk1p_pt3*PK1P*DIVKP - kpk1p_1h*PK1p*DIVKP + k1h_pk1p*PK1H - kph2_p12*PLECH2*DIVKP + kp12_ph2*P12  + kpt4_pk3h*PT4 - kpk3h_pt4*PK3H*DIVKP + kh1_h2*PLECH1*DIVK - kh2_h1*PLECH2*DIVKP -  kph1_p11*PLECH1*DIVKP + kp11_ph1*P11  - kbdl_dldk*divl*divkp + kudl_dldk*dldk
 
dDIVK/dt = ksyn_dk - kdeg_dk*DIVK  - kpk1_pk2*PK1*DIVK + kpk2_pk1*PK2  -kj_jk*DIVJ*DIVK + kjk_j*JK + kpk3_pk2p*PK3 - kpk2p_pk3*PK2P*DIVK - kpk3_pk4*PK3*DIVK + kpk4_pk3*PK4 - kpc_ph2*PLEC*DIVK + kph2_pc*PLECH2  - kpk1p_p3h*PK1P*DIVK + kp3h_pk1p*PK3H - kph1_p12*PLECH1*DIVK + kp12_ph1*P12 + kh2_h1*PLECH2*DIVKP - kh1_h2*PLECH1*DIVK - kph2_p22*PLECH2*DIVK + kp22_ph2*P22


dDIVJ/dt = -kj_jk*DIVJ*DIVK + kjk_j*JK + ke_jkin*JK

#djk/dt =  kj_jk*DIVJ*DIVK - kjk_j*JK - ke_jkin*JK

#dPleC/dt = - kpc_ph1*PLEC*DIVKP + kph1_pc*PLECH1 + ke_phos*PLECH1 + kph2p_pc*PH2P +  kh1p_pc*PH1P - kpc_ph2*PLEC*DIVK + kph2_pc*PLECH2


dPLECH1/dt =  kpc_ph1*PLEC*DIVKP - kph1_pc*PLECH1 -kph1_p11*PLECH1*DIVKP + kp11_ph1*P11  - kph1_p12*PLECH1*DIVK + kp12_ph1*P12 + kh2_h1*PLECH2*DIVKP - kh1_h2*PLECH1*DIVK - kph1_ph2*PLECH1 + kph2_ph1*PLECH2


dP11/dt = kph1_p11*PLECH1*DIVKP- kp11_ph1*P11 + kpt4_p11*pt4 - kp11_pt4*p11 - kp11_pk0*P11 + kpk0_p11*pk0

dPK0/dt = kp11_pk0*P11 - kpk0_p11*pk0 - kpk0_pk1*PK0 + kpk1_pk0*PK1*DIVKP 

dPK1/dt =  kpk0_pk1*PK0 -  kpk1_pk0*PK1*DIVKP  - kpk1_pk2*PK1*DIVK + kpk2_pk1*PK2 - kpk1_pk2p*PK1 + kpk2p_pk1*PK2P*DIVKP -  kpk1_pk1h*PK1 + kpk1h_pk1*PK1H - kpk1_pk5*PK1*PLED +  kpk5_pk1*PK5

dP12/dt = kph1_p12*PLECH1*DIVK- kp12_ph1*P12 + kph2_p12*PLECH2*DIVKP- kp12_ph2*P12  - kp12_pk2*P12 + kpk2_p12*pk2

dPK2/dt = kpk1_pk2*PK1*DIVK - kpk2_pk1*PK2 + kp12_pk2*P12 - kpk2_p12*pk2 -kpk2_pt2*PK2 + kpt2_pk2*PT2 - kpk2_pk3*PK2 + kpk3_pk2*PK3*DIVKP 

dPT2/dt = kpk2_pt2*PK2 - kpt2_pk2*PT2 -kpt2_pk1h*PT2 + kpk1h_pt2*PK1H*DIVKP

dPK1H/dt =  kpt2_pk1h*PT2 - kpk1h_pt2*PK1H*DIVKP + kpk1_pk1h*PK1 - kpk1h_pk1*PK1H + kpk1p_1h*PK1p*DIVKP - k1h_pk1p*PK1H + kpt5_pk1h*PT5 - kpk1h_pt5*PK1H*PLEDP

dPK2P/dt = kpk1_pk2p*PK1 - kpk2p_pk1*PK2P*DIVKP - kpk2p_pc*PK2P  + kpk3_pk2p*PK3 - kpk2p_pk3*PK2P*DIVK 

#dPH2P/dt =  kpk2p_h2p*PK2P - kh2p_pk2p*PH2P - kph2p_pc*PH2P

########################################################

dPK3/dt = kpk2_pk3*PK2 - kpk3_pk2*PK3*DIVKP -  kpk3_pt3*PK3 + kpt3_pk3*PT3 - kpk3_pk2p*PK3 + kpk2p_pk3*PK2P*DIVK - kpk3_pk4*PK3*DIVK + kpk4_pk3*PK4 - kpk3_pk3h*PK3 + kpk3h_pk3*PK3H - kpk3_pk6*PK3*PLED +  kpk6_pk3*PK6

dPT3/dt = kpk3_pt3*PK3 - kpt3_pk3*PT3 + kpk1p_pt3*PK1P*DIVKP - kpt3_pk1p*PT3

dPK1P/dt = kpt3_pk1p*PT3 - kpk1p_pt3*PK1P*DIVKP -kpk1p_1h*PK1P*DIVKP + k1h_pk1p*PK1H - kpk1p_pc*PK1P - kpk1p_p3h*PK1P*DIVK +kp3h_pk1p*PK3H

#dPH1P/dt = kpk1p_h1p*PK1P - kh1p_pk1p*PH1P - kh1p_pc*PH1P

########################################################
dP22/dt = kph2_p22*PLECH2*DIVK - kp22_ph2*P22 - kp22_pk4*P22 + kpk4_p22*PK4

dPK4/dt = kpk3_pk4*PK3*DIVK - kpk4_pk3*PK4 - kpk4_pt4*PK4 + kpt4_pk4*PT4 + kp22_pk4*P22 - kpk4_p22*PK4

dPT4/dt = kpk4_pt4*PK4 - kpt4_pk4*PT4 - kpt4_p11*pt4 + kp11_pt4*P11- kpt4_pk3h*PT4 + kpk3h_pt4*PK3H*DIVKP

#################################################################

dPLECH2/dt = kpc_ph2*PLEC*DIVK - kph2_pc*PLECH2 - kph2_p22*PLECH2*DIVK + kp22_ph2*P22- kph2_p12*PLECH2*DIVKP + kp12_ph1*P12 + kh1_h2*PLECH1*DIVK - kh2_h1*PLECH2*DIVKP  +  kph1_ph2*PLECH1 - kph2_ph1*PLECH2


dPK3H/dt = kpt4_pk3h*PT4 - kpk3h_pt4*PK3H*DIVKP + kpk3_pk3h*PK3 - kpk3h_pk3*PK3H + kpk1p_p3h*PK1P*DIVK - kp3h_pk1p*PK3H + kpt6_pk3h*PT6- kpk3h_pt6*PK3H*PLEDP
################################################

dPLED/dt = ksyn_pld - kdeg_pld*PLED - kpk1_pk5*PK1*PLED + kpk5_pk1*PK5 - kpk3_pk6*PK3*PLED + kpk6_pk3*PK6 + ke_ph3*PH3

dPLEDP/dt =  - kdeg_pldp*PLEDP + kpt5_pk1h*PT5 - kpk1h_pt5*PK1H*PLEDP + kpt6_pk3h*PT6 -kpk3h_pt6*PK3H*PLEDP  - kphos_ph3*PHOS*PLEDP + kph3_phos*PH3 
#- kpld_pld2*PLEDP*PLEDP + kpld2_pld*Pled2 + kdeg_pld2*pled2

dPK5/dt =  kpk1_pk5*PK1*PLED -  kpk5_pk1*PK5 - kpk5_pt5*PK5 + kpt5_pk5*PT5

dPK6/dt =  kpk3_pk6*PK3*PLED -  kpk6_pk3*PK6 - kpk6_pt6*PK6 + kpt6_pk6*PT6

dPT5/dt = kpk5_pt5*PK5 - kpt5_pk5*PT5 - kpt5_pk1h*PT5 + kpk1h_pt5*PK1H*PLEDP

dPT6/dt = kpk6_pt6*PK6 - kpt6_pk6*PT6 - kpt6_pk3h*PT6 + kpk3h_pt6*PK3H*PLEDP

dPHOS/dt = - kphos_ph3*PHOS*PLEDP + kph3_phos*PH3 + ke_ph3*PH3
 
# dPH3/dt = kphos_ph3*PHOS*PLEDP - kph3_phos*PH3 - ke_ph3*PH3

dPled2/dt = kpld_pld2*PLEDP*PLEDP - kpld2_pld*Pled2 - kdeg_pld2*pled2



####### DivL CckA equations ######
dDIVL/dt = ksyndl - kdegdl*DIVL- kbdl_dldk*DIVL*DIVKP + kudl_dldk*DLDK 

ddldk/dt = kbdl_dldk*divl*divkp - kudl_dldk*dldk - kdegdl*Dldk 

dCTRA/dt = ksyn_ctr - kdeg_ctr*CTRA - kck_ck1*CCKAKIN*CTRA + kck1_ck*CK1 + ke_cps*CPS

dCTRAP/dt = -kdeg_ctrp*CTRAP - kbcp_cps*CCKAPHOS*CTRAP + kucp_cps*CPS + kct1_ck1h*CT1 - kck1h_ct1*CCKAKIN*CTRAP

dCCKAPHOS/dt = - kbcp_cps*CCKAPHOS*CTRAP + kucp_cps*CPS + ke_cps*CPS -kcp_ck*CCKAPHOS*(DIVL^2/(DIVL^2+km_dl^2)) + kck_cp*CCKAKIN - kbcp_cps2*CCKAPHOS*CPDRP + kucp_cps2*CPS2 + ke_cps2*CPS2

dCCKAKIN/dt = kcp_ck*CCKAPHOS*(DIVL^2/(DIVL^2+km_dl^2)) - kck_cp*CCKAKIN - kck_ck1*CCKAKIN*CTRA + kck1_ck*CK1 + kct1_ck1h*CT1 - kck1h_ct1*CCKAKIN*CTRAP  - kck_ck2*CCKAKIN*CPDR + kck2_ck*CK2 + kct2_ck2h*CT2 - kck2h_ct2*CCKAKIN*CPDRP

dCK1/dt= kck_ck1*CCKAKIN*CTRA - kck1_ck*CK1 - kck1_ct1*CK1 + kct1_ck1*CT1

dCT1/dt = kck1_ct1*CK1 - kct1_ck1*CT1 - kct1_ck1h*CT1 + kck1h_ct1*CCKAKIN*CTRAP


#dcps/dt = kbcp_cps*cckaphos*ctrap - kucp_cps*cps - ke_cps*cps

dCPDR/dt = ksyn_cpd - kdeg_cpd*CPDR - kck_ck2*CCKAKIN*CPDR + kck2_ck*CK2 + ke_cps*CPS2

dCPDRP/dt = -kdeg_cpdp*CPDRP - kbcp_cps2*CCKAPHOS*CPDRP + kucp_cps2*CPS2 + kct2_ck2h*CT2 - kck2h_ct2*CCKAKIN*CPDRP

dCK2/dt= kck_ck2*CCKAKIN*CPDR - kck2_ck*CK2 - kck2_ct2*CK2 + kct2_ck2*CT2

dCT2/dt = kck2_ct2*CK2 - kct2_ck2*CT2 - kct2_ck2h*CT2 + kck2h_ct2*CCKAKIN*CPDRP

dCPS2/dt = kbcp_cps2*CCKAPHOS*CPDRP - kucp_cps2*CPS2 - ke_cps2*CPS2

############# totals ###############################################

# pleckint = total kinase 
dPLECKINT/dt=pleckinase-PLECKINT

# plecdivk = divk bound plec
dplecdk/dt = plecdivk-plecdk

# cckakint = total ckkakinase
dcckakint/dt = cckakinase-cckakint

# divkint =  divk_p fraction
ddivkint/dt = divkpf-divkint


#### conservation rule ######

PLEC = -((PLECH1 +PK1+PK2+PK0+PK1H + PT2 +PK2P + pk3+ pt3 + pk1p +pk4 +pt4+plech2+pk3h+pk5+pt5+pk6+pt6+p11+p12+p22) - plec_tot)
aux PLEC=PLEC

jk = -(divj-divj_tot)
aux jk = jk

pleckinase=(PK0 +PK1+PK2+PK1H + PT2 +PK2P + pk3+ pt3 + pk1p +pk4 +pt4+pk3h+pk5+pt5+pk6+pt6+0.5*p11+p12+p22)
aux pleckinase=pleckinase

ph3 = -(phos-phos_tot)
aux ph3=ph3

Cps = -((Cckakin+ck1+ct1+cckaphos+ck2+ct2+cps2)-ccka_tot)
aux cps=cps

Cckakinase= (Cckakin+ck1+ct1+ck2+ct2)
aux cckakinase=cckakinase

#dldk = -(divl-divl_tot)
#aux dldk = dldk

plecdivk= (PLECH1+ P11 +PK1+PK2+PK0+PK1H+pk3+pk4+pt4+plech2+p22+p12+pt2+pt3+pk3h+pk5+pt5+pk6+pt6)
aux plecdivk=plecdivk

##############################################################################
divk_p = divkp+plech1+2*p11+2*pk0+pk1+pk2+p12+2*pt2+pk1h+pt3+pt4
aux divk_p=divk_p

divk_up = divk+plech2+2*p22+p12+2*pk4+pk2+pk3+pk3h
aux divk_up=divk_up

divkpf=divk_p/(divk_p+divk_up)
aux divkpf=divkpf

############################## INITIAL CONDITIONS #################

init DIVK=3
init DIVJ=1
init DIVL=1

###################### NUMERICS ####################################
@ total=200
# AUTO Settings
@ NTST=150, NMAX=2000, NPR=50, DS=-1e-5
@ PARMIN=0, PARMAX=1
@ AUTOXMIN=0, AUTOXMAX=1, AUTOYMIN=0, AUTOYMAX=2

done