Skip to content

Commit bac1091

Browse files
committed
remove scalarizing of parameters in macro
1 parent f7e68f7 commit bac1091

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/dsl.jl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -369,10 +369,10 @@ function make_reaction_system(ex::Expr; name = :(gensym(:ReactionSystem)))
369369
sexprs = get_sexpr(species_extracted, options; iv_symbols = ivs)
370370
vexprs = get_sexpr(vars_extracted, options, :variables; iv_symbols = ivs)
371371
pexprs = get_pexpr(parameters_extracted, options)
372-
ps, pssym = scalarize_macro(!isempty(parameters), pexprs, "ps")
373-
vars, varssym = scalarize_macro(!isempty(variables), vexprs, "vars")
374-
sps, spssym = scalarize_macro(!isempty(species), sexprs, "specs")
375-
comps, compssym = scalarize_macro(!isempty(compound_species), compound_expr, "comps")
372+
ps, pssym = assign_expr_to_var(!isempty(parameters), pexprs, "ps")
373+
vars, varssym = assign_expr_to_var(!isempty(variables), vexprs, "vars", true)
374+
sps, spssym = assign_expr_to_var(!isempty(species), sexprs, "specs", true)
375+
comps, compssym = assign_expr_to_var(!isempty(compound_species), compound_expr, "comps", true)
376376
rxexprs = :(CatalystEqType[])
377377
for reaction in reactions
378378
push!(rxexprs.args, get_rxexprs(reaction))
@@ -382,8 +382,6 @@ function make_reaction_system(ex::Expr; name = :(gensym(:ReactionSystem)))
382382
push!(rxexprs.args, equation)
383383
end
384384

385-
#println(observed_vars)
386-
387385
# Output code corresponding to the reaction system.
388386
quote
389387
$ivexpr
@@ -593,14 +591,21 @@ function get_rxexprs(rxstruct)
593591
end
594592

595593
# takes a ModelingToolkit declaration macro like @parameters and returns an expression
596-
# that calls the macro and then scalarizes all the symbols created into a vector of Nums
597-
function scalarize_macro(nonempty, ex, name)
594+
# that calls the macro and saves it in a variable named namesym.
595+
# also scalarizes if desired
596+
function assign_expr_to_var(nonempty, ex, name, scalarize = false)
598597
namesym = gensym(name)
599598
if nonempty
600-
symvec = gensym()
601-
ex = quote
602-
$symvec = $ex
603-
$namesym = reduce(vcat, Symbolics.scalarize($symvec))
599+
if scalarize
600+
symvec = gensym()
601+
ex = quote
602+
$symvec = $ex
603+
$namesym = reduce(vcat, Symbolics.scalarize($symvec))
604+
end
605+
else
606+
ex = quote
607+
$namesym = $ex
608+
end
604609
end
605610
else
606611
ex = :($namesym = Num[])

0 commit comments

Comments
 (0)