Skip to content

Commit ec07930

Browse files
committed
test fix
1 parent 7ff2e91 commit ec07930

File tree

3 files changed

+72
-2
lines changed

3 files changed

+72
-2
lines changed

src/reactionsystem_conversions.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -788,7 +788,7 @@ function Base.convert(::Type{<:JumpSystem}, rs::ReactionSystem; name = nameof(rs
788788
# handle coupled ODEs and BC species
789789
if (PhysicalScale.ODE in unique_scales) || has_nonreactions(flatrs)
790790
odeeqs = assemble_drift(flatrs, ispcs; combinatoric_ratelaws,
791-
remove_conserved = false, physical_scales)
791+
remove_conserved = false, physical_scales, include_zero_odes = false)
792792
append!(eqs, odeeqs)
793793
eqs, us, ps, obs, defs = addconstraints!(eqs, flatrs, ists, ispcs;
794794
remove_conserved = false)

test/dsl/dsl_advanced_model_construction.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ let
391391
eq = D(V) ~ λ*V
392392
cevents = [[V ~ 2.0] => [V ~ V/2, A ~ A/2]]
393393
@named hybrid = ReactionSystem([rx, eq], t; continuous_events = cevents)
394+
hybrid = complete(hybrid)
394395
rn = @reaction_network hybrid begin
395396
@parameters λ
396397
k*V, 0 --> A

test/simulation_and_solving/hybrid_models.jl

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,73 @@ let
4040
sol = solve(jprob, Tsit5())
4141
end
4242

43-
43+
# this test requires a decision on how to handle when a user gives
44+
# an ODE for a chemical species in addition to reactions
45+
# let
46+
# seed = 1111
47+
# Random.seed!(rng, seed)
48+
# rn = @reaction_network begin
49+
# @parameters α β
50+
# β, X --> 0
51+
# β, Y --> 0
52+
# α, 0 --> Y
53+
# @equations begin
54+
# D(X) ~ α * (1 + Y)
55+
# end
56+
# end
57+
# p = (α = 6.0, β = 2.0, X₀ = 2.0, Y₀ = 1.0)
58+
# u0map = [:X => p.X₀, :Y => p.Y₀]
59+
# pmap = [:α => p.α, :β => p.β]
60+
# tspan = (0.0, 20.0)
61+
# jinputs = JumpInputs(rn, u0map, tspan, pmap)
62+
# jprob = JumpProblem(jinputs; rng, save_positions = (false, false))
63+
# times = range(0.0, tspan[2], length = 100)
64+
# Nsims = 4000
65+
# Xv = zeros(length(times))
66+
# Yv = zeros(length(times))
67+
# for n in 1:Nsims
68+
# sol = solve(jprob, Tsit5(); saveat = times, seed)
69+
# Xv .+= sol[1, :]
70+
# Yv .+= sol[2, :]
71+
# seed += 1
72+
# end
73+
# Xv ./= Nsims
74+
# Yv ./= Nsims
75+
76+
# function Yf(t, p)
77+
# local α, β, X₀, Y₀ = p
78+
# return (α / β) + (Y₀ - α / β) * exp(-β * t)
79+
# end
80+
# function Xf(t, p)
81+
# local α, β, X₀, Y₀ = p
82+
# return (α / β) + (α^2 / β^2) + α * (Y₀ - α / β) * t * exp(-β * t) +
83+
# (X₀ - α / β - α^2 / β^2) * exp(-β * t)
84+
# end
85+
# Xact = [Xf(t, p) for t in times]
86+
# Yact = [Yf(t, p) for t in times]
87+
# @test all(abs.(Xv .- Xact) .<= 0.05 .* Xv)
88+
# @test all(abs.(Yv .- Yact) .<= 0.05 .* Yv)
89+
90+
# function affect!(integ, u, p, ctx)
91+
# savevalues!(integ, true)
92+
# terminate!(integ)
93+
# nothing
94+
# end
95+
# cevents = [t ~ 0.2] => (affect!, [], [], [], nothing)
96+
# @named jsys = JumpSystem([maj, crj, vrj, eqs[1]], t, [X, Y], [α, β];
97+
# continuous_events = cevents)
98+
# jsys = complete(jsys)
99+
# tspan = (0.0, 200.0)
100+
# oprob = ODEProblem(jsys, u0map, tspan, pmap)
101+
# jprob = JumpProblem(jsys, oprob; rng, save_positions = (false, false))
102+
# Xsamp = 0.0
103+
# Nsims = 4000
104+
# for n in 1:Nsims
105+
# sol = solve(jprob, Tsit5(); saveat = tspan[2], seed)
106+
# @test sol.retcode == ReturnCode.Terminated
107+
# Xsamp += sol[1, end]
108+
# seed += 1
109+
# end
110+
# Xsamp /= Nsims
111+
# @test abs(Xsamp - Xf(0.2, p) < 0.05 * Xf(0.2, p))
112+
# end

0 commit comments

Comments
 (0)