Skip to content

remake issue with JumpProblem #193

@gideonsimpson

Description

@gideonsimpson

Consider the following example code for the SIR model, which attempts to run the model with Gillespie twice, using remake to change the initial condition:

using DiffEqBiological
sir_model = @reaction_network SIR begin
    c1, s + i --> 2i
    c2, i --> r
end c1 c2
p = (0.1/1000,0.01)
tspan = (0.0,250.0)

dprob = DiscreteProblem(sir_model,[999,1,0],tspan,p);
jprob = JumpProblem(dprob,Direct(),sir_model);
sol1 = solve(jump_prob,SSAStepper());
sol2 =  solve(remake(jprob,prob=remake(dprob,u0=[998,1,1])),SSAStepper());

When run, it returns an error:

AssertionError: length(jump_prob.jump_callback.discrete_callbacks) == 1

Stacktrace:
 [1] __init(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper; save_start::Bool, save_end::Bool, seed::UInt64, saveat::Nothing) at /Users/guardian/.julia/packages/DiffEqJump/InDQm/src/SSA_stepper.jl:68
 [2] __init(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper) at /Users/guardian/.julia/packages/DiffEqJump/InDQm/src/SSA_stepper.jl:64
 [3] init_call(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:13
 [4] init_call(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:10
 [5] init(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:30
 [6] init(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:18
 [7] __solve(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/guardian/.julia/packages/DiffEqJump/InDQm/src/SSA_stepper.jl:27
 [8] __solve(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper) at /Users/guardian/.julia/packages/DiffEqJump/InDQm/src/SSA_stepper.jl:27
 [9] (::DiffEqBase.var"#466#467"{JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing},Tuple{SSAStepper}})() at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:49
 [10] maybe_with_logger(::DiffEqBase.var"#466#467"{JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing},Tuple{SSAStepper}}, ::Nothing) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/utils.jl:259
 [11] solve_call(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper; merge_callbacks::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:48
 [12] solve_call(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:37
 [13] solve(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:66
 [14] solve(::JumpProblem{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Symbol,DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}},Tuple{Symbol},NamedTuple{(:prob,),Tuple{DiscreteProblem{Array{Int64,1},Tuple{Float64,Float64},true,Tuple{Float64,Float64},DiscreteFunction{true,DiffEqBiological.var"#66#67",Nothing,Array{Symbol,1}},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}}}}}},DiffEqJump.NullAggregator,CallbackSet{Tuple{},Tuple{}},Nothing,Tuple{},Nothing,Nothing}, ::SSAStepper) at /Users/guardian/.julia/packages/DiffEqBase/Avuz1/src/solve.jl:54
 [15] top-level scope at In[9]:1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions