|
32 | 32 | @test length(get_unknowns(empty_network_1)) == 0
|
33 | 33 | @test length(ps) == 0
|
34 | 34 | end
|
35 |
| - |
36 |
| -# Tests creating a network and adding reactions. |
37 |
| -let |
38 |
| - unfinished_network = @reaction_network begin |
39 |
| - @parameters k0 k1 k2 k3 k4 |
40 |
| - (k1, k2), X1 ↔ X2 |
41 |
| - (k3, k4), X3 ↔ X4 |
42 |
| - end |
43 |
| - @add_reactions unfinished_network begin |
44 |
| - @parameters k0 k3 k4 k5 k6 |
45 |
| - (k3, k4), X3 ↔ X4 |
46 |
| - (k5, k6), X5 ↔ X6 |
47 |
| - end |
48 |
| - @add_reactions unfinished_network begin |
49 |
| - @parameters k0 k5 k6 k7 k8 |
50 |
| - (k5, k6), X5 ↔ X6 |
51 |
| - (k7, k8), X7 ↔ X8 |
52 |
| - end |
53 |
| - @test length(get_unknowns(unfinished_network)) == 8 |
54 |
| - @test length(get_ps(unfinished_network)) == 9 |
55 |
| -end |
56 |
| - |
57 |
| -# Compares test network to identical network constructed via @add_reactions. |
58 |
| -# @add_reactions is getting deprecated though? |
59 |
| -let |
60 |
| - identical_networks = Vector{Pair}() |
61 |
| - |
62 |
| - step_by_step_network_1 = @reaction_network rns5 begin |
63 |
| - @parameters p k1 k2 k3 k4 |
64 |
| - p, ∅ → X1 |
65 |
| - (k1, k2), X1 ⟷ X2 |
66 |
| - (k3, k4), X2 ⟷ X3 |
67 |
| - end |
68 |
| - @add_reactions step_by_step_network_1 begin |
69 |
| - @parameters k5 k6 |
70 |
| - (k5, k6), X3 ⟷ X4 |
71 |
| - end |
72 |
| - @add_reactions step_by_step_network_1 begin |
73 |
| - @parameters d |
74 |
| - d, X4 → ∅ |
75 |
| - end |
76 |
| - push!(identical_networks, reaction_networks_standard[5] => step_by_step_network_1) |
77 |
| - |
78 |
| - step_by_step_network_2 = @reaction_network rns7 begin (p1, p2, p3), ∅ → (X1, X2, X3) end |
79 |
| - @add_reactions step_by_step_network_2 begin |
80 |
| - @parameters k1 k2 k3 v1 K1 d1 d2 d3 d4 d5 |
81 |
| - (k1, k2), X1 + 2X2 ⟷ X4 |
82 |
| - (mm(X3, v1, K1), k3), X4 ⟷ X5 |
83 |
| - (d1, d2, d3, d4, d5), (X1, X2, X3, X4, X5) → ∅ |
84 |
| - end |
85 |
| - push!(identical_networks, reaction_networks_standard[7] => step_by_step_network_2) |
86 |
| - |
87 |
| - step_by_step_network_3 = @reaction_network rns10 begin |
88 |
| - @parameters p k1 k2 k3 k4 |
89 |
| - p, ∅ ⟶ X1 |
90 |
| - (k1, k2), X1 → X2 |
91 |
| - end |
92 |
| - @add_reactions step_by_step_network_3 begin |
93 |
| - @parameters p k1 k2 k3 k4 k5 k6 |
94 |
| - (k3, k4), X2 → X3 |
95 |
| - (k5, k6), X3 → X4 |
96 |
| - end |
97 |
| - @add_reactions step_by_step_network_3 begin |
98 |
| - @parameters p k1 k2 k3 k4 k5 k6 k7 k8 d |
99 |
| - (k7, k8), X4 → X5 |
100 |
| - d, X5 ⟶ ∅ |
101 |
| - end |
102 |
| - push!(identical_networks, reaction_networks_standard[10] => step_by_step_network_3) |
103 |
| - |
104 |
| - step_by_step_network_4 = @reaction_network rnh7 begin |
105 |
| - @parameters v K n k1 k2 k3 d |
106 |
| - v / 10 + hill(X1, v, K, n), |
107 |
| - ∅ → X1 + X2 |
108 |
| - end |
109 |
| - @add_reactions step_by_step_network_4 begin |
110 |
| - @parameters k1 k2 |
111 |
| - k1, X1 + X2 → X3 |
112 |
| - k2, X3 → X1 + X2 |
113 |
| - end |
114 |
| - @add_reactions step_by_step_network_4 begin |
115 |
| - @parameters k2 k3 d |
116 |
| - k3, X3 → X1 |
117 |
| - d, (X1, X2, X3) → ∅ |
118 |
| - end |
119 |
| - push!(identical_networks, reaction_networks_hill[7] => step_by_step_network_4) |
120 |
| - |
121 |
| - step_by_step_network_5 = @reaction_network rnc1 begin |
122 |
| - @parameters k1 k2 k3 k4 k5 k6 |
123 |
| - (k1, k2), X1 ↔ X2 |
124 |
| - (k3, k4), X2 ↔ X3 |
125 |
| - end |
126 |
| - @add_reactions step_by_step_network_5 begin |
127 |
| - @parameters k5 |
128 |
| - k5, X3 → X1 |
129 |
| - end |
130 |
| - @add_reactions step_by_step_network_5 begin |
131 |
| - @parameters k6 |
132 |
| - k6, X1 → X3 |
133 |
| - end |
134 |
| - push!(identical_networks, reaction_networks_constraint[1] => step_by_step_network_5) |
135 |
| - |
136 |
| - step_by_step_network_6 = @reaction_network rnc5 begin |
137 |
| - @parameters k1 k2 k3 k4 k5 k6 |
138 |
| - (k1, k2), X1 ↔ 2X2 |
139 |
| - end |
140 |
| - @add_reactions step_by_step_network_6 begin |
141 |
| - @parameters k3 k4 |
142 |
| - (k3, k4), 2X2 ↔ 3X3 |
143 |
| - end |
144 |
| - @add_reactions step_by_step_network_6 begin |
145 |
| - @parameters k5 k6 |
146 |
| - (k5, k6), 3X3 ↔ 4X4 |
147 |
| - end |
148 |
| - push!(identical_networks, reaction_networks_constraint[5] => step_by_step_network_6) |
149 |
| - |
150 |
| - step_by_step_network_7 = @reaction_network rnr3 begin |
151 |
| - @parameters k1 k2p k2pp k3p k3pp A J3 k4 m J4 |
152 |
| - k2p, Y → 0 |
153 |
| - end |
154 |
| - @add_reactions step_by_step_network_7 begin |
155 |
| - @parameters k3p k3pp A J3 k2pp |
156 |
| - (k3p + k3pp * A) / (J3 + Po), Po → P |
157 |
| - k2pp * P, Y → 0 |
158 |
| - end |
159 |
| - @add_reactions step_by_step_network_7 begin |
160 |
| - @parameters k1 |
161 |
| - k1, 0 → Y |
162 |
| - end |
163 |
| - @add_reactions step_by_step_network_7 begin |
164 |
| - @parameters k4 m J4 |
165 |
| - (k4 * m) / (J4 + P), Y + P → Y + Po |
166 |
| - end |
167 |
| - push!(identical_networks, reaction_networks_real[3] => step_by_step_network_7) |
168 |
| - |
169 |
| - @parameters k1 |
170 |
| - step_by_step_network_8 = @reaction_network rnw7 |
171 |
| - addparam!(step_by_step_network_8, k1) |
172 |
| - @add_reactions step_by_step_network_8 begin |
173 |
| - @parameters k1 |
174 |
| - k1, X1 → X2 |
175 |
| - 0, X2 → X3 |
176 |
| - end |
177 |
| - @add_reactions step_by_step_network_8 begin |
178 |
| - @parameters k2 k3 |
179 |
| - k2, X3 → X4 |
180 |
| - k3, X4 → X5 |
181 |
| - end |
182 |
| - push!(identical_networks, reaction_networks_weird[7] => step_by_step_network_8) |
183 |
| - |
184 |
| - step_by_step_network_9 = @reaction_network rnw10 |
185 |
| - @add_reactions step_by_step_network_9 begin |
186 |
| - @parameters d |
187 |
| - d, 5X1 → 4X1 |
188 |
| - end |
189 |
| - push!(identical_networks, reaction_networks_weird[10] => step_by_step_network_9) |
190 |
| - |
191 |
| - function permute_ps(pvals, rn1, rn2) |
192 |
| - ps1 = parameters(rn1) |
193 |
| - ps2 = parameters(rn2) |
194 |
| - pvals2 = similar(pvals) |
195 |
| - for (i, p) in enumerate(ps2) |
196 |
| - pidx = findfirst(isequal(p), ps1) |
197 |
| - pvals2[i] = pvals[pidx] |
198 |
| - end |
199 |
| - pvals2 |
200 |
| - end |
201 |
| - |
202 |
| - for networks in identical_networks |
203 |
| - f1 = ODEFunction(complete(convert(ODESystem, networks[1])), jac = true) |
204 |
| - f2 = ODEFunction(complete(convert(ODESystem, networks[2])), jac = true) |
205 |
| - g1 = SDEFunction(complete(convert(SDESystem, networks[1]))) |
206 |
| - g2 = SDEFunction(complete(convert(SDESystem, networks[2]))) |
207 |
| - @test networks[1] == networks[2] |
208 |
| - for factor in [1e-2, 1e-1, 1e0, 1e1] |
209 |
| - u0 = factor * rand(rng, length(get_unknowns(networks[1]))) |
210 |
| - pp = factor * rand(rng, length(get_ps(networks[1]))) |
211 |
| - |
212 |
| - # needed because this code assumes an ordering of the parameters and species... |
213 |
| - pp2 = permute_ps(pp, networks[1], networks[2]) |
214 |
| - t = rand(rng) |
215 |
| - @test all(abs.(f1(u0, pp, t) .- f2(u0, pp2, t)) .< 1000 * eps()) |
216 |
| - @test all(abs.(f1.jac(u0, pp, t) .- f2.jac(u0, pp2, t)) .< 1000 * eps()) |
217 |
| - @test all(abs.(g1(u0, pp, t) .- g2(u0, pp2, t)) .< 1000 * eps()) |
218 |
| - end |
219 |
| - end |
220 |
| -end |
0 commit comments