Skip to content

Commit e591d78

Browse files
committed
add tests
1 parent f2a8120 commit e591d78

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

src/reactionsystem.jl

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,9 +1297,7 @@ function Base.convert(::Type{<:ODESystem}, rs::ReactionSystem; name = nameof(rs)
12971297
eqs, sts, ps, obs, defs = addconstraints!(eqs, fullrs, ists, ispcs; remove_conserved)
12981298

12991299
# Converts expressions like mm(X,v,K) to v*X/(X+K).
1300-
expand_functions && for eq in eqs
1301-
eq.rhs = expand_registered_functions!(eq.rhs)
1302-
end
1300+
expand_functions && (eqs = [eq.lhs ~ expand_registered_functions!(eq.rhs) for eq in eqs])
13031301

13041302
ODESystem(eqs, get_iv(fullrs), sts, ps;
13051303
observed = obs,
@@ -1342,9 +1340,7 @@ function Base.convert(::Type{<:NonlinearSystem}, rs::ReactionSystem; name = name
13421340
eqs, sts, ps, obs, defs = addconstraints!(eqs, fullrs, ists, ispcs; remove_conserved)
13431341

13441342
# Converts expressions like mm(X,v,K) to v*X/(X+K).
1345-
expand_functions && for eq in eqs
1346-
eq.rhs = expand_registered_functions!(eq.rhs)
1347-
end
1343+
expand_functions && (eqs = [eq.lhs ~ expand_registered_functions!(eq.rhs) for eq in eqs])
13481344

13491345
NonlinearSystem(eqs, sts, ps;
13501346
name,
@@ -1412,8 +1408,9 @@ function Base.convert(::Type{<:SDESystem}, rs::ReactionSystem;
14121408
ps = (noise_scaling === nothing) ? ps : vcat(ps, toparam(noise_scaling))
14131409

14141410
# Converts expressions like mm(X,v,K) to v*X/(X+K).
1415-
expand_functions && for eq in eqs
1416-
eq.rhs = expand_registered_functions!(eq.rhs)
1411+
if expand_functions
1412+
eqs = [eq.lhs ~ expand_registered_functions!(eq.rhs) for eq in eqs]
1413+
noiseeqs = [expand_registered_functions!(neq) for neq in noiseeqs]
14171414
end
14181415

14191416
if any(isbc, get_states(flatrs))

test/dsl/custom_functions.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,25 @@ let
204204
v * (X^n) * ((K^n + Y^n) * log(X) - (K^n) * log(K) - (Y^n) * log(Y)) /
205205
(K^n + X^n + Y^n)^2)
206206
end
207+
208+
### Test expand_functions = true Argument ###
209+
let
210+
rn_funcs = @reaction_network rn begin
211+
mm(X1,v,K), 0 --> X1
212+
mmr(X2,v,K), 0 --> X2
213+
hill(X3,v,K,n), 0 --> X3
214+
hillr(X4,v,K,n), 0 --> X4
215+
hillar(X5,Y,v,K,n), 0 --> X5
216+
end
217+
rn_expanded = @reaction_network rn begin
218+
v*X1/(X1+K), 0 --> X1
219+
v*K/(X2+K), 0 --> X2
220+
v*(X3^n)/(X3^n+K^n), 0 --> X3
221+
v*(K^n)/(X4^n+K^n), 0 --> X4
222+
v*(X5^n)/(X5^n+Y^n+K^n), 0 --> X5
223+
end
224+
@test convert(ODESystem, rn_funcs; expand_functions = true) == convert(ODESystem, rn_expanded)
225+
@test convert(SDESystem, rn_funcs; expand_functions = true) == convert(SDESystem, rn_expanded)
226+
@test convert(NonlinearSystem, rn_funcs; expand_functions = true) == convert(NonlinearSystem, rn_expanded)
227+
@test convert(ODESystem, rn_funcs; expand_functions = false) != convert(ODESystem, rn_expanded)
228+
end

0 commit comments

Comments
 (0)