Skip to content

Commit 672225a

Browse files
committed
up
1 parent 7790f87 commit 672225a

File tree

2 files changed

+73
-75
lines changed

2 files changed

+73
-75
lines changed

src/dsl.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -921,12 +921,8 @@ end
921921

922922
# Recursively escape functions in the right-hand-side of an equation written using user-defined functions. Special function calls like "hill(...)" are not expanded.
923923
function escape_equation_RHS!(eqexpr::Expr)
924-
# lhs = recursive_escape_functions!(eqexpr.args[2])
925-
# eqexpr.args[2] = lhs
926-
927924
rhs = recursive_escape_functions!(eqexpr.args[3])
928925
eqexpr.args[3] = rhs
929-
930926
eqexpr
931927
end
932928

test/dsl/dsl_options.jl

Lines changed: 73 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -153,77 +153,6 @@ let
153153
@test issetequal(parameters(rn5), @parameters k B X)
154154
end
155155

156-
# Test whether user-defined functions are properly expanded in equations.
157-
let
158-
f(A, t) = 2*A*t
159-
160-
# Test user-defined function
161-
rn = @reaction_network begin
162-
@equations D(A) ~ f(A, t)
163-
end
164-
@test length(equations(rn)) == 1
165-
@test equations(rn)[1] isa Equation
166-
@species A(t)
167-
@test isequal(equations(rn)[1], D(A) ~ 2*A*t)
168-
169-
170-
hill_unregistered(A, v, K, n) = v*(A^n) / (A^n + K^n)
171-
rn2 = @reaction_network begin
172-
@parameters v K n
173-
@equations D(A) ~ hill_unregistered(A, v, K, n)
174-
end
175-
@test length(equations(rn2)) == 1
176-
@test equations(rn2)[1] isa Equation
177-
@parameters v K n
178-
@test isequal(equations(rn2)[1], D(A) ~ v*(A^n) / (A^n + K^n))
179-
180-
hill2(A, v, K, n) = v*(A^n) / (A^n + K^n)
181-
@register_symbolic hill2(A, v, K, n)
182-
# Test Catalyst function
183-
rn2r = @reaction_network begin
184-
@parameters v K n
185-
@equations D(A) ~ hill2(A, v, K, n)
186-
end
187-
@test length(equations(rn2r)) == 1
188-
@test equations(rn2r)[1] isa Equation
189-
@parameters v K n
190-
@test isequal(equations(rn2r)[1], D(A) ~ hill2(A, v, K, n))
191-
192-
193-
rn3 = @reaction_network begin
194-
@species Iapp(t)
195-
@equations begin
196-
D(A) ~ Iapp
197-
Iapp ~ f(A,t)
198-
end
199-
end
200-
@test length(equations(rn3)) == 2
201-
@test equations(rn3)[1] isa Equation
202-
@test equations(rn3)[2] isa Equation
203-
@variables Iapp(t)
204-
@test isequal(equations(rn3)[1], D(A) ~ Iapp)
205-
@test isequal(equations(rn3)[2], Iapp ~ 2*A*t)
206-
207-
@species Iapp(t) A(t)
208-
eq = [D(A) ~ Iapp, Iapp ~ f(A, t)]
209-
@named rn3_sym = ReactionSystem(eq, t)
210-
rn3_sym = complete(rn3_sym)
211-
@test isequivalent(rn3, rn3_sym)
212-
213-
214-
215-
216-
g(A, K, n) = A^n + K^n
217-
rn4 = @reaction_network begin
218-
@parameters v K n
219-
@equations D(A) ~ hill(A, v, K, n)*g(A, K, n)
220-
end
221-
@test length(equations(rn4)) == 1
222-
@test equations(rn4)[1] isa Equation
223-
@parameters v n
224-
@test isequal(Catalyst.expand_registered_functions(equations(rn4)[1]), D(A) ~ v*(A^n))
225-
end
226-
227156
# Test inferring with stoichiometry symbols and interpolation.
228157
let
229158
@parameters k g h gg X y [isconstantspecies = true]
@@ -1024,3 +953,76 @@ let
1024953
@unpack k1, A = rn3
1025954
@test isequal(rl, k1*A^2)
1026955
end
956+
957+
# Test whether user-defined functions are properly expanded in equations.
958+
let
959+
f(A, t) = 2*A*t
960+
961+
# Test user-defined function
962+
rn = @reaction_network begin
963+
@equations D(A) ~ f(A, t)
964+
end
965+
@test length(equations(rn)) == 1
966+
@test equations(rn)[1] isa Equation
967+
@species A(t)
968+
@test isequal(equations(rn)[1], D(A) ~ 2*A*t)
969+
970+
971+
# Test whether expansion happens properly for unregistered/registered functions.
972+
hill_unregistered(A, v, K, n) = v*(A^n) / (A^n + K^n)
973+
rn2 = @reaction_network begin
974+
@parameters v K n
975+
@equations D(A) ~ hill_unregistered(A, v, K, n)
976+
end
977+
@test length(equations(rn2)) == 1
978+
@test equations(rn2)[1] isa Equation
979+
@parameters v K n
980+
@test isequal(equations(rn2)[1], D(A) ~ v*(A^n) / (A^n + K^n))
981+
982+
hill2(A, v, K, n) = v*(A^n) / (A^n + K^n)
983+
@register_symbolic hill2(A, v, K, n)
984+
# Registered symbolic function should not expand.
985+
rn2r = @reaction_network begin
986+
@parameters v K n
987+
@equations D(A) ~ hill2(A, v, K, n)
988+
end
989+
@test length(equations(rn2r)) == 1
990+
@test equations(rn2r)[1] isa Equation
991+
@parameters v K n
992+
@test isequal(equations(rn2r)[1], D(A) ~ hill2(A, v, K, n))
993+
994+
995+
rn3 = @reaction_network begin
996+
@species Iapp(t)
997+
@equations begin
998+
D(A) ~ Iapp
999+
Iapp ~ f(A,t)
1000+
end
1001+
end
1002+
@test length(equations(rn3)) == 2
1003+
@test equations(rn3)[1] isa Equation
1004+
@test equations(rn3)[2] isa Equation
1005+
@variables Iapp(t)
1006+
@test isequal(equations(rn3)[1], D(A) ~ Iapp)
1007+
@test isequal(equations(rn3)[2], Iapp ~ 2*A*t)
1008+
1009+
# Test whether the DSL and symbolic ways of creating the network generate the same system
1010+
@species Iapp(t) A(t)
1011+
eq = [D(A) ~ Iapp, Iapp ~ f(A, t)]
1012+
@named rn3_sym = ReactionSystem(eq, t)
1013+
rn3_sym = complete(rn3_sym)
1014+
@test isequivalent(rn3, rn3_sym)
1015+
1016+
1017+
# Test more complicated expression involving both registered function and a user-defined function.
1018+
g(A, K, n) = A^n + K^n
1019+
rn4 = @reaction_network begin
1020+
@parameters v K n
1021+
@equations D(A) ~ hill(A, v, K, n)*g(A, K, n)
1022+
end
1023+
@test length(equations(rn4)) == 1
1024+
@test equations(rn4)[1] isa Equation
1025+
@parameters v n
1026+
@test isequal(Catalyst.expand_registered_functions(equations(rn4)[1]), D(A) ~ v*(A^n))
1027+
end
1028+

0 commit comments

Comments
 (0)