@@ -67,7 +67,7 @@ tspan = (0.0, 250.0);
67
67
u₀map = [S => 999 , I => 1 , R => 0 ]
68
68
parammap = [β => 0.1 / 1000 , γ => 0.01 ]
69
69
dprob = 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)
71
71
Nsims = 30000
72
72
function getmean (jprob, Nsims; use_stepper = true )
73
73
m = 0.0
@@ -89,12 +89,12 @@ obs = [S2 ~ 2 * S]
89
89
@named js2b = JumpSystem ([j₁, j₃], t, [S, I, R], [β, γ], observed = obs)
90
90
js2b = complete (js2b)
91
91
dprob = 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)
93
93
sol = solve (jprob, SSAStepper (), saveat = tspan[2 ] / 10 )
94
94
@test all (2 .* sol[S] .== sol[S2])
95
95
96
96
# 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)
98
98
sol = solve (jprob, SSAStepper (), saveat = 1.0 )
99
99
@test all ((sol. t) .== collect (0.0 : tspan[2 ]))
100
100
@@ -129,7 +129,7 @@ function a2!(integrator)
129
129
end
130
130
j2 = ConstantRateJump (r2, a2!)
131
131
jset = 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)
133
133
m2 = getmean (jprob, Nsims)
134
134
135
135
# test JumpSystem solution agrees with direct version
@@ -141,17 +141,17 @@ maj2 = MassActionJump(γ, [I => 1], [I => -1, R => 1])
141
141
@named js3 = JumpSystem ([maj1, maj2], t, [S, I, R], [β, γ])
142
142
js3 = complete (js3)
143
143
dprob = DiscreteProblem (js3, u₀map, tspan, parammap)
144
- jprob = JumpProblem (js3, dprob, Direct (), rng = rng )
144
+ jprob = JumpProblem (js3, dprob, Direct (), rng)
145
145
m3 = getmean (jprob, Nsims)
146
146
@test abs (m - m3) / m < 0.01
147
147
148
148
# maj jump test with various dep graphs
149
149
@named js3b = JumpSystem ([maj1, maj2], t, [S, I, R], [β, γ])
150
150
js3b = complete (js3b)
151
- jprobb = JumpProblem (js3b, dprob, NRM (), rng = rng )
151
+ jprobb = JumpProblem (js3b, dprob, NRM (), rng)
152
152
m4 = getmean (jprobb, Nsims)
153
153
@test abs (m - m4) / m < 0.01
154
- jprobc = JumpProblem (js3b, dprob, RSSA (), rng = rng )
154
+ jprobc = JumpProblem (js3b, dprob, RSSA (), rng)
155
155
m4 = getmean (jprobc, Nsims)
156
156
@test abs (m - m4) / m < 0.01
157
157
@@ -161,7 +161,7 @@ maj2 = MassActionJump(γ, [S => 1], [S => -1])
161
161
@named js4 = JumpSystem ([maj1, maj2], t, [S], [β, γ])
162
162
js4 = complete (js4)
163
163
dprob = 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)
165
165
m4 = getmean (jprob, Nsims)
166
166
@test abs (m4 - 2.0 / 0.01 ) * 0.01 / 2.0 < 0.01
167
167
@@ -171,7 +171,7 @@ maj2 = MassActionJump(γ, [S => 2], [S => -1])
171
171
@named js4 = JumpSystem ([maj1, maj2], t, [S], [β, γ])
172
172
js4 = complete (js4)
173
173
dprob = 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)
175
175
sol = solve (jprob, SSAStepper ());
176
176
177
177
# issue #819
@@ -183,28 +183,30 @@ sol = solve(jprob, SSAStepper());
183
183
end
184
184
185
185
# 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 ])
198
199
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
204
209
end
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
208
210
209
211
# observed variable handling
210
212
@variables OBS (t)
0 commit comments