Skip to content

Commit

Permalink
mtk cases added
Browse files Browse the repository at this point in the history
  • Loading branch information
ivborissov committed Jul 22, 2024
1 parent 47c48a1 commit c304ba4
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 34 deletions.
61 changes: 36 additions & 25 deletions cases/mtk/nameless.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,20 @@
This code was generated by heta-compiler
=#
function get_MTKmodel()
### Define independent and dependent variables


@variables t
__ruleVariables__ = @variables comp4(t) s1(t) s2(t) s3(t) s4(t) s5(t) r1(t) r2(t) r3(t) p1(t) s6(t) s7(t) s8(t) s9(t) s10(t) r4(t) r5(t)
__dynamicVariables__ = @variables comp3(t) _s1_(t) _s2_(t) _s6_(t) _s7_(t) _s8_(t)

__ruleVariables__ = @variables comp4(t) s1(t) s2(t) s3(t) s4(t) s5(t) r1(t) r2(t) r3(t) p1(t) s6(t) s7(t) s8(t) s9(t) s10(t) r4(t) r5(t) s11(t) s12(t) r6(t)
__dynamicVariables__ = @variables comp3(t) _s1_(t) _s2_(t) _s6_(t) _s7_(t) _s8_(t) _s12_(t)
### Define potential algebraic variables

### Define parameters (constants and statics)
__constParameters__ = @parameters k1 k2 k3 k4 k5 k6
__staticParameters__ = @parameters comp1 comp2 _s3_ _s4_ _s9_

__constParameters__ = @parameters k1 k2 k3 k4 k5 k6 s11_0 s12_0 k7
__staticParameters__ = @parameters comp1 comp2 _s3_ _s4_ _s9_ _s11_
### Define an operator for the differentiation w.r.t. time
__D__ = Differential(t)

### ODE Equations ###
__eqs__ = [
# extended rules
Expand All @@ -37,31 +36,38 @@ function get_MTKmodel()
s10 ~ 0e+0,
r4 ~ k5 * s6,
r5 ~ k6 * s9,

s11 ~ _s11_/ comp1,
s12 ~ _s12_/ comp1,
r6 ~ k7 * s11 * comp1,

# ODEs
__D__(comp3) ~ -p1, # dcomp3_/dt
__D__(_s1_) ~ -r1, # ds1_/dt
__D__(_s2_) ~ 2*r1-r3, # ds2_/dt
__D__(_s6_) ~ -r4, # ds6_/dt
__D__(_s7_) ~ r4, # ds7_/dt
__D__(_s8_) ~ r4, # ds8_/dt
__D__(comp3) ~ -p1, # dcomp3/dt
__D__(_s1_) ~ -r1, # ds1/dt
__D__(_s2_) ~ 2*r1-r3, # ds2/dt
__D__(_s6_) ~ -r4, # ds6/dt
__D__(_s7_) ~ r4, # ds7/dt
__D__(_s8_) ~ r4, # ds8/dt
__D__(_s12_) ~ r6, # ds12/dt
]

### Continious events ###

### Discrete events ###

### Initialization ###

__constValues__ = [
k1 => 0.1,
k2 => 0.2,
k3 => 0.3,
k4 => 0.4,
k5 => 0.5,
k6 => 0.6,
s11_0 => 10,
s12_0 => 1,
k7 => 0.001,
]

__init__ = [
comp1 => 1e+0,
comp2 => 2.1,
Expand All @@ -83,8 +89,11 @@ function get_MTKmodel()
s10 => 0e+0,
r4 => k5 * s6,
r5 => k6 * s9,
s11 => s11_0,
s12 => s12_0,
r6 => k7 * s11 * comp1,
]

__amountsInit__ = [
_s1_ => s1 * comp1,
_s2_ => s2 * comp1,
Expand All @@ -94,15 +103,17 @@ function get_MTKmodel()
_s7_ => s7 * comp1,
_s8_ => s8,
_s9_ => s9,
_s11_ => s11 * comp1,
_s12_ => s12 * comp1,
]

### ODESystem definition ###
__sys__ = ODESystem(__eqs__, t, [__dynamicVariables__; __ruleVariables__], [__constParameters__; __staticParameters__],
name = :nameless,
discrete_events = [],
defaults = [__constValues__; __init__; __amountsInit__]
)

return structural_simplify(__sys__), __amountsInit__, __constValues__
end

Expand Down
26 changes: 17 additions & 9 deletions cases/mtk/run_nameless.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,23 @@ m = load_mtkmodel("$HetaSimulatorDir/cases/mtk/nameless.jl")
observed(m.sys)
equations(m.sys)

prob = ODEProblem(m.sys, m.u0map, (0.,60.), m.parammap)
prob1 = ODEProblem(m.sys, nothing, (0.,60.), [m.sys.s11_0=>1.0])
prob2 = ODEProblem(m.sys, nothing, (0.,60.), [m.sys.s11_0=>10.0])

obs = [:r4, :_s1_, :comp1]
# check if obs are present in sys
saved_values = SavedValues(Float64, Vector{Float64})
saved_fun = (u,t,integrator) -> prob.f.observed(getproperty.((m.sys,), obs))(u, integrator.p, t)
scb = SavingCallback(saved_fun, saved_values)
obs = [:_s11_, :s11]

s = solve(prob, Tsit5(), callback=scb, save_everystep=false, save_start=false, save_end = false)
saved_values
function solve_prob(prob, obs)
# check if obs are present in sys
saved_values = SavedValues(Float64, Vector{Float64})
saved_fun = (u,t,integrator) -> prob.f.observed(getproperty.((m.sys,), obs))(u, integrator.p, t)
scb = SavingCallback(saved_fun, saved_values)

plot(HetaSimulator.DiffEqArray(saved_values.saveval, saved_values.t))
s = solve(prob, Tsit5(), callback=scb, save_everystep=false, save_start=false, save_end = false)
saved_values
end

sv1 = solve_prob(prob1, obs)
plot(HetaSimulator.DiffEqArray(sv1.saveval, sv1.t))

sv2 = solve_prob(prob2, obs)
plot(HetaSimulator.DiffEqArray(sv2.saveval, sv2.t))

0 comments on commit c304ba4

Please sign in to comment.