Skip to content

Commit 6edd64f

Browse files
committed
use getters
1 parent aa5c4de commit 6edd64f

File tree

2 files changed

+42
-36
lines changed

2 files changed

+42
-36
lines changed

.vscode/settings.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"cSpell.ignoreWords": [
3+
"get",
4+
"systems"
5+
]
6+
}

src/systems/reaction/reactionsystem.jl

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ function oderatelaw(rx; combinatoric_ratelaw=true)
187187
end
188188

189189
function assemble_oderhs(rs; combinatoric_ratelaws=true)
190-
sts = states(rs)
190+
sts = get_states(rs)
191191
species_to_idx = Dict((x => i for (i,x) in enumerate(sts)))
192192
rhsvec = Any[0 for i in eachindex(sts)]
193193

@@ -212,16 +212,16 @@ function assemble_drift(rs; combinatoric_ratelaws=true, as_odes=true)
212212
rhsvec = assemble_oderhs(rs; combinatoric_ratelaws=combinatoric_ratelaws)
213213
if as_odes
214214
D = Differential(get_iv(rs))
215-
eqs = [Equation(D(x),rhs) for (x,rhs) in zip(states(rs),rhsvec)]
215+
eqs = [Equation(D(x),rhs) for (x,rhs) in zip(get_states(rs),rhsvec)]
216216
else
217217
eqs = [Equation(0,rhs) for rhs in rhsvec]
218218
end
219219
eqs
220220
end
221221

222222
function assemble_diffusion(rs, noise_scaling; combinatoric_ratelaws=true)
223-
sts = states(rs)
224-
eqs = Matrix{Any}(undef, length(sts), length(equations(rs)))
223+
sts = get_states(rs)
224+
eqs = Matrix{Any}(undef, length(sts), length(get_eqs(rs)))
225225
eqs .= 0
226226
species_to_idx = Dict((x => i for (i,x) in enumerate(sts)))
227227

@@ -302,7 +302,7 @@ explicitly on the independent variable (usually time).
302302
"""
303303
function ismassaction(rx, rs; rxvars = get_variables(rx.rate),
304304
haveivdep = any(var -> isequal(get_iv(rs),var), rxvars),
305-
stateset = Set(states(rs)))
305+
stateset = Set(get_states(rs)))
306306
# if no dependencies must be zero order
307307
(length(rxvars)==0) && return true
308308
haveivdep && return false
@@ -331,7 +331,7 @@ end
331331

332332
function assemble_jumps(rs; combinatoric_ratelaws=true)
333333
meqs = MassActionJump[]; ceqs = ConstantRateJump[]; veqs = VariableRateJump[]
334-
stateset = Set(states(rs))
334+
stateset = Set(get_states(rs))
335335
#rates = []; rstoich = []; nstoich = []
336336
rxvars = []
337337
ivname = nameof(get_iv(rs))
@@ -378,10 +378,11 @@ law, i.e. for `2S -> 0` at rate `k` the ratelaw would be `k*S^2/2!`. If
378378
`combinatoric_ratelaws=false` then the ratelaw is `k*S^2`, i.e. the scaling factor is
379379
ignored.
380380
"""
381-
function Base.convert(::Type{<:ODESystem}, rs::ReactionSystem; combinatoric_ratelaws=true)
382-
eqs = assemble_drift(rs; combinatoric_ratelaws=combinatoric_ratelaws)
383-
ODESystem(eqs,get_iv(rs),states(rs),get_ps(rs),name=nameof(rs),
384-
systems=convert.(ODESystem,get_systems(rs)))
381+
function Base.convert(::Type{<:ODESystem}, rs::ReactionSystem;
382+
name=nameof(rs), combinatoric_ratelaws=true, kwargs...)
383+
eqs = assemble_drift(rs; combinatoric_ratelaws=combinatoric_ratelaws)
384+
systems = convert.(ODESystem, get_systems(rs))
385+
ODESystem(eqs, get_iv(rs), get_states(rs), get_ps(rs), name=name, systems=systems)
385386
end
386387

387388
"""
@@ -397,9 +398,11 @@ law, i.e. for `2S -> 0` at rate `k` the ratelaw would be `k*S^2/2!`. If
397398
`combinatoric_ratelaws=false` then the ratelaw is `k*S^2`, i.e. the scaling factor is
398399
ignored.
399400
"""
400-
function Base.convert(::Type{<:NonlinearSystem},rs::ReactionSystem; combinatoric_ratelaws=true)
401-
eqs = assemble_drift(rs; combinatoric_ratelaws=combinatoric_ratelaws, as_odes=false)
402-
NonlinearSystem(eqs,states(rs),get_ps(rs),name=nameof(rs),systems=convert.(NonlinearSystem,get_systems(rs)))
401+
function Base.convert(::Type{<:NonlinearSystem},rs::ReactionSystem;
402+
name=nameof(rs), combinatoric_ratelaws=true, kwargs...)
403+
eqs = assemble_drift(rs; combinatoric_ratelaws=combinatoric_ratelaws, as_odes=false)
404+
systems = convert.(NonlinearSystem, get_systems(rs))
405+
NonlinearSystem(eqs, get_states(rs), get_ps(rs), name=name, systems=systems)
403406
end
404407

405408
"""
@@ -423,7 +426,8 @@ Finally, a `Vector{Operation}` can be provided (the length must be equal to the
423426
Here the noise for each reaction is scaled by the corresponding parameter in the input vector.
424427
This input may contain repeat parameters.
425428
"""
426-
function Base.convert(::Type{<:SDESystem},rs::ReactionSystem, combinatoric_ratelaws=true; noise_scaling=nothing)
429+
function Base.convert(::Type{<:SDESystem}, rs::ReactionSystem;
430+
noise_scaling=nothing, name=nameof(rs), combinatoric_ratelaws=true, kwargs...)
427431

428432
if noise_scaling isa Vector
429433
(length(noise_scaling)!=length(equations(rs))) &&
@@ -434,19 +438,14 @@ function Base.convert(::Type{<:SDESystem},rs::ReactionSystem, combinatoric_ratel
434438
noise_scaling = fill(value(noise_scaling),length(equations(rs)))
435439
end
436440

437-
eqs = assemble_drift(rs; combinatoric_ratelaws=combinatoric_ratelaws)
438-
441+
eqs = assemble_drift(rs; combinatoric_ratelaws=combinatoric_ratelaws)
439442
noiseeqs = assemble_diffusion(rs,noise_scaling;
440443
combinatoric_ratelaws=combinatoric_ratelaws)
441-
442-
SDESystem(eqs,
443-
noiseeqs,
444-
get_iv(rs),
445-
states(rs),
446-
(noise_scaling===nothing) ?
447-
get_ps(rs) :
448-
union(get_ps(rs),toparam.(noise_scaling)),
449-
name=nameof(rs),systems=convert.(SDESystem,get_systems(rs)))
444+
systems = convert.(SDESystem, get_systems(rs))
445+
SDESystem(eqs, noiseeqs, get_iv(rs), get_states(rs),
446+
(noise_scaling===nothing) ? get_ps(rs) : union(get_ps(rs), toparam.(noise_scaling)),
447+
name=name,
448+
systems=systems)
450449
end
451450

452451
"""
@@ -462,10 +461,11 @@ Notes:
462461
the ratelaw is `k*S*(S-1)`, i.e. the rate law is not normalized by the scaling
463462
factor.
464463
"""
465-
function Base.convert(::Type{<:JumpSystem},rs::ReactionSystem; combinatoric_ratelaws=true)
466-
eqs = assemble_jumps(rs; combinatoric_ratelaws=combinatoric_ratelaws)
467-
JumpSystem(eqs,get_iv(rs),states(rs),get_ps(rs),name=nameof(rs),
468-
systems=convert.(JumpSystem,get_systems(rs)))
464+
function Base.convert(::Type{<:JumpSystem},rs::ReactionSystem;
465+
name=nameof(rs), combinatoric_ratelaws=true, kwargs...)
466+
eqs = assemble_jumps(rs; combinatoric_ratelaws=combinatoric_ratelaws)
467+
systems = convert.(JumpSystem, get_systems(rs))
468+
JumpSystem(eqs, get_iv(rs), get_states(rs), get_ps(rs), name=name, systems=systems)
469469
end
470470

471471

@@ -474,35 +474,35 @@ end
474474

475475
# ODEProblem from AbstractReactionNetwork
476476
function DiffEqBase.ODEProblem(rs::ReactionSystem, u0, tspan, p=DiffEqBase.NullParameters(), args...; kwargs...)
477-
return ODEProblem(convert(ODESystem,rs),u0,tspan,p, args...; kwargs...)
477+
return ODEProblem(convert(ODESystem,rs; kwargs...),u0,tspan,p, args...; kwargs...)
478478
end
479479

480480
# NonlinearProblem from AbstractReactionNetwork
481481
function DiffEqBase.NonlinearProblem(rs::ReactionSystem, u0, p=DiffEqBase.NullParameters(), args...; kwargs...)
482-
return NonlinearProblem(convert(NonlinearSystem,rs), u0, p, args...; kwargs...)
482+
return NonlinearProblem(convert(NonlinearSystem,rs; kwargs...), u0, p, args...; kwargs...)
483483
end
484484

485485

486486
# SDEProblem from AbstractReactionNetwork
487487
function DiffEqBase.SDEProblem(rs::ReactionSystem, u0, tspan, p=DiffEqBase.NullParameters(), args...; noise_scaling=nothing, kwargs...)
488-
sde_sys = convert(SDESystem,rs,noise_scaling=noise_scaling)
489-
p_matrix = zeros(length(states(rs)), length(equations(rs)))
488+
sde_sys = convert(SDESystem,rs;noise_scaling=noise_scaling, kwargs...)
489+
p_matrix = zeros(length(get_states(rs)), length(get_eqs(rs)))
490490
return SDEProblem(sde_sys,u0,tspan,p,args...; noise_rate_prototype=p_matrix,kwargs...)
491491
end
492492

493493
# DiscreteProblem from AbstractReactionNetwork
494494
function DiffEqBase.DiscreteProblem(rs::ReactionSystem, u0, tspan::Tuple, p=DiffEqBase.NullParameters(), args...; kwargs...)
495-
return DiscreteProblem(convert(JumpSystem,rs), u0,tspan,p, args...; kwargs...)
495+
return DiscreteProblem(convert(JumpSystem,rs; kwargs...), u0,tspan,p, args...; kwargs...)
496496
end
497497

498498
# JumpProblem from AbstractReactionNetwork
499499
function DiffEqJump.JumpProblem(rs::ReactionSystem, prob, aggregator, args...; kwargs...)
500-
return JumpProblem(convert(JumpSystem,rs), prob, aggregator, args...; kwargs...)
500+
return JumpProblem(convert(JumpSystem,rs; kwargs...), prob, aggregator, args...; kwargs...)
501501
end
502502

503503
# SteadyStateProblem from AbstractReactionNetwork
504504
function DiffEqBase.SteadyStateProblem(rs::ReactionSystem, u0, p=DiffEqBase.NullParameters(), args...; kwargs...)
505-
return SteadyStateProblem(ODEFunction(convert(ODESystem,rs)),u0,p, args...; kwargs...)
505+
return SteadyStateProblem(ODEFunction(convert(ODESystem,rs; kwargs...)),u0,p, args...; kwargs...)
506506
end
507507

508508
# determine which species a reaction depends on

0 commit comments

Comments
 (0)