Skip to content

Commit b52449a

Browse files
committed
fix more old sde sims without seeds
1 parent 2f0b81c commit b52449a

File tree

3 files changed

+39
-23
lines changed

3 files changed

+39
-23
lines changed

test/dsl/dsl_model_construction.jl

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -124,32 +124,48 @@ let
124124

125125
for networks in identical_networks_1
126126
for factor in [1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3]
127-
u0_1 = rnd_u0(networks[1], rng; factor)
128-
p_1 = rnd_ps(networks[1], rng; factor)
129-
u0_2 = Pair.(unknowns(networks[2]), last.(u0_1))
130-
p_2 = Pair.(parameters(networks[2]), last.(p_1))
127+
u0 = rnd_u0(networks[1], rng; factor)
128+
p = rnd_ps(networks[1], rng; factor)
131129
t = rand(rng)
132130

133-
@test f_eval(networks[1], u0_1, p_1, t) f_eval(networks[2], u0_2, p_2, t)
134-
@test jac_eval(networks[1], u0_1, p_1, t) jac_eval(networks[2], u0_2, p_2, t)
135-
@test g_eval(networks[1], u0_1, p_1, t) g_eval(networks[2], u0_2, p_2, t)
131+
@test f_eval(networks[1], u0, p, t) f_eval(networks[2], u0, p, t)
132+
@test jac_eval(networks[1], u0, p, t) jac_eval(networks[2], u0, p, t)
133+
@test g_eval(networks[1], u0, p, t) g_eval(networks[2], u0, p, t)
136134
end
137135
end
138136
end
139137

140-
# Compares networks to networks written in different ways.
138+
# Compares simulations for network with different species and parameter names
141139
let
142-
identical_networks_2 = Vector{Pair}()
143-
144-
# Different parameter and variable names.
140+
# Fetches the original network, and also declares it using alternative notation.
141+
network = reaction_networks_standard[5]
145142
differently_written_5 = @reaction_network begin
146143
q, ∅ Y1
147144
(l1, l2), Y1 Y2
148145
(l3, l4), Y2 Y3
149146
(l5, l6), Y3 Y4
150147
c, Y4
148+
end
149+
150+
# Checks that the networks' functions evaluates equally for various randomised inputs.
151+
@unpack X1, X2, X3, X4, p, d, k1, k2, k3, k4, k5, k6 = network
152+
for factor in [1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3]
153+
u0_1 = Dict(rnd_u0(network, rng; factor))
154+
p_1 = Dict(rnd_ps(network, rng; factor))
155+
u0_2 = [:Y1 => u0_1[X1], :Y2 => u0_1[X2], :Y3 => u0_1[X3], :Y4 => u0_1[X4]]
156+
p_2 = [:q => p_1[p], :c => p_1[d], :l1 => p_1[k1], :l2 => p_1[k2], :l3 => p_1[k3],
157+
:l4 => p_1[k4], :l5 => p_1[k5], :l6 => p_1[k6]]
158+
t = rand(rng)
159+
160+
@test f_eval(network, u0_1, p_1, t) f_eval(differently_written_5, u0_2, p_2, t)
161+
@test jac_eval(network, u0_1, p_1, t) jac_eval(differently_written_5, u0_2, p_2, t)
162+
@test g_eval(network, u0_1, p_1, t) g_eval(differently_written_5, u0_2, p_2, t)
151163
end
152-
push!(identical_networks_2, reaction_networks_standard[5] => differently_written_5)
164+
end
165+
166+
# Compares networks to networks written in different ways.
167+
let
168+
identical_networks_2 = Vector{Pair}()
153169

154170
# Unfold reactions.
155171
differently_written_6 = @reaction_network begin
@@ -190,15 +206,13 @@ let
190206

191207
for networks in identical_networks_2
192208
for factor in [1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3]
193-
u0_1 = rnd_u0(networks[1], rng; factor)
194-
p_1 = rnd_ps(networks[1], rng; factor)
195-
u0_2 = Pair.(unknowns(networks[2]), last.(u0_1))
196-
p_2 = Pair.(parameters(networks[2]), last.(p_1))
209+
u0 = rnd_u0(networks[1], rng; factor)
210+
p = rnd_ps(networks[1], rng; factor)
197211
t = rand(rng)
198212

199-
@test f_eval(networks[1], u0_1, p_1, t) f_eval(networks[2], u0_2, p_2, t)
200-
@test jac_eval(networks[1], u0_1, p_1, t) jac_eval(networks[2], u0_2, p_2, t)
201-
@test g_eval(networks[1], u0_1, p_1, t) g_eval(networks[2], u0_2, p_2, t)
213+
@test f_eval(networks[1], u0, p, t) f_eval(networks[2], u0, p, t)
214+
@test jac_eval(networks[1], u0, p, t) jac_eval(networks[2], u0, p, t)
215+
@test g_eval(networks[1], u0, p, t) g_eval(networks[2], u0, p, t)
202216
end
203217
end
204218
end

test/model_simulation/simulate_SDEs.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,9 @@ let
131131
if nameof(rn_catalyst) != :rnc9
132132
sprob_1 = SDEProblem(rn_catalyst, u0_1, (0.0, 1.0), ps_1)
133133
sprob_2 = SDEProblem(rn_manual.f, rn_manual.g, u0_2, (0.0, 1.0), ps_2; noise_rate_prototype = rn_manual.nrp)
134-
sol1 = solve(sprob_1, ImplicitEM(); seed = rand(rng, 1:100))
135-
sol2 = solve(sprob_2, ImplicitEM(); seed = rand(rng, 1:100))
134+
seed = seed = rand(rng, 1:100)
135+
sol1 = solve(sprob_1, ImplicitEM(); seed)
136+
sol2 = solve(sprob_2, ImplicitEM(); seed)
136137
@test sol1[u0_sym] sol2.u
137138
end
138139
end

test/model_simulation/simulate_jumps.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,18 @@ let
111111
# Loops through all cases, checks that identical simulations are generated with/without Catalyst.
112112
for (rn_catalyst, rn_manual, u0_sym, ps_sym) in zip(catalyst_networks, manual_networks, u0_syms, ps_syms)
113113
for factor in [5, 50]
114+
seed = rand(rng, 1:100)
114115
u0_1 = rnd_u0_Int64(rn_catalyst, rng; n = factor)
115116
ps_1 = rnd_ps(rn_catalyst, rng; factor = factor/100.0)
116117
dprob_1 = DiscreteProblem(rn_catalyst, u0_1, (0.0, 100.0), ps_1)
117118
jprob_1 = JumpProblem(rn_catalyst, dprob_1, Direct(); rng)
118-
sol1 = solve(jprob_1, SSAStepper(); saveat = 1.0)
119+
sol1 = solve(jprob_1, SSAStepper(); seed, saveat = 1.0)
119120

120121
u0_2 = map_to_vec(u0_1, u0_sym)
121122
ps_2 = map_to_vec(ps_1, ps_sym)
122123
dprob_2 = DiscreteProblem(u0_2, (0.0, 100.0), ps_2)
123124
jprob_2 = JumpProblem(dprob_2, Direct(), rn_manual...; rng)
124-
sol2 = solve(jprob_2, SSAStepper(); saveat = 1.0)
125+
sol2 = solve(jprob_2, SSAStepper(); seed, saveat = 1.0)
125126

126127
if nameof(rn_catalyst) == :rnh7
127128
# Have spent a few hours figuring this one out. For certain seeds it actually works,

0 commit comments

Comments
 (0)