Skip to content

Commit 716f922

Browse files
Merge pull request #67 from JuliaDiffEq/new_funcs
- Add default functions for hill and mm repressors.
2 parents ed1a0fd + 8024b0c commit 716f922

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

src/reaction_network.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,9 @@ function recursive_clean!(expr::Any)
377377
(expr.args[1] == :/) && (expr.args[3] == 1) && (return expr.args[2])
378378
haskey(funcdict, expr.args[1]) && return funcdict[expr.args[1]](expr.args[2:end])
379379
in(expr.args[1],hill_name) && return hill(expr)
380+
in(expr.args[1],hillR_name) && return hillR(expr)
380381
in(expr.args[1],mm_name) && return mm(expr)
382+
in(expr.args[1],mmR_name) && return mmR(expr)
381383
(expr.args[1] == :binomial) && (expr.args[3] == 1) && return expr.args[2]
382384
#@isdefined($(expr.args[1])) || error("Function $(expr.args[1]) not defined.")
383385
end
@@ -454,12 +456,21 @@ hill_name = Set{Symbol}([:hill, :Hill, :h, :H, :HILL])
454456
function hill(expr::Expr)
455457
return :($(expr.args[3])*($(expr.args[2])^$(expr.args[5]))/($(expr.args[4])^$(expr.args[5])+$(expr.args[2])^$(expr.args[5])))
456458
end
459+
hillR_name = Set{Symbol}([:hill_repressor, :hillr, :hillR, :HillR, :hR, :hR, :Hr, :HR, :HILLR])
460+
function hillR(expr::Expr)
461+
return :($(expr.args[3])*($(expr.args[4])^$(expr.args[5]))/($(expr.args[4])^$(expr.args[5])+$(expr.args[2])^$(expr.args[5])))
462+
end
457463

458464
#Michaelis menten function made avaiable.
459465
mm_name = Set{Symbol}([:MM, :mm, :Mm, :mM, :M, :m])
460466
function mm(expr::Expr)
461467
return :($(expr.args[3])*$(expr.args[2])/($(expr.args[4])+$(expr.args[2])))
462468
end
469+
#Michaelis menten function made avaiable.
470+
mmR_name = Set{Symbol}([:mm_repressor, :MMR, :mmr, :mmR, :MmR, :mMr, :MR, :mr, :Mr, :mR])
471+
function mmR(expr::Expr)
472+
return :($(expr.args[3])*$(expr.args[4])/($(expr.args[4])+$(expr.args[2])))
473+
end
463474

464475
#Allows the user to define new function and enable the @reaction_network macro to see them.
465476
macro reaction_func(expr)

test/func_test.jl

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,25 @@ using DiffEqBiological, StochasticDiffEq, Statistics
66

77
network1 = @reaction_network rn begin
88
hill(X,4,3,2), X + Y --> Z1
9-
3X^2+1, X + Y --> Z2
10-
exp(Y), X + Y --> Z3
9+
mm(X,4.0,3), X + Y --> Z2
10+
3X^2+1, X + Y --> Z3
11+
exp(Y), X + Y --> Z4
12+
hillR(X,2.0,3.0,2), X + Y --> Z5
13+
mmR(X,4.0,1), X + Y --> Z6
1114
end
1215
network2 = @reaction_network rn begin
1316
new_hill(X,4,3,2), X + Y --> Z1
14-
new_poly(X), X + Y --> Z2
15-
new_exp(Y), X + Y --> Z3
17+
4.0*X/(X+3), X + Y --> Z2
18+
new_poly(X), X + Y --> Z3
19+
new_exp(Y), X + Y --> Z4
20+
2.0*(3.0^2)/(3.0^2+X^2), X + Y --> Z5
21+
4.0*1/(X+1), X + Y --> Z6
1622
end
1723

1824
for i = 1:100
19-
u = 5*rand(5)
20-
du1 = 3*rand(5); du2 = du1;
21-
du1g = 2.5*rand(5,3); du2g = du1g;
25+
u = 5*rand(length(network1.syms))
26+
du1 = 3*rand(length(network1.syms)); du2 = du1;
27+
du1g = 2.5*rand(length(network1.syms),length(network1.reactions)); du2g = du1g;
2228
t = 9*rand()
2329
p = []
2430

0 commit comments

Comments
 (0)