-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMinimalGRT.xml
126 lines (106 loc) · 5.66 KB
/
MinimalGRT.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!-- Simple discrete 2D diffusion model -->
<beast version='2.0' namespace='master:master.model:master.outputs:master.steppers'>
<run spec='Trajectory'
simulationTime='10000'
nSamples="1000">
<stepper spec='GillespieStepper'/>
<!--<stepper spec='SALStepper' stepSize="0.1" />
<stepper spec='RateEquationStepper' stepSize="0.1" />-->
<model spec='Model' id='model'>
<!-- Genes, proteins, gene-protein complexes -->
<populationType spec='PopulationType' typeName="G" dim="2 2 2 100" id="G"/>
<populationType spec='PopulationType' typeName="P" dim="2 2 2 100" id="P"/>
<populationType spec='PopulationType' typeName="GP1" dim="2 2 2 2 100" id="GP1"/>
<populationType spec='PopulationType' typeName="GP2" dim="2 2 2 2 2 100" id="GP2"/>
<!-- Spaces to be occupied by genes (SG) or proteins (SP) -->
<populationType spec='PopulationType' typeName="SG" dim="100" id="SG"/>
<populationType spec='PopulationType' typeName="SP" dim="100" id="SP"/>
<!-- Hamming distance between two vectors -->
<function spec='Function' id="HD" params="x y" value="sum(abs(x-y))"/>
<!-- The Poisson probability distribution, n outcomes given expectation lambdat -->
<function spec='Function' id="dpois" params="n lambdat" value="exp(-lambdat)*lambdat^n/n!"/>
<!-- Translation enzyme lookup: i is nucleotide, a is amino acid, returns optimal protein catalyst sequence -->
<function spec='Function' id="key" params="i a">
<![CDATA[
i==0 && a==0 ? {0,0,0}
: i==1 && a==1 ? {1,1,1}
: i==0 && a==1 ? {1,0,0}
: {0,1,1}
]]>
</function>
<!-- Replication reaction, i and j are genes, a is amino acid for protein with replicase activity
Best replicase is P[0,0,0] -->
<reaction spec='Reaction' reactionName="Replication" rate="1">
<rateMultiplier spec='RateMultiplier'>
exp(-a1-a2-a3)*dpois(HD({i1,i2,i3},{j1,j2,j3}),0.01)
</rateMultiplier>
G[i1,i2,i3,l1] + P[a1,a2,a3,l1] + SG[l1] ->
G[i1,i2,i3,l1] + P[a1,a2,a3,l1] + G[j1,j2,j3,l1]
</reaction>
<!-- Translation reactions -->
<reaction spec='Reaction' reactionName="Translation" rate="1">
<rateMultiplier spec='RateMultiplier' value="exp(-HD(key(i1,e1),{a1,a2,a3})/0.1)"/>
G[i1,i2,i3,l1] + P[a1,a2,a3,l1] + SP[l1] ->
GP1[i1,i2,i3,e1,l1] + P[a1,a2,a3,l1] + G[i1,i2,i3,l1]
</reaction>
<reaction spec='Reaction' reactionName="Translation1" rate="9">
<rateMultiplier spec='RateMultiplier' value="exp(-HD(key(i2,e2),{a1,a2,a3})/0.1)"/>
GP1[i1,i2,i3,e1,l1] + P[a1,a2,a3,l1] ->
GP2[i1,i2,i3,e1,e2,l1] + P[a1,a2,a3,l1]
</reaction>
<reaction spec='Reaction' reactionName="Translation2" rate="9">
<rateMultiplier spec='RateMultiplier' value="exp(-HD(key(i3,e3),{a1,a2,a3})/0.1)"/>
GP2[i1,i2,i3,e1,e2,l1] + P[a1,a2,a3,l1] ->
P[e1,e2,e3,l1] + P[a1,a2,a3,l1]
</reaction>
<!-- Diffusion (migration) reactions -->
<reaction spec='Reaction' reactionName="Diffusion_G" rate="0.01">
<rateMultiplier spec='RateMultiplier'>
1/exp(-i1-i2-i3)
</rateMultiplier>
<predicate spec='Predicate' value="abs(l1-l2)==1 || abs(l1-l2)==49"/>
G[i1,i2,i3,l1] + SG[l2] -> G[i1,i2,i3,l2] + SG[l1]
</reaction>
<reaction spec='Reaction' reactionName="Diffusion_P" rate="0.01">
<rateMultiplier spec='RateMultiplier'>
1/exp(-a1-a2-a3)
</rateMultiplier>
<predicate spec='Predicate' value="abs(l1-l2)==1 || abs(l1-l2)==49"/>
P[a1,a2,a3,l1] + SP[l2] -> P[a1,a2,a3,l2] + SP[l1]
</reaction>
<!-- Degradation reactions -->
<reaction spec='Reaction' reactionName="DeathToG" rate="0.01">
G[i1,i2,i3,l1] -> SG[l1]
</reaction>
<reaction spec='Reaction' reactionName="DeathToP" rate="0.01">
P[a1,a2,a3,l1] -> SP[l1]
</reaction>
</model>
<initialState spec='InitState'>
<!-- Genome space -->
<populationSize spec='PopulationSize'>
SG[i] := 50
</populationSize>
<!-- Protein space -->
<populationSize spec='PopulationSize'>
SP[i] := 50
</populationSize>
<!-- Genomes -->
<populationSize spec='PopulationSize'>
G[i1,i2,i3,l1] := 5
</populationSize>
<!-- Proteins -->
<populationSize spec='PopulationSize'>
P[a1,a2,a3,l1] := 5
</populationSize>
<!-- Genome-Protein complexes -->
<populationSize spec='PopulationSize'>
GP1[i1,i2,i3,e1,l1] := 0
</populationSize>
<populationSize spec='PopulationSize'>
GP2[i1,i2,i3,e1,e2,l1] := 0
</populationSize>
</initialState>
<output spec='JsonOutput' fileName='$(filebase)_output.json'/>
</run>
</beast>