159
159
160
160
# Test with JumpSystem.
161
161
let
162
- p = rand (rng, length (k))
163
162
@species A (t) B (t) C (t) D (t) E (t) F (t)
164
163
rxs = [Reaction (k[1 ], nothing , [A]), # 0 -> A
165
164
Reaction (k[2 ], [B], nothing ), # B -> 0
@@ -193,27 +192,29 @@ let
193
192
@test all (map (i -> typeof (equations (js)[i]) <: JumpProcesses.ConstantRateJump , cidxs))
194
193
@test all (map (i -> typeof (equations (js)[i]) <: JumpProcesses.VariableRateJump , vidxs))
195
194
196
- pars = rand (rng, length (k))
195
+ p = rand (rng, length (k))
196
+ pmap = parameters (js) .=> p
197
197
u0 = rand (rng, 2 : 10 , 6 )
198
+ u0map = unknowns (js) .=> u0
198
199
ttt = rand (rng)
199
200
jumps = Vector {Union{ConstantRateJump, MassActionJump, VariableRateJump}} (undef,
200
201
length (rxs))
201
202
202
- jumps[1 ] = MassActionJump (pars [1 ], Vector {Pair{Int, Int}} (), [1 => 1 ])
203
- jumps[2 ] = MassActionJump (pars [2 ], [2 => 1 ], [2 => - 1 ])
204
- jumps[3 ] = MassActionJump (pars [3 ], [1 => 1 ], [1 => - 1 , 3 => 1 ])
205
- jumps[4 ] = MassActionJump (pars [4 ], [3 => 1 ], [1 => 1 , 2 => 1 , 3 => - 1 ])
206
- jumps[5 ] = MassActionJump (pars [5 ], [3 => 1 ], [1 => 2 , 3 => - 1 ])
207
- jumps[6 ] = MassActionJump (pars [6 ], [1 => 1 , 2 => 1 ], [1 => - 1 , 2 => - 1 , 3 => 1 ])
208
- jumps[7 ] = MassActionJump (pars [7 ], [2 => 2 ], [1 => 1 , 2 => - 2 ])
209
- jumps[8 ] = MassActionJump (pars [8 ], [1 => 1 , 2 => 1 ], [2 => - 1 , 3 => 1 ])
210
- jumps[9 ] = MassActionJump (pars [9 ], [1 => 1 , 2 => 1 ], [1 => - 1 , 2 => - 1 , 3 => 1 , 4 => 1 ])
211
- jumps[10 ] = MassActionJump (pars [10 ], [1 => 2 ], [1 => - 2 , 3 => 1 , 4 => 1 ])
212
- jumps[11 ] = MassActionJump (pars [11 ], [1 => 2 ], [1 => - 1 , 2 => 1 ])
213
- jumps[12 ] = MassActionJump (pars [12 ], [1 => 1 , 2 => 3 , 3 => 4 ],
203
+ jumps[1 ] = MassActionJump (p [1 ], Vector {Pair{Int, Int}} (), [1 => 1 ])
204
+ jumps[2 ] = MassActionJump (p [2 ], [2 => 1 ], [2 => - 1 ])
205
+ jumps[3 ] = MassActionJump (p [3 ], [1 => 1 ], [1 => - 1 , 3 => 1 ])
206
+ jumps[4 ] = MassActionJump (p [4 ], [3 => 1 ], [1 => 1 , 2 => 1 , 3 => - 1 ])
207
+ jumps[5 ] = MassActionJump (p [5 ], [3 => 1 ], [1 => 2 , 3 => - 1 ])
208
+ jumps[6 ] = MassActionJump (p [6 ], [1 => 1 , 2 => 1 ], [1 => - 1 , 2 => - 1 , 3 => 1 ])
209
+ jumps[7 ] = MassActionJump (p [7 ], [2 => 2 ], [1 => 1 , 2 => - 2 ])
210
+ jumps[8 ] = MassActionJump (p [8 ], [1 => 1 , 2 => 1 ], [2 => - 1 , 3 => 1 ])
211
+ jumps[9 ] = MassActionJump (p [9 ], [1 => 1 , 2 => 1 ], [1 => - 1 , 2 => - 1 , 3 => 1 , 4 => 1 ])
212
+ jumps[10 ] = MassActionJump (p [10 ], [1 => 2 ], [1 => - 2 , 3 => 1 , 4 => 1 ])
213
+ jumps[11 ] = MassActionJump (p [11 ], [1 => 2 ], [1 => - 1 , 2 => 1 ])
214
+ jumps[12 ] = MassActionJump (p [12 ], [1 => 1 , 2 => 3 , 3 => 4 ],
214
215
[1 => - 1 , 2 => - 3 , 3 => - 2 , 4 => 3 ])
215
- jumps[13 ] = MassActionJump (pars [13 ], [1 => 3 , 2 => 1 ], [1 => - 3 , 2 => - 1 ])
216
- jumps[14 ] = MassActionJump (pars [14 ], Vector {Pair{Int, Int}} (), [1 => 2 ])
216
+ jumps[13 ] = MassActionJump (p [13 ], [1 => 3 , 2 => 1 ], [1 => - 3 , 2 => - 1 ])
217
+ jumps[14 ] = MassActionJump (p [14 ], Vector {Pair{Int, Int}} (), [1 => 2 ])
217
218
218
219
jumps[15 ] = ConstantRateJump ((u, p, t) -> p[15 ] * u[1 ] / (2 + u[1 ]),
219
220
integrator -> (integrator. u[1 ] -= 1 ))
@@ -230,32 +231,34 @@ let
230
231
integrator -> (integrator. u[4 ] -= 2 ; integrator. u[5 ] -= 1 ; integrator. u[6 ] += 2 ))
231
232
232
233
unknownoid = Dict (unknown => i for (i, unknown) in enumerate (unknowns (js)))
233
- jspmapper = ModelingToolkit. JumpSysMajParamMapper (js, pars)
234
+ dprob = DiscreteProblem (js, u0map, (0.0 , 10.0 ), pmap)
235
+ mtkpars = dprob. p
236
+ jspmapper = ModelingToolkit. JumpSysMajParamMapper (js, mtkpars)
234
237
symmaj = ModelingToolkit. assemble_maj (equations (js). x[1 ], unknownoid, jspmapper)
235
- maj = MassActionJump (symmaj. param_mapper (pars ), symmaj. reactant_stoch, symmaj. net_stoch,
238
+ maj = MassActionJump (symmaj. param_mapper (mtkpars ), symmaj. reactant_stoch, symmaj. net_stoch,
236
239
symmaj. param_mapper, scale_rates = false )
237
240
for i in midxs
238
- @test_broken abs (jumps[i]. scaled_rates - maj. scaled_rates[i]) < 100 * eps ()
241
+ @test abs (jumps[i]. scaled_rates - maj. scaled_rates[i]) < 100 * eps ()
239
242
@test jumps[i]. reactant_stoch == maj. reactant_stoch[i]
240
243
@test jumps[i]. net_stoch == maj. net_stoch[i]
241
244
end
242
245
for i in cidxs
243
246
crj = ModelingToolkit. assemble_crj (js, equations (js)[i], unknownoid)
244
- @test_broken isapprox (crj. rate (u0, p , ttt), jumps[i]. rate (u0, p, ttt))
245
- fake_integrator1 = (u = zeros (6 ), p = p , t = 0.0 )
246
- fake_integrator2 = deepcopy (fake_integrator1 )
247
+ @test isapprox (crj. rate (u0, mtkpars , ttt), jumps[i]. rate (u0, p, ttt))
248
+ fake_integrator1 = (u = zeros (6 ), p = mtkpars , t = 0.0 )
249
+ fake_integrator2 = (u = zeros ( 6 ), p, t = 0.0 )
247
250
crj. affect! (fake_integrator1)
248
251
jumps[i]. affect! (fake_integrator2)
249
- @test fake_integrator1 == fake_integrator2
252
+ @test fake_integrator1. u == fake_integrator2. u
250
253
end
251
254
for i in vidxs
252
255
crj = ModelingToolkit. assemble_vrj (js, equations (js)[i], unknownoid)
253
- @test_broken isapprox (crj. rate (u0, p , ttt), jumps[i]. rate (u0, p, ttt))
254
- fake_integrator1 = (u = zeros (6 ), p = p , t = 0.0 )
255
- fake_integrator2 = deepcopy (fake_integrator1 )
256
+ @test isapprox (crj. rate (u0, mtkpars , ttt), jumps[i]. rate (u0, p, ttt))
257
+ fake_integrator1 = (u = zeros (6 ), p = mtkpars , t = 0.0 )
258
+ fake_integrator2 = (u = zeros ( 6 ), p, t = 0.0 )
256
259
crj. affect! (fake_integrator1)
257
260
jumps[i]. affect! (fake_integrator2)
258
- @test fake_integrator1 == fake_integrator2
261
+ @test fake_integrator1. u == fake_integrator2. u
259
262
end
260
263
end
261
264
439
442
umean += sol (10.0 , idxs = [B1, B2, B3, C])
440
443
end
441
444
umean /= Nsims
442
- @test isapprox (umean[1 ], umean[2 ]; rtol = 1e-2 )
445
+ @test isapprox (umean[1 ], umean[2 ]; rtol = 1e-2 )
443
446
@test isapprox (umean[1 ], umean[3 ]; rtol = 1e-2 )
444
447
@test umean[4 ] == 10
445
448
end
0 commit comments