@@ -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)
593591end
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