# The mean of 3-d EmsembleSolution from StochasticDelayDiffEq

This post was temporarily hidden by the community for possibly being off-topic, inappropriate, or spammy.

I canâ€™t reproduce your problem. If I make a 3d array with `sol = rand(2,4412,1000)`, then `mean(sol, dim=2)` gives a `MethodError` because the keyword is spelled `dims`, not `dim`. If I use the correct spelling, it works fine:

``````julia> using Statistics

julia> sol = rand(2,4412,1000);

julia> mean(sol, dims=3)
2Ă—4412Ă—1 Array{Float64, 3}:
[:, :, 1] =
0.488939  0.483749  0.499478  0.502813  â€¦  0.494693  0.50745   0.482576
0.522986  0.515288  0.510555  0.492776     0.486172  0.493854  0.508768
``````

Are you using some other implementation of `mean` than the one in the `Statistics` standard library?

1. Donâ€™t post screenshots, post quoted code.

2 Likes

Yes Iâ€™m using the mean in the Statistics Library.

I changed the â€śdimâ€ť to â€śdimsâ€ť and the result still like thisâ€¦

``````# using Pkg

using DifferentialEquations, StochasticDelayDiffEq, Plots, Statistics

function f(du, u, h, p, t)
M_A, M_B = u;
tau, mu, n, P0, b, sigma_A, sigma_B = p;
hist_A = h(p, t-tau)[1];
hist_B = h(p, t-tau)[2];
du[1] = -mu*M_A + (1+b)*(1/(1+(hist_B/P0)^n));
du[2] = -mu*M_B + (1/(1+(hist_A/P0)^n));
end

function g(du, u, h, p, t)
tau, mu, n, P0, b, sigma_A, sigma_B = p;
du[1] = sigma_A;
du[2] = sigma_B;
end

h(p, t) = zeros(2);

tau = 100; lag = [tau];
P0 = 0.1; n = 5;
mu = 0.03; b = 0.01;
sigma_A = 0.003; sigma_B = 0.003; # only sigma < 0.07 show realiable staeady states
p = (tau, mu, n, P0, b, sigma_A, sigma_B);
tspan = (0, 50000);
u0 = [0, 0];

prob = SDDEProblem(f, g, u0, h, tspan, p; constant_lags = lag);

# single trajectory
# sol = solve(prob, RKMil());
# plot(sol)

# small multiple trajectories

# multiple trajectories
ensembleprob = EnsembleProblem(prob);
sol = solve(ensembleprob, RKMil(), EnsembleThreads(), trajectories = 1000);
# summ = EnsembleSummary(sol, 0:1:50000);
# plot(summ)

m_sol = mean(sol ,dims = 3)

# plot(sol[1, :, 1], sol[2, :, 1], xlabel = "mRNA in cell A", ylabel = "mRNA in cell B")
``````

Sorry for posting screen shot.
This is the code

And also the â€śsolâ€ť is not a matrix. Itâ€™s an EnsembleSolution.

Is it because its a EnsembleSolution so I canâ€™t use â€śmeanâ€ť?

Thank you

typeof(sol) is an EmsembleSolution.

I wanted to plot the average trajectory. I should use EnsembleSummary(sol) to get its average trajectories then plot(â€¦, :).

1 Like