Skip to content

Commit

Permalink
remove scalarizing of parameters in macro
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacsas committed Sep 20, 2024
1 parent f7e68f7 commit bac1091
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions src/dsl.jl
Original file line number Diff line number Diff line change
Expand Up @@ -369,10 +369,10 @@ function make_reaction_system(ex::Expr; name = :(gensym(:ReactionSystem)))
sexprs = get_sexpr(species_extracted, options; iv_symbols = ivs)
vexprs = get_sexpr(vars_extracted, options, :variables; iv_symbols = ivs)
pexprs = get_pexpr(parameters_extracted, options)
ps, pssym = scalarize_macro(!isempty(parameters), pexprs, "ps")
vars, varssym = scalarize_macro(!isempty(variables), vexprs, "vars")
sps, spssym = scalarize_macro(!isempty(species), sexprs, "specs")
comps, compssym = scalarize_macro(!isempty(compound_species), compound_expr, "comps")
ps, pssym = assign_expr_to_var(!isempty(parameters), pexprs, "ps")
vars, varssym = assign_expr_to_var(!isempty(variables), vexprs, "vars", true)
sps, spssym = assign_expr_to_var(!isempty(species), sexprs, "specs", true)
comps, compssym = assign_expr_to_var(!isempty(compound_species), compound_expr, "comps", true)
rxexprs = :(CatalystEqType[])
for reaction in reactions
push!(rxexprs.args, get_rxexprs(reaction))
Expand All @@ -382,8 +382,6 @@ function make_reaction_system(ex::Expr; name = :(gensym(:ReactionSystem)))
push!(rxexprs.args, equation)
end

#println(observed_vars)

# Output code corresponding to the reaction system.
quote
$ivexpr
Expand Down Expand Up @@ -593,14 +591,21 @@ function get_rxexprs(rxstruct)
end

# takes a ModelingToolkit declaration macro like @parameters and returns an expression
# that calls the macro and then scalarizes all the symbols created into a vector of Nums
function scalarize_macro(nonempty, ex, name)
# that calls the macro and saves it in a variable named namesym.
# also scalarizes if desired
function assign_expr_to_var(nonempty, ex, name, scalarize = false)
namesym = gensym(name)
if nonempty
symvec = gensym()
ex = quote
$symvec = $ex
$namesym = reduce(vcat, Symbolics.scalarize($symvec))
if scalarize
symvec = gensym()
ex = quote
$symvec = $ex
$namesym = reduce(vcat, Symbolics.scalarize($symvec))
end
else
ex = quote
$namesym = $ex
end
end
else
ex = :($namesym = Num[])
Expand Down

0 comments on commit bac1091

Please sign in to comment.