@@ -67,7 +67,7 @@ tspan = (0.0, 250.0);
6767u₀map = [S => 999 , I => 1 , R => 0 ]
6868parammap = [β => 0.1 / 1000 , γ => 0.01 ]
6969dprob = DiscreteProblem (js2, u₀map, tspan, parammap)
70- jprob = JumpProblem (js2, dprob, Direct (), save_positions = (false , false ), rng = rng )
70+ jprob = JumpProblem (js2, dprob, Direct (), save_positions = (false , false ), rng)
7171Nsims = 30000
7272function getmean (jprob, Nsims; use_stepper = true )
7373 m = 0.0
@@ -89,12 +89,12 @@ obs = [S2 ~ 2 * S]
8989@named js2b = JumpSystem ([j₁, j₃], t, [S, I, R], [β, γ], observed = obs)
9090js2b = complete (js2b)
9191dprob = DiscreteProblem (js2b, u₀map, tspan, parammap)
92- jprob = JumpProblem (js2b, dprob, Direct (), save_positions = (false , false ), rng = rng )
92+ jprob = JumpProblem (js2b, dprob, Direct (), save_positions = (false , false ), rng)
9393sol = solve (jprob, SSAStepper (), saveat = tspan[2 ] / 10 )
9494@test all (2 .* sol[S] .== sol[S2])
9595
9696# test save_positions is working
97- jprob = JumpProblem (js2, dprob, Direct (), save_positions = (false , false ), rng = rng )
97+ jprob = JumpProblem (js2, dprob, Direct (), save_positions = (false , false ), rng)
9898sol = solve (jprob, SSAStepper (), saveat = 1.0 )
9999@test all ((sol. t) .== collect (0.0 : tspan[2 ]))
100100
@@ -129,7 +129,7 @@ function a2!(integrator)
129129end
130130j2 = ConstantRateJump (r2, a2!)
131131jset = JumpSet ((), (j1, j2), nothing , nothing )
132- jprob = JumpProblem (prob, Direct (), jset, save_positions = (false , false ), rng = rng )
132+ jprob = JumpProblem (prob, Direct (), jset, save_positions = (false , false ), rng)
133133m2 = getmean (jprob, Nsims)
134134
135135# test JumpSystem solution agrees with direct version
@@ -141,17 +141,17 @@ maj2 = MassActionJump(γ, [I => 1], [I => -1, R => 1])
141141@named js3 = JumpSystem ([maj1, maj2], t, [S, I, R], [β, γ])
142142js3 = complete (js3)
143143dprob = DiscreteProblem (js3, u₀map, tspan, parammap)
144- jprob = JumpProblem (js3, dprob, Direct (), rng = rng )
144+ jprob = JumpProblem (js3, dprob, Direct (), rng)
145145m3 = getmean (jprob, Nsims)
146146@test abs (m - m3) / m < 0.01
147147
148148# maj jump test with various dep graphs
149149@named js3b = JumpSystem ([maj1, maj2], t, [S, I, R], [β, γ])
150150js3b = complete (js3b)
151- jprobb = JumpProblem (js3b, dprob, NRM (), rng = rng )
151+ jprobb = JumpProblem (js3b, dprob, NRM (), rng)
152152m4 = getmean (jprobb, Nsims)
153153@test abs (m - m4) / m < 0.01
154- jprobc = JumpProblem (js3b, dprob, RSSA (), rng = rng )
154+ jprobc = JumpProblem (js3b, dprob, RSSA (), rng)
155155m4 = getmean (jprobc, Nsims)
156156@test abs (m - m4) / m < 0.01
157157
@@ -161,7 +161,7 @@ maj2 = MassActionJump(γ, [S => 1], [S => -1])
161161@named js4 = JumpSystem ([maj1, maj2], t, [S], [β, γ])
162162js4 = complete (js4)
163163dprob = DiscreteProblem (js4, [S => 999 ], (0 , 1000.0 ), [β => 100.0 , γ => 0.01 ])
164- jprob = JumpProblem (js4, dprob, Direct (), rng = rng )
164+ jprob = JumpProblem (js4, dprob, Direct (), rng)
165165m4 = getmean (jprob, Nsims)
166166@test abs (m4 - 2.0 / 0.01 ) * 0.01 / 2.0 < 0.01
167167
@@ -171,7 +171,7 @@ maj2 = MassActionJump(γ, [S => 2], [S => -1])
171171@named js4 = JumpSystem ([maj1, maj2], t, [S], [β, γ])
172172js4 = complete (js4)
173173dprob = DiscreteProblem (js4, [S => 999 ], (0 , 1000.0 ), [β => 100.0 , γ => 0.01 ])
174- jprob = JumpProblem (js4, dprob, Direct (), rng = rng )
174+ jprob = JumpProblem (js4, dprob, Direct (), rng)
175175sol = solve (jprob, SSAStepper ());
176176
177177# issue #819
@@ -183,28 +183,30 @@ sol = solve(jprob, SSAStepper());
183183end
184184
185185# test if param mapper is setup correctly for callbacks
186- @parameters k1 k2 k3
187- @variables A (t) B (t)
188- maj1 = MassActionJump (k1 * k3, [0 => 1 ], [A => - 1 , B => 1 ])
189- maj2 = MassActionJump (k2, [B => 1 ], [A => 1 , B => - 1 ])
190- @named js5 = JumpSystem ([maj1, maj2], t, [A, B], [k1, k2, k3])
191- js5 = complete (js5)
192- p = [k1 => 2.0 , k2 => 0.0 , k3 => 0.5 ]
193- u₀ = [A => 100 , B => 0 ]
194- tspan = (0.0 , 2000.0 )
195- dprob = DiscreteProblem (js5, u₀, tspan, p)
196- jprob = JumpProblem (js5, dprob, Direct (), save_positions = (false , false ), rng = rng)
197- @test all (jprob. massaction_jump. scaled_rates .== [1.0 , 0.0 ])
186+ let
187+ @parameters k1 k2 k3
188+ @variables A (t) B (t)
189+ maj1 = MassActionJump (k1 * k3, [0 => 1 ], [A => - 1 , B => 1 ])
190+ maj2 = MassActionJump (k2, [B => 1 ], [A => 1 , B => - 1 ])
191+ @named js5 = JumpSystem ([maj1, maj2], t, [A, B], [k1, k2, k3])
192+ js5 = complete (js5)
193+ p = [k1 => 2.0 , k2 => 0.0 , k3 => 0.5 ]
194+ u₀ = [A => 100 , B => 0 ]
195+ tspan = (0.0 , 2000.0 )
196+ dprob = DiscreteProblem (js5, u₀, tspan, p)
197+ jprob = JumpProblem (js5, dprob, Direct (); save_positions = (false , false ), rng)
198+ @test all (jprob. massaction_jump. scaled_rates .== [1.0 , 0.0 ])
198199
199- pcondit (u, t, integrator) = t == 1000.0
200- function paffect! (integrator)
201- integrator. ps[k1] = 0.0
202- integrator. ps[k2] = 1.0
203- reset_aggregated_jumps! (integrator)
200+ pcondit (u, t, integrator) = t == 1000.0
201+ function paffect! (integrator)
202+ integrator. ps[k1] = 0.0
203+ integrator. ps[k2] = 1.0
204+ reset_aggregated_jumps! (integrator)
205+ end
206+ cb = DiscreteCallback (pcondit, paffect!)
207+ sol = solve (jprob, SSAStepper (); tstops = [1000.0 ], callback = cb)
208+ @test sol. u[end ][1 ] == 100
204209end
205- sol = solve (jprob, SSAStepper (), tstops = [1000.0 ],
206- callback = DiscreteCallback (pcondit, paffect!))
207- @test_skip sol. u[end ][1 ] == 100 # TODO : Fix mass-action jumps in JumpProcesses
208210
209211# observed variable handling
210212@variables OBS (t)
0 commit comments