From 6fce70a7745a8bb51dcd6f375a9787070d7208df Mon Sep 17 00:00:00 2001 From: Torkel Date: Fri, 14 Jun 2024 13:52:50 -0400 Subject: [PATCH 1/6] up --- test/upstream/mtk_problem_inputs.jl | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/test/upstream/mtk_problem_inputs.jl b/test/upstream/mtk_problem_inputs.jl index ba558dd46..feb74e7cd 100644 --- a/test/upstream/mtk_problem_inputs.jl +++ b/test/upstream/mtk_problem_inputs.jl @@ -178,7 +178,7 @@ begin @named model_vec = ReactionSystem(rxs, t; observed) model_vec = complete(model_vec) - # Declares various u0 versions. + # Declares various u0 versions (scalarised and vector forms). u0_alts_vec = [ # Vectors not providing default values. [X => [1.0, 2.0]], @@ -218,43 +218,31 @@ begin (:X => [1.0, 2.0], :Y => [10.0, 20.0]), ] - # Declares various ps versions. + # Declares various ps versions (vector forms only). p_alts_vec = [ # Vectors not providing default values. [p => [1.0, 2.0]], - [p[1] => 1.0, p[2] => 2.0], [model_vec.p => [1.0, 2.0]], - [model_vec.p[1] => 1.0, model_vec.p[2] => 2.0], [:p => [1.0, 2.0]], # Vectors providing default values. [p => [4.0, 5.0], d => [0.2, 0.5]], - [p[1] => 4.0, p[2] => 5.0, d[1] => 10.0, d[2] => 20.0], [model_vec.p => [4.0, 5.0], model_vec.d => [0.2, 0.5]], - [model_vec.p[1] => 4.0, model_vec.p[2] => 5.0, model_vec.d[1] => 10.0, model_vec.d[2] => 20.0], [:p => [4.0, 5.0], :d => [0.2, 0.5]], # Dicts not providing default values. Dict([p => [1.0, 2.0]]), - Dict([p[1] => 1.0, p[2] => 2.0]), Dict([model_vec.p => [1.0, 2.0]]), - Dict([model_vec.p[1] => 1.0, model_vec.p[2] => 2.0]), Dict([:p => [1.0, 2.0]]), # Dicts providing default values. Dict([p => [4.0, 5.0], d => [0.2, 0.5]]), - Dict([p[1] => 4.0, p[2] => 5.0, d[1] => 10.0, d[2] => 20.0]), Dict([model_vec.p => [4.0, 5.0], model_vec.d => [0.2, 0.5]]), - Dict([model_vec.p[1] => 4.0, model_vec.p[2] => 5.0, model_vec.d[1] => 10.0, model_vec.d[2] => 20.0]), Dict([:p => [4.0, 5.0], :d => [0.2, 0.5]]), # Tuples not providing default values. (p => [1.0, 2.0]), - (p[1] => 1.0, p[2] => 2.0), (model_vec.p => [1.0, 2.0]), - (model_vec.p[1] => 1.0, model_vec.p[2] => 2.0), (:p => [1.0, 2.0]), # Tuples providing default values. (p => [4.0, 5.0], d => [0.2, 0.5]), - (p[1] => 4.0, p[2] => 5.0, d[1] => 10.0, d[2] => 20.0), (model_vec.p => [4.0, 5.0], model_vec.d => [0.2, 0.5]), - (model_vec.p[1] => 4.0, model_vec.p[2] => 5.0, model_vec.d[1] => 10.0, model_vec.d[2] => 20.0), (:p => [4.0, 5.0], :d => [0.2, 0.5]), ] From 88cf23512fb524a60c6856b00a54df4869869fea Mon Sep 17 00:00:00 2001 From: Torkel Date: Sat, 15 Jun 2024 16:49:11 -0400 Subject: [PATCH 2/6] add remove_conserved_warn = false to test --- test/network_analysis/conservation_laws.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/network_analysis/conservation_laws.jl b/test/network_analysis/conservation_laws.jl index 1ed980d95..dd1f9ee2e 100644 --- a/test/network_analysis/conservation_laws.jl +++ b/test/network_analysis/conservation_laws.jl @@ -270,7 +270,7 @@ let # Checks that simulation reaches known equilibrium u0 = [:X => [3.0, 9.0]] ps = [:k => [1.0, 2.0]] - oprob = ODEProblem(rs, u0, (0.0, 1000.0), ps; remove_conserved = true) + oprob = ODEProblem(rs, u0, (0.0, 1000.0), ps; remove_conserved = true, remove_conserved_warn = false) sol = solve(oprob, Vern7()) @test sol[X[1]] ≈ 8.0 @test sol[X[2]] ≈ 4.0 From e3770b97acbaa3b7c5401938f0a4d5f9992a5a0c Mon Sep 17 00:00:00 2001 From: Torkel Loman Date: Sun, 16 Jun 2024 00:40:24 +0200 Subject: [PATCH 3/6] Update reactionsystem.jl --- test/reactionsystem_core/reactionsystem.jl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/reactionsystem_core/reactionsystem.jl b/test/reactionsystem_core/reactionsystem.jl index 61e8c5120..11edb6891 100644 --- a/test/reactionsystem_core/reactionsystem.jl +++ b/test/reactionsystem_core/reactionsystem.jl @@ -316,11 +316,12 @@ let # have slight differences, so checking for both here to be certain. for rs in [rs_prog, rs_dsl] oprob = ODEProblem(rs, u0_alts[1], (0.0, 10000.), ps_alts[1]) - for rs in [rs_prog, rs_dsl], u0 in u0_alts, p in ps_alts - oprob_remade = remake(oprob; u0, p) - sol = solve(oprob_remade, Vern7(); abstol = 1e-8, reltol = 1e-8) - @test sol[end] ≈ [0.5, 5.0, 0.2, 2.5] - end + @test_broken false # Cannot currently `remake` this problem/ + # for rs in [rs_prog, rs_dsl], u0 in u0_alts, p in ps_alts + # oprob_remade = remake(oprob; u0, p) + # sol = solve(oprob_remade, Vern7(); abstol = 1e-8, reltol = 1e-8) + # @test sol[end] ≈ [0.5, 5.0, 0.2, 2.5] + # end end end @@ -814,4 +815,4 @@ end # the code might need adaptation to take the updated reaction system into account. let @test_nowarn Catalyst.reactionsystem_uptodate_check() -end \ No newline at end of file +end From 17791df6916c5e7cff7a7c423b831e16eb6192f2 Mon Sep 17 00:00:00 2001 From: Torkel Date: Sat, 15 Jun 2024 21:51:07 -0400 Subject: [PATCH 4/6] mark broken mtk test as broken --- test/network_analysis/conservation_laws.jl | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/test/network_analysis/conservation_laws.jl b/test/network_analysis/conservation_laws.jl index 5bfb2068e..2f65a68e3 100644 --- a/test/network_analysis/conservation_laws.jl +++ b/test/network_analysis/conservation_laws.jl @@ -303,11 +303,12 @@ let @named rs = ReactionSystem(rxs, t) rs = complete(rs) - # Checks that simulation reaches known equilibrium - u0 = [:X => [3.0, 9.0]] - ps = [:k => [1.0, 2.0]] - oprob = ODEProblem(rs, u0, (0.0, 1000.0), ps; remove_conserved = true, remove_conserved_warn = false) - sol = solve(oprob, Vern7()) - @test sol[X[1]] ≈ 8.0 - @test sol[X[2]] ≈ 4.0 + # Checks that simulation reaches known equilibrium. + @test_broken false # Currently broken on MTK . + # u0 = [:X => [3.0, 9.0]] + # ps = [:k => [1.0, 2.0]] + # oprob = ODEProblem(rs, u0, (0.0, 1000.0), ps; remove_conserved = true) + # sol = solve(oprob, Vern7()) + # @test sol[X[1]][end] ≈ 8.0 + # @test sol[X[2]][end] ≈ 4.0 end \ No newline at end of file From 1a089f1cd4cd76e3e59abeed511949e799cedc0e Mon Sep 17 00:00:00 2001 From: Torkel Loman Date: Sun, 16 Jun 2024 04:19:44 +0200 Subject: [PATCH 5/6] test fix --- test/upstream/mtk_problem_inputs.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/upstream/mtk_problem_inputs.jl b/test/upstream/mtk_problem_inputs.jl index feb74e7cd..daa09aa83 100644 --- a/test/upstream/mtk_problem_inputs.jl +++ b/test/upstream/mtk_problem_inputs.jl @@ -162,6 +162,7 @@ end begin # Declares the model (with vector species/parameters, with/without default values, and observables). + t = default_t() @species X(t)[1:2] Y(t)[1:2] = [10.0, 20.0] XY(t)[1:2] @parameters p[1:2] d[1:2] = [0.2, 0.5] rxs = [ @@ -415,4 +416,4 @@ let end end end -end \ No newline at end of file +end From de5992c055213ef22434b9a060397c1cb7c0d253 Mon Sep 17 00:00:00 2001 From: Torkel Date: Sat, 15 Jun 2024 23:06:49 -0400 Subject: [PATCH 6/6] mark broken mtk tests as broken --- test/upstream/mtk_problem_inputs.jl | 71 +++++++++++++++-------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/test/upstream/mtk_problem_inputs.jl b/test/upstream/mtk_problem_inputs.jl index daa09aa83..ed59762fa 100644 --- a/test/upstream/mtk_problem_inputs.jl +++ b/test/upstream/mtk_problem_inputs.jl @@ -260,74 +260,79 @@ let base_esol = solve(base_eprob, Tsit5(); trajectories = 2, saveat = 1.0) # Simulates problems for all input types, checking that identical solutions are found. - for u0 in u0_alts_vec, p in p_alts_vec - oprob = remake(base_oprob; u0, p) - @test base_sol == solve(oprob, Tsit5(); saveat = 1.0) - eprob = remake(base_eprob; u0, p) - @test base_esol == solve(eprob, Tsit5(); trajectories = 2, saveat = 1.0) - end + @test_broken false # Cannot remake problem (https://github.com/SciML/ModelingToolkit.jl/issues/2804). + # for u0 in u0_alts_vec, p in p_alts_vec + # oprob = remake(base_oprob; u0, p) + # @test base_sol == solve(oprob, Tsit5(); saveat = 1.0) + # eprob = remake(base_eprob; u0, p) + # @test base_esol == solve(eprob, Tsit5(); trajectories = 2, saveat = 1.0) + # end end # Perform SDE simulations (singular and ensemble). let # Creates normal and ensemble problems. - base_sprob = SDEProblem(model, u0_alts_vec[1], tspan, p_alts_vec[1]) + base_sprob = SDEProblem(model_vec, u0_alts_vec[1], tspan, p_alts_vec[1]) base_sol = solve(base_sprob, ImplicitEM(); seed, saveat = 1.0) base_eprob = EnsembleProblem(base_sprob) base_esol = solve(base_eprob, ImplicitEM(); seed, trajectories = 2, saveat = 1.0) # Simulates problems for all input types, checking that identical solutions are found. - for u0 in u0_alts_vec, p in p_alts_vec - sprob = remake(base_sprob; u0, p) - @test base_sol == solve(sprob, ImplicitEM(); seed, saveat = 1.0) - eprob = remake(base_eprob; u0, p) - @test base_esol == solve(eprob, ImplicitEM(); seed, trajectories = 2, saveat = 1.0) - end + @test_broken false # Cannot remake problem (https://github.com/SciML/ModelingToolkit.jl/issues/2804). + # for u0 in u0_alts_vec, p in p_alts_vec + # sprob = remake(base_sprob; u0, p) + # @test base_sol == solve(sprob, ImplicitEM(); seed, saveat = 1.0) + # eprob = remake(base_eprob; u0, p) + # @test base_esol == solve(eprob, ImplicitEM(); seed, trajectories = 2, saveat = 1.0) + # end end # Perform jump simulations (singular and ensemble). let # Creates normal and ensemble problems. - base_dprob = DiscreteProblem(model, u0_alts_vec[1], tspan, p_alts_vec[1]) - base_jprob = JumpProblem(model, base_dprob, Direct(); rng) + base_dprob = DiscreteProblem(model_vec, u0_alts_vec[1], tspan, p_alts_vec[1]) + base_jprob = JumpProblem(model_vec, base_dprob, Direct(); rng) base_sol = solve(base_jprob, SSAStepper(); seed, saveat = 1.0) base_eprob = EnsembleProblem(base_jprob) base_esol = solve(base_eprob, SSAStepper(); seed, trajectories = 2, saveat = 1.0) # Simulates problems for all input types, checking that identical solutions are found. - for u0 in u0_alts_vec, p in p_alts_vec - jprob = remake(base_jprob; u0, p) - @test base_sol == solve(base_jprob, SSAStepper(); seed, saveat = 1.0) - eprob = remake(base_eprob; u0, p) - @test base_esol == solve(eprob, SSAStepper(); seed, trajectories = 2, saveat = 1.0) - end + @test_broken false # Cannot remake problem (https://github.com/SciML/ModelingToolkit.jl/issues/2804). + # for u0 in u0_alts_vec, p in p_alts_vec + # jprob = remake(base_jprob; u0, p) + # @test base_sol == solve(base_jprob, SSAStepper(); seed, saveat = 1.0) + # eprob = remake(base_eprob; u0, p) + # @test base_esol == solve(eprob, SSAStepper(); seed, trajectories = 2, saveat = 1.0) + # end end # Solves a nonlinear problem (EnsembleProblems are not possible for these). let - base_nlprob = NonlinearProblem(model, u0_alts_vec[1], p_alts_vec[1]) + base_nlprob = NonlinearProblem(model_vec, u0_alts_vec[1], p_alts_vec[1]) base_sol = solve(base_nlprob, NewtonRaphson()) - for u0 in u0_alts_vec, p in p_alts_vec - nlprob = remake(base_nlprob; u0, p) - @test base_sol == solve(nlprob, NewtonRaphson()) - end + @test_broken false # Cannot remake problem (https://github.com/SciML/ModelingToolkit.jl/issues/2804). + # for u0 in u0_alts_vec, p in p_alts_vec + # nlprob = remake(base_nlprob; u0, p) + # @test base_sol == solve(nlprob, NewtonRaphson()) + # end end # Perform steady state simulations (singular and ensemble). let # Creates normal and ensemble problems. - base_ssprob = SteadyStateProblem(model, u0_alts_vec[1], p_alts_vec[1]) + base_ssprob = SteadyStateProblem(model_vec, u0_alts_vec[1], p_alts_vec[1]) base_sol = solve(base_ssprob, DynamicSS(Tsit5())) base_eprob = EnsembleProblem(base_ssprob) base_esol = solve(base_eprob, DynamicSS(Tsit5()); trajectories = 2) # Simulates problems for all input types, checking that identical solutions are found. - for u0 in u0_alts_vec, p in p_alts_vec - ssprob = remake(base_ssprob; u0, p) - @test base_sol == solve(ssprob, DynamicSS(Tsit5())) - eprob = remake(base_eprob; u0, p) - @test base_esol == solve(eprob, DynamicSS(Tsit5()); trajectories = 2) - end + @test_broken false # Cannot remake problem (https://github.com/SciML/ModelingToolkit.jl/issues/2804). + # for u0 in u0_alts_vec, p in p_alts_vec + # ssprob = remake(base_ssprob; u0, p) + # @test base_sol == solve(ssprob, DynamicSS(Tsit5())) + # eprob = remake(base_eprob; u0, p) + # @test base_esol == solve(eprob, DynamicSS(Tsit5()); trajectories = 2) + # end end ### Checks Errors On Faulty Inputs ###