From e8dcb83a6c9a4564a900070a41704b5d7ec6106c Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Tue, 8 Sep 2026 05:55:32 -0400 Subject: [PATCH] Read forecast trajectories through EnsembleSolution.u Use the public trajectory collection instead of scalar array indexing before selecting symbolic variables. Cover scalar, vector, and multivariable requests in the native basics regression. Co-Authored-By: Chris Rackauckas Co-Authored-By: OpenAI Codex Agent-Harness: Codex CLI 0.153.4 Agent-Model: gpt-6-astra Agent-Session: local transcript /home/crackauc/.codex/sessions/2026/09/05/rollout-2026-09-05T05-08-31-01a070d3-9e50-71c2-98f5-129385e50fb7.jsonl --- src/basics.jl | 2 +- test/basics.jl | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/basics.jl b/src/basics.jl index 7b34a4f..ba272ed 100644 --- a/src/basics.jl +++ b/src/basics.jl @@ -199,7 +199,7 @@ function get_uncertainty_forecast(prob, sym, t, uncertainp, samples) prob_func(prob, ctx) = sample_prob(prob) eprob = EnsembleProblem(prob, prob_func = prob_func) esol = solve(eprob, nothing, EnsembleSerial(), saveat = t, trajectories = samples) - return Array.(reduce.(hcat, [esol[i][sym] for i in 1:samples])) + return Array.(reduce.(hcat, [esol.u[i][sym] for i in 1:samples])) end """ diff --git a/test/basics.jl b/test/basics.jl index 55bb5f2..1867893 100644 --- a/test/basics.jl +++ b/test/basics.jl @@ -48,6 +48,17 @@ quantiles = get_uncertainty_forecast_quantiles( @test length(quantiles) == 2 @test all(size(q) == (length(t_measure), 1) for q in quantiles) +@testset "Uncertainty forecast trajectories" begin + for (symbols, initial_values) in ((x, [1.0]), ([x], [1.0]), ([x, y], [1.0, 0.0])) + forecasts = get_uncertainty_forecast( + prob, symbols, t_measure, [σ => Uniform(27.0, 29.0)], 4 + ) + @test length(forecasts) == 4 + @test all(size(forecast) == (length(initial_values), length(t_measure)) for forecast in forecasts) + @test all(forecast[:, 1] == initial_values for forecast in forecasts) + end +end + xmin, xminval = get_min_t(prob, x) @test sol(xmin; idxs = x) == xminval @test sol(xmin; idxs = x) <= minimum(sol[x])