@@ -80,15 +80,15 @@ generate_affect_function(js, affect, outputidxs) = build_function(affect, states
80
80
81
81
function assemble_vrj (js, vrj, statetoid)
82
82
rate = eval (generate_rate_function (js, vrj. rate))
83
- outputvars = (convert (Variable, affect. lhs) for affect in vrj. affect!)
83
+ outputvars = (value ( affect. lhs) for affect in vrj. affect!)
84
84
outputidxs = ((statetoid[var] for var in outputvars). .. ,)
85
85
affect = eval (generate_affect_function (js, vrj. affect!, outputidxs))
86
86
VariableRateJump (rate, affect)
87
87
end
88
88
89
89
function assemble_vrj_expr (js, vrj, statetoid)
90
90
rate = generate_rate_function (js, vrj. rate)
91
- outputvars = (convert (Variable, affect. lhs) for affect in vrj. affect!)
91
+ outputvars = (value ( affect. lhs) for affect in vrj. affect!)
92
92
outputidxs = ((statetoid[var] for var in outputvars). .. ,)
93
93
affect = generate_affect_function (js, vrj. affect!, outputidxs)
94
94
quote
@@ -100,15 +100,15 @@ end
100
100
101
101
function assemble_crj (js, crj, statetoid)
102
102
rate = eval (generate_rate_function (js, crj. rate))
103
- outputvars = (convert (Variable, affect. lhs) for affect in crj. affect!)
103
+ outputvars = (value ( affect. lhs) for affect in crj. affect!)
104
104
outputidxs = ((statetoid[var] for var in outputvars). .. ,)
105
105
affect = eval (generate_affect_function (js, crj. affect!, outputidxs))
106
106
ConstantRateJump (rate, affect)
107
107
end
108
108
109
109
function assemble_crj_expr (js, crj, statetoid)
110
110
rate = generate_rate_function (js, crj. rate)
111
- outputvars = (convert (Variable, affect. lhs) for affect in crj. affect!)
111
+ outputvars = (value ( affect. lhs) for affect in crj. affect!)
112
112
outputidxs = ((statetoid[var] for var in outputvars). .. ,)
113
113
affect = generate_affect_function (js, crj. affect!, outputidxs)
114
114
quote
@@ -118,24 +118,13 @@ function assemble_crj_expr(js, crj, statetoid)
118
118
end
119
119
end
120
120
121
- function numericrate (rate, subber)
122
- if rate isa Operation
123
- rval = subber (rate). value
124
- elseif rate isa Variable
125
- rval = subber (rate ()). value
126
- else
127
- rval = rate
128
- end
129
- rval
130
- end
131
-
132
121
function numericrstoich (mtrs:: Vector{Pair{V,W}} , statetoid) where {V,W}
133
122
rs = Vector {Pair{Int,W}} ()
134
123
for (spec,stoich) in mtrs
135
- if ! (spec isa Operation ) && iszero (spec)
124
+ if ! (spec isa Term ) && iszero (spec)
136
125
push! (rs, 0 => stoich)
137
126
else
138
- push! (rs, statetoid[convert (Variable, spec)] => stoich)
127
+ push! (rs, statetoid[value ( spec)] => stoich)
139
128
end
140
129
end
141
130
sort! (rs)
@@ -145,18 +134,19 @@ end
145
134
function numericnstoich (mtrs:: Vector{Pair{V,W}} , statetoid) where {V,W}
146
135
ns = Vector {Pair{Int,W}} ()
147
136
for (spec,stoich) in mtrs
148
- ! (spec isa Operation ) && iszero (spec) && error (" Net stoichiometry can not have a species labelled 0." )
149
- push! (ns, statetoid[convert (Variable, spec)] => stoich)
137
+ ! (spec isa Term ) && iszero (spec) && error (" Net stoichiometry can not have a species labelled 0." )
138
+ push! (ns, statetoid[value ( spec)] => stoich)
150
139
end
151
140
sort! (ns)
152
141
end
153
142
154
143
# assemble a numeric MassActionJump from a MT MassActionJump representing one rx.
155
144
function assemble_maj (maj:: MassActionJump , statetoid, subber, invttype)
156
- rval = numericrate (maj. scaled_rates, subber )
145
+ rval = subber (maj. scaled_rates)
157
146
rs = numericrstoich (maj. reactant_stoch, statetoid)
158
147
ns = numericnstoich (maj. net_stoch, statetoid)
159
- maj = MassActionJump (convert (invttype, rval), rs, ns, scale_rates = false )
148
+ @show rval
149
+ maj = MassActionJump (convert (invttype, value (rval)), rs, ns, scale_rates = false )
160
150
maj
161
151
end
162
152
@@ -192,11 +182,11 @@ function DiffEqBase.DiscreteProblem(sys::JumpSystem, u0map, tspan::Tuple,
192
182
parammap= DiffEqBase. NullParameters (); kwargs... )
193
183
194
184
(u0map isa AbstractVector) || error (" For DiscreteProblems u0map must be an AbstractVector." )
195
- u0d = Dict ( convert (Variable, u[1 ]) => u[2 ] for u in u0map)
185
+ u0d = Dict ( value ( u[1 ]) => u[2 ] for u in u0map)
196
186
u0 = [u0d[u] for u in states (sys)]
197
187
if parammap != DiffEqBase. NullParameters ()
198
188
(parammap isa AbstractVector) || error (" For DiscreteProblems parammap must be an AbstractVector." )
199
- pd = Dict ( convert (Variable, u[1 ]) => u[2 ] for u in parammap)
189
+ pd = Dict ( value ( u[1 ]) => u[2 ] for u in parammap)
200
190
p = [pd[u] for u in parameters (sys)]
201
191
else
202
192
p = parammap
@@ -257,15 +247,16 @@ sol = solve(jprob, SSAStepper())
257
247
"""
258
248
function DiffEqJump. JumpProblem (js:: JumpSystem , prob, aggregator; kwargs... )
259
249
260
- statetoid = Dict (convert (Variable, state) => i for (i,state) in enumerate (states (js)))
250
+ statetoid = Dict (value ( state) => i for (i,state) in enumerate (states (js)))
261
251
eqs = equations (js)
262
252
invttype = typeof (1 / prob. tspan[2 ])
263
253
264
254
# handling parameter substition and empty param vecs
265
255
p = (prob. p == DiffEqBase. NullParameters ()) ? Operation[] : prob. p
266
- parammap = map ((x,y)-> Pair (x () ,y), parameters (js), p)
256
+ parammap = map ((x,y)-> Pair (x,y), parameters (js), p)
267
257
subber = substituter (parammap)
268
258
259
+ @show parammap
269
260
majs = MassActionJump[assemble_maj (j, statetoid, subber, invttype) for j in eqs. x[1 ]]
270
261
crjs = ConstantRateJump[assemble_crj (js, j, statetoid) for j in eqs. x[2 ]]
271
262
vrjs = VariableRateJump[assemble_vrj (js, j, statetoid) for j in eqs. x[3 ]]
294
285
295
286
function get_variables! (dep, jump:: MassActionJump , variables)
296
287
sr = jump. scaled_rates
297
- (sr isa Operation ) && get_variables! (dep, sr, variables)
288
+ (sr isa Term ) && get_variables! (dep, sr, variables)
298
289
for varasop in jump. reactant_stoch
299
- ( varasop[1 ]. op in variables) && push! (dep, varasop[1 ])
290
+ any ( isequal ( varasop[1 ]), variables) && push! (dep, varasop[1 ])
300
291
end
301
292
dep
302
293
end
@@ -305,12 +296,12 @@ end
305
296
function modified_states! (mstates, jump:: Union{ConstantRateJump,VariableRateJump} , sts)
306
297
for eq in jump. affect!
307
298
st = eq. lhs
308
- (st . op in sts) && push! (mstates, st)
299
+ any ( isequal (st), sts) && push! (mstates, st)
309
300
end
310
301
end
311
302
312
303
function modified_states! (mstates, jump:: MassActionJump , sts)
313
304
for (state,stoich) in jump. net_stoch
314
- ( state. op in sts) && push! (mstates, state)
305
+ any ( isequal ( state), sts) && push! (mstates, state)
315
306
end
316
307
end
0 commit comments