Skip to content

Commit 5fc3c52

Browse files
committed
started writing a script for benchmarks of the incremental KaSa implementation
1 parent 082cfd6 commit 5fc3c52

File tree

6 files changed

+1504
-0
lines changed

6 files changed

+1504
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
2+
%var: 'Na' 6.022e23 // Avogadro's [mol^-1]
3+
%var: 'V' 1.4e-15 // Cell volume [L]
4+
//
5+
%var: 'c0' 1e9 // M^-1 s^-1
6+
%var: 'c1' 224 // s^-1
7+
%var: 'c2' 9 // s^-1
8+
%var: 'c3' 0.5 // s^-1
9+
%var: 'c4' 5e-4 // s^-1
10+
%var: 'c5' 0.167 // s^-1
11+
%var: 'c6' 0.0057762265 // s^-1
12+
%var: 'c7' 0.0011552453 // s^-1
13+
//
14+
%var: 'tF' 1e-4 // telegraph factor
15+
%var: 'rF' 1000 // rna factor
16+
%var: 'pF' 1000 // protein factor
17+
18+
%var: 'l0' 'c0'/'Na'/'V'*'tF'/'pF'
19+
%var: 'l1' 'c1'*'tF'
20+
%var: 'l2' 'c2'*'tF'
21+
%var: 'l3' 'c3'*'rF'
22+
%var: 'l4' 'c4'*'rF'
23+
24+
%var: 'm0' 'c0'/'Na'/'V'*'tF'/'pF'
25+
%var: 'm1' 'c1'*'tF'
26+
%var: 'm2' 'c2'*'tF'
27+
%var: 'm3' 'c3'*'rF'
28+
%var: 'm4' 'c4'*'rF'
29+
%agent: Null()
30+
%agent: gTetR(lac1,lac2)
31+
%agent: pLacI(tet)
32+
%agent: pTetR(cI)
33+
%agent: gCI(tet1,tet2)
34+
%agent: gLacI(cI1,cI2)
35+
%agent: mTetR()
36+
%agent: mCI()
37+
%agent: mLacI()
38+
%agent: pCI(lac)
39+
40+
%init: 1 Null()
41+
%init: 1 gTetR(lac1[1],lac2[2]),pLacI(tet[1]),pLacI(tet[2])
42+
%init: 1 gCI(tet1[1],tet2[2]),pTetR(cI[1]),pTetR(cI[2])
43+
%init: 1 gLacI(cI1[1],cI2[2]),pCI(lac[1]),pCI(lac[2])
44+
%init: 3163 mTetR()
45+
%init: 6819 mCI()
46+
%init: 129 mLacI()
47+
%init: 183453 pTetR(cI)
48+
%init: 2006198 pCI(lac)
49+
%init: 165670 pLacI(tet)
50+
51+
%var: 'k0' 'c0'/'Na'/'V'*'tF'/'pF'
52+
%var: 'k1' 'c1'*'tF'
53+
%var: 'k2' 'c2'*'tF'
54+
%var: 'k3' 'c3'*'rF'
55+
%var: 'k4' 'c4'*'rF'
56+
// working_set
57+
//00//
58+
gTetR(lac1[.],lac2[.]) , pLacI(tet[.]) <-> gTetR(lac1[1],lac2[.]),pLacI(tet[1]) @'k0', 'k1'
59+
gTetR(lac2[.],lac1[.]) , pLacI(tet[.]) <-> gTetR(lac2[1],lac1[.]),pLacI(tet[1]) @'k0', 'k1'
60+
61+
gTetR(lac1[_],lac2[.]) , pLacI(tet[.]) <-> gTetR(lac1[_],lac2[1]),pLacI(tet[1]) @'k0', 'k2'
62+
63+
gTetR(lac2[_],lac1[.]) , pLacI(tet[.]) <-> gTetR(lac2[_],lac1[1]),pLacI(tet[1]) @'k0', 'k2'
64+
65+
gTetR(lac1[.],lac2[.]),. -> gTetR(lac1[.],lac2[.]) , mTetR() @'k3'
66+
//05//
67+
gTetR(lac1[_]),. -> gTetR(lac1[_]) , mTetR() @'k4'
68+
69+
gTetR(lac2[_]),. -> gTetR(lac2[_]) , mTetR() @'k4'
70+
71+
mTetR(),. -> mTetR() , pTetR(cI[.]) @'c5'/'rF'*'pF'
72+
73+
mTetR() , Null() -> .,Null() @'c6'{0}
74+
pTetR(cI[.]) , Null() -> .,Null() @'c7'{0}
75+
//10//
76+
77+
gCI(tet1[.],tet2[.]) , pTetR(cI[.]) <-> gCI(tet1[1],tet2[.]),pTetR(cI[1]) @'l0', 'l1'
78+
79+
gCI(tet2[.],tet1[.]) , pTetR(cI[.]) <-> gCI(tet2[1],tet1[.]),pTetR(cI[1]) @'l0', 'l1'
80+
81+
gCI(tet1[_],tet2[.]) , pTetR(cI[.]) <-> gCI(tet1[_],tet2[1]),pTetR(cI[1]) @'l0', 'l2'
82+
83+
gCI(tet2[_],tet1[.]) , pTetR(cI[.]) <-> gCI(tet2[_],tet1[1]),pTetR(cI[1]) @'l0', 'l2'
84+
gCI(tet1[.],tet2[.]),. -> gCI(tet1[.],tet2[.]) ,mCI() @'l3'
85+
//15//
86+
gCI(tet1[_]),. -> gCI(tet1[_]) , mCI() @'l4'
87+
gCI(tet2[_]),. -> gCI(tet2[_]) , mCI() @'l4'
88+
89+
mCI(),. -> mCI() , pCI(lac[.]) @'c5'/'rF'*'pF'
90+
91+
mCI() , Null() -> .,Null() @'c6'{0}
92+
pCI(lac[.]) , Null() -> .,Null() @'c7'{0}
93+
//20//
94+
gLacI(cI1[.],cI2[.]) , pCI(lac[.]) <-> gLacI(cI1[1],cI2[.]),pCI(lac[1]) @'m0','m1'
95+
96+
gLacI(cI2[.],cI1[.]) , pCI(lac[.]) <-> gLacI(cI2[1],cI1[.]),pCI(lac[1]) @'m0','m1'
97+
98+
gLacI(cI1[_],cI2[.]) , pCI(lac[.]) <-> gLacI(cI1[_],cI2[1]),pCI(lac[1]) @'m0','m2'
99+
100+
gLacI(cI2[_],cI1[.]) , pCI(lac[.]) <-> gLacI(cI2[_],cI1[1]),pCI(lac[1]) @'m0','m2'
101+
102+
gLacI(cI1[.],cI2[.]),. -> gLacI(cI1[.],cI2[.]) , mLacI() @ 'm3'
103+
//25//
104+
gLacI(cI1[_]),. -> gLacI(cI1[_]), mLacI() @'m4'
105+
106+
gLacI(cI2[_]),. -> gLacI(cI2[_]) , mLacI() @'m4'
107+
108+
mLacI(),. -> mLacI() , pLacI(tet[.]) @'c5'/'rF'*'pF'
109+
mLacI() , Null() -> .,Null() @'c6'{0}
110+
pLacI(tet[.]) , Null() -> .,Null() @'c7'{0}
111+
//30//
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/////////////////////
2+
// stories
3+
4+
%var: 'cflow' 0
5+
%mod: [true] do $TRACK 'sos recruited' [true];
6+
%mod: ('sos recruited' - 'cflow' = 10 ) do ($TRACK 'sos recruited' [false];$STOP;)
7+
8+
9+
//////////////////////////////////////////////////////////////////////////////
10+
// agent interfaces
11+
12+
13+
%agent: EGF(r)
14+
%agent: EGFR(CR,C,N,L,Y1016{u p},Y1092{u p},Y1172{u p})
15+
%agent: SoS(PR,S{u p})
16+
%agent: Shc(Y{u p},PTB{u p})
17+
%agent: Grb2(SH3c,SH3n,SH2{u p})
18+
19+
20+
21+
22+
//------------------------------------------------------------------------------
23+
// "mad computer scientist" rate constants
24+
25+
%var: 'k_on' 1
26+
%var: 'k_cat' 1
27+
%var: 'k_off' 1
28+
29+
//------------------------------------------------------------------------------
30+
// more reasonable rate constants
31+
32+
// %var: 'k_on K' 0.01 # molecule^-1 s^-1
33+
// %var: 'k_off K' 2.5 # s^-1
34+
// %var: 'k_cat K' 1 # s^-1
35+
36+
//////////////////////////////////////////////////////////////////////////////
37+
// initial mixture
38+
39+
%init: 10 EGF(r)
40+
%init: 10 EGFR(CR,C,N,L,Y1016{u},Y1092{u},Y1172{u})
41+
%init: 20 SoS(PR,S{u})
42+
%init: 16 Shc(Y{u},PTB{u})
43+
%init: 10 Grb2(SH3c,SH3n,SH2{u})
44+
45+
//////////////////////////////////////////////////////////////////////////////
46+
// observables
47+
48+
%obs: 'long' |Shc(PTB[_],Y[1]),Grb2(SH2[1],SH3n[2]),SoS(PR[2])|
49+
%obs: 'short' |EGFR(Y1092{p}[2]),Grb2(SH2[2],SH3n[1]),SoS(PR[1])|
50+
%var: 'sos recruited' |Grb2(SH2[_],SH3n[2]),SoS(PR[2])|
51+
52+
53+
//////////////////////////////////////////////////////////////////////////////
54+
// rules for "Sos recruitment"
55+
// working_set
56+
//00//
57+
'EGFR.EGFR'//rule1//
58+
EGF(r[2]), EGFR(L[2],CR[.],N[.],C[.]), EGF(r[3]), EGFR(L[3],CR[.],N[.],C[.]) ->//rule1//
59+
EGF(r[2]), EGFR(L[2],CR[1],N[.],C[.]), EGF(r[3]), EGFR(L[3],CR[1],N[.],C[.]) @ 'k_on'/2//rule1//
60+
'EGFR/EGFR'//rule2//
61+
EGF(r[2]), EGFR(L[2],CR[1],N[.],C[.]), EGF(r[3]), EGFR(L[3],CR[1],N[.],C[.]) ->//rule2//
62+
EGF(r[2]), EGFR(L[2],CR[.],N[.],C[.]), EGF(r[3]), EGFR(L[3],CR[.],N[.],C[.]) @ 'k_off'/2//rule2//
63+
64+
'EGF.EGFR' EGF(r[.]), EGFR(L[.],CR[.]) -> EGF(r[1]), EGFR(L[1],CR[.]) @ 'k_on'
65+
'EGF/EGFR' EGF(r[1]), EGFR(L[1],CR[.]) -> EGF(r[.]), EGFR(L[.],CR[.]) @ 'k_off'
66+
'Shc.Grb2' Shc(Y[.]{p}), Grb2(SH2[.]) -> Shc(Y[1]{p}), Grb2(SH2[1]) @ 5*'k_on'
67+
//05//
68+
'Shc/Grb2' Shc(Y{p}[1]), Grb2(SH2[1]) -> Shc(Y{p}[.]), Grb2(SH2[.]) @ 'k_off'
69+
'EGFR.Grb2' EGFR(Y1092{p}[.]), Grb2(SH2[.]) -> EGFR(Y1092{p}[1]), Grb2(SH2[1]) @ 'k_on'
70+
'EGFR/Grb2' EGFR(Y1092{p}[1]), Grb2(SH2[1]) -> EGFR(Y1092{p}[.]), Grb2(SH2[.]) @ 'k_off'
71+
'EGFR.Shc' EGFR(Y1172{p}[.]), Shc(PTB[.]) -> EGFR(Y1172{p}[1]), Shc(PTB[1]) @ 'k_on'
72+
'EGFR/Shc' EGFR(Y1172{p}[1]), Shc(PTB[1]) -> EGFR(Y1172{p}[.]), Shc(PTB[.]) @ 'k_off'
73+
//10//
74+
'Grb2.SoS' Grb2(SH3n[.]), SoS(PR[.],S[.]{u}) -> Grb2(SH3n[1]), SoS(PR[1],S[.]{u}) @ 'k_on'
75+
'Grb2/SoS' Grb2(SH3n[1]), SoS(PR[1]) -> Grb2(SH3n[.]), SoS(PR[.]) @ 'k_off'
76+
'EGFR.int' EGFR(CR[1],N[.],C[.]), EGFR(CR[1],N[.],C[.]) -> EGFR(CR[1],N[2],C[.]), EGFR(CR[1],N[.],C[2]) @ 'k_on'
77+
'EGFR/int' EGFR(CR[1],N[2],C[.]), EGFR(CR[1],N[.],C[2]) -> EGFR(CR[1],N[.],C[.]), EGFR(CR[1],N[.],C[.]) @ 'k_off'
78+
'pY1092@EGFR' EGFR(N[1]), EGFR(C[1],Y1092{u}[.]) -> EGFR(N[1]), EGFR(C[1],Y1092{p}[.]) @ 'k_cat'
79+
//15//
80+
'pY1172@EGFR' EGFR(N[1]), EGFR(C[1],Y1172[.]{u}) -> EGFR(N[1]), EGFR(C[1],Y1172[.]{p}) @ 'k_cat'
81+
'uY1092@EGFR' EGFR(Y1092[.]{p}) -> EGFR(Y1092[.]{u}) @ 'k_cat'
82+
'uY1172@EGFR' EGFR(Y1172{p}[.]) -> EGFR(Y1172{u}[.]) @ 'k_cat'
83+
84+
'pY@Shc' EGFR(Y1172{p}[1]), Shc(PTB[1],Y{u}[.]) -> EGFR(Y1172{p}[1]), Shc(PTB[1],Y{p}[.]) @ 'k_cat'
85+
86+
'uY@Shc' Shc(Y{p}[.]) -> Shc(Y{u}[.]) @ 'k_cat'
87+
//20//

0 commit comments

Comments
 (0)