Hello,
Because Distributions.jl doesn't implement all the distributions I need as priors, I thought it could be a good idea to fit a kde from KernelDensityEstimate.jl on samples that I know coming from a distribution that isn't implemented in Distributions.jl.
Anyway, although I tried to follow the Advanced Usage guide on definign new distributions, I keep getting the error in the title.
I managed to reproduce the behaviour in this MWE:
using Turing, DifferentialEquations
using Distributions
using LinearAlgebra, StatsBase #plt and normalize the histogram
using KernelDensityEstimate
import Distributions: logpdf, maximum, minimum, ContinuousUnivariateDistribution
import Base: rand
# Import MCMCChain, Plots, and StatsPlots for visualizations and diagnostics.
using MCMCChains, Plots, StatsPlots
# Set a seed for reproducibility.
using Random
Random.seed!(14);
# In this MWE ,we use turing to calirbate a DifferentialEquations.jl model
function lotka_volterra(du,u,p,t)
x, y = u
ฮฑ, ฮฒ, ฮณ, ฮด = p
du[1] = (ฮฑ - ฮฒ*y)x
du[2] = (ฮด*x - ฮณ)y
end
# check that the DifferentialEquations.jl model works
p = [1.5, 1.0, 3.0, 1.0]
u0 = [1.0,1.0]
prob1 = ODEProblem(lotka_volterra,u0,(0.0,10.0),p)
sol = solve(prob1,Tsit5())
# generate fake data w.r.t calibrate
sol1 = solve(prob1,Tsit5(),saveat=0.1)
odedata = Array(sol1) + 0.8 * randn(size(Array(sol1)))
plot(sol1, alpha = 0.3, legend = false); scatter!(sol1.t, odedata')
# set Distributions.jl priors
const priors = [Normal(1.5,0.5),Normal(1.2,0.5), Normal(3.0,0.5), Normal(1.0,0.5)]
# As far as I have understood, Turing wouldn't accept an arraydist the ::BallTreeDensities we are going to fit. So we define a struct that will mask a ::BallTreeDensity as a Distributions.jl density.
mutable struct kde_prior <: ContinuousUnivariateDistribution
prior::BallTreeDensity
end
# implement required methods
logpdf(d::kde_prior, x::Real) = log(d.prior([x])[1])
rand(d::kde_prior) = rand(d.prior)[1]
maximum(d::kde_prior) = Inf
minimum(d::kde_prior) = -Inf
# create array of kde fitted on inverse of normal samples. This is inteded to model the prior of the inverse of a normal random variable.
const fitted_priors = [kde_prior(kde!( 1 ./ rand(prior, 100))) for prior in priors]
#turing model
@model function fitlv2(data::Array{Float64,2}, prob1, priors, ::Type{T} = Float64) where {T} # data should be a Vector
ฯ ~ InverseGamma(2, 3)
p = Vector{T}(undef, length(priors))
for (i,prior) in enumerate(priors)
p[i] ~ prior
end
predicted::Vector{Vector{T}} = solve(prob1,Tsit5(); p = p , saveat=0.1).u
for i = 1:length(predicted)
data[:,i] ~ MvNormal(predicted[i], ฯ)
end
end
# check that the turing model works if given priors coming from Distributions.jl
model= fitlv2(odedata, prob1, priors)
chain = sample(model, NUTS(.234), 10, progress = true)
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
Sampling: 100%|โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| Time: 0:00:00
31.813234 seconds (125.79 M allocations: 4.187 GiB, 3.23% gc time)
Chains MCMC chain (10ร17ร1 Array{Float64,3}):
Iterations = 1:10
Thinning interval = 1
Chains = 1
Samples per chain = 10
parameters = p[1], p[2], p[3], p[4], ฯ
internals = acceptance_rate, hamiltonian_energy, hamiltonian_energy_error, is_accept, log_density, lp, max_hamiltonian_energy_error, n_steps, nom_step_size, numerical_error, step_size, tree_depth
Summary Statistics
parameters mean std naive_se mcse ess rhat
Symbol Float64 Float64 Float64 Missing Float64 Float64
p[1] -0.0651 0.0000 0.0000 missing NaN NaN
p[2] -1.5931 0.0000 0.0000 missing NaN NaN
p[3] -0.7337 0.0000 0.0000 missing NaN NaN
p[4] 0.8127 0.0000 0.0000 missing NaN NaN
ฯ 0.7681 0.0000 0.0000 missing NaN NaN
Quantiles
parameters 2.5% 25.0% 50.0% 75.0% 97.5%
Symbol Float64 Float64 Float64 Float64 Float64
p[1] -0.0651 -0.0651 -0.0651 -0.0651 -0.0651
p[2] -1.5931 -1.5931 -1.5931 -1.5931 -1.5931
p[3] -0.7337 -0.7337 -0.7337 -0.7337 -0.7337
p[4] 0.8127 0.8127 0.8127 0.8127 0.8127
ฯ 0.7681 0.7681 0.7681 0.7681 0.7681
But If try to use the fitted_priors coming from KernelDensityEstimate.jl, I get the following error:
model= fitlv2(odedata, prob1, fitted_priors)
chain = sample(model, NUTS(.234), 10, progress = true)
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
โ Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
โ @ DiffEqBase C:\Users\claud\.julia\packages\DiffEqBase\znIav\src\integrator_interface.jl:342
MethodError: no method matching (::BallTreeDensity)(::Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1})
Closest candidates are:
Any(!Matched::Array{Float64,2}) at C:\Users\claud\.julia\packages\KernelDensityEstimate\phdTb\src\DualTree01.jl:431
Any(!Matched::Array{Float64,2}, !Matched::Bool) at C:\Users\claud\.julia\packages\KernelDensityEstimate\phdTb\src\DualTree01.jl:431
Any(!Matched::Array{Float64,2}, !Matched::Bool, !Matched::Float64) at C:\Users\claud\.julia\packages\KernelDensityEstimate\phdTb\src\DualTree01.jl:431
...
Stacktrace:
[1] logpdf(::kde_prior, ::ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}) at .\In[3]:45
[2] (::Bijectors.var"#5#7"{kde_prior})(::ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}) at C:\Users\claud\.julia\packages\Bijectors\0PJJc\src\Bijectors.jl:150
[3] map(::Function, ::ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}) at .\number.jl:220
[4] logpdf_with_trans(::kde_prior, ::ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}, ::Bool) at C:\Users\claud\.julia\packages\Bijectors\0PJJc\src\Bijectors.jl:150
[5] assume(::Random._GLOBAL_RNG, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::kde_prior, ::DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}}, ::DynamicPPL.ThreadSafeVarInfo{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}}}},ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},Array{Base.RefValue{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},1}}) at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\inference\hmc.jl:524
[6] _tilde(::Random._GLOBAL_RNG, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::kde_prior, ::DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}}, ::DynamicPPL.ThreadSafeVarInfo{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}}}},ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},Array{Base.RefValue{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},1}}) at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\context_implementations.jl:59
[7] tilde(::Random._GLOBAL_RNG, ::DynamicPPL.DefaultContext, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::kde_prior, ::DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}}, ::Tuple{Tuple{Int64}}, ::DynamicPPL.ThreadSafeVarInfo{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}}}},ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},Array{Base.RefValue{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},1}}) at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\context_implementations.jl:23
[8] tilde_assume(::Random._GLOBAL_RNG, ::DynamicPPL.DefaultContext, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::kde_prior, ::DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}}, ::Tuple{Tuple{Int64}}, ::DynamicPPL.ThreadSafeVarInfo{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}}}},ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},Array{Base.RefValue{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},1}}) at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\context_implementations.jl:52
[9] #7 at .\In[3]:61 [inlined]
[10] (::var"#7#8")(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}, ::DynamicPPL.ThreadSafeVarInfo{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}}}},ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},Array{Base.RefValue{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}},1}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::DynamicPPL.DefaultContext, ::Array{Float64,2}, ::ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem}, ::Array{kde_prior,1}, ::Type{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}}) at .\none:0
[11] macro expansion at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\model.jl:0 [inlined]
[12] _evaluate at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\model.jl:154 [inlined]
[13] evaluate_threadsafe at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\model.jl:144 [inlined]
[14] (::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}})(::Random._GLOBAL_RNG, ::DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1},Array{Set{DynamicPPL.Selector},1}}}},ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::DynamicPPL.DefaultContext) at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\model.jl:94
[15] Model at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\model.jl:98 [inlined]
[16] f at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\core\ad.jl:111 [inlined]
[17] vector_mode_dual_eval at C:\Users\claud\.julia\packages\ForwardDiff\qTmqf\src\apiutils.jl:37 [inlined]
[18] vector_mode_gradient!(::Array{Float64,1}, ::Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext}, ::Array{Float64,1}, ::ForwardDiff.GradientConfig{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5,Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1}}) at C:\Users\claud\.julia\packages\ForwardDiff\qTmqf\src\gradient.jl:105
[19] gradient! at C:\Users\claud\.julia\packages\ForwardDiff\qTmqf\src\gradient.jl:37 [inlined]
[20] gradient!(::Array{Float64,1}, ::Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext}, ::Array{Float64,1}, ::ForwardDiff.GradientConfig{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5,Array{ForwardDiff.Dual{ForwardDiff.Tag{Turing.Core.var"#f#1"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.DefaultContext},Float64},Float64,5},1}}) at C:\Users\claud\.julia\packages\ForwardDiff\qTmqf\src\gradient.jl:35
[21] gradient_logp(::Turing.Core.ForwardDiffAD{40}, ::Array{Float64,1}, ::DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}, ::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::DynamicPPL.DefaultContext) at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\core\ad.jl:121
[22] gradient_logp at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\core\ad.jl:83 [inlined] (repeats 2 times)
[23] โlogฯโฮธ at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\inference\hmc.jl:477 [inlined]
[24] โHโฮธ at C:\Users\claud\.julia\packages\AdvancedHMC\MIxdK\src\hamiltonian.jl:31 [inlined]
[25] phasepoint at C:\Users\claud\.julia\packages\AdvancedHMC\MIxdK\src\hamiltonian.jl:69 [inlined]
[26] phasepoint(::Random._GLOBAL_RNG, ::Array{Float64,1}, ::AdvancedHMC.Hamiltonian{AdvancedHMC.DiagEuclideanMetric{Float64,Array{Float64,1}},Turing.Inference.var"#logฯ#52"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}},Turing.Inference.var"#โlogฯโฮธ#51"{DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}}}) at C:\Users\claud\.julia\packages\AdvancedHMC\MIxdK\src\hamiltonian.jl:139
[27] initialstep(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::DynamicPPL.VarInfo{NamedTuple{(:ฯ, :p),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:ฯ,Tuple{}},Int64},Array{InverseGamma{Float64},1},Array{DynamicPPL.VarName{:ฯ,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},Int64},Array{kde_prior,1},Array{DynamicPPL.VarName{:p,Tuple{Tuple{Int64}}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}; init_params::Nothing, nadapts::Int64, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\inference\hmc.jl:174
[28] step(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}; resume_from::Nothing, kwargs::Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:nadapts,),Tuple{Int64}}}) at C:\Users\claud\.julia\packages\DynamicPPL\u14IH\src\sampler.jl:83
[29] macro expansion at C:\Users\claud\.julia\packages\AbstractMCMC\Nw3Wn\src\sample.jl:78 [inlined]
[30] macro expansion at C:\Users\claud\.julia\packages\ProgressLogging\BBN0b\src\ProgressLogging.jl:328 [inlined]
[31] (::AbstractMCMC.var"#20#21"{Bool,String,Nothing,Int64,Int64,Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:nadapts,),Tuple{Int64}}},Random._GLOBAL_RNG,DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}},DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}},Int64,Int64})() at C:\Users\claud\.julia\packages\AbstractMCMC\Nw3Wn\src\logging.jl:11
[32] with_logstate(::Function, ::Any) at .\logging.jl:408
[33] with_logger at .\logging.jl:514 [inlined]
[34] with_progresslogger(::Function, ::Module, ::Base.CoreLogging.SimpleLogger) at C:\Users\claud\.julia\packages\AbstractMCMC\Nw3Wn\src\logging.jl:34
[35] macro expansion at C:\Users\claud\.julia\packages\AbstractMCMC\Nw3Wn\src\logging.jl:10 [inlined]
[36] mcmcsample(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::Int64; progress::Bool, progressname::String, callback::Nothing, discard_initial::Int64, thinning::Int64, chain_type::Type{T} where T, kwargs::Base.Iterators.Pairs{Symbol,Int64,Tuple{Symbol},NamedTuple{(:nadapts,),Tuple{Int64}}}) at C:\Users\claud\.julia\packages\AbstractMCMC\Nw3Wn\src\sample.jl:76
[37] sample(::Random._GLOBAL_RNG, ::DynamicPPL.Model{var"#7#8",(:data, :prob1, :priors, :T),(:T,),(),Tuple{Array{Float64,2},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,1},ODEFunction{true,typeof(lotka_volterra),UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},Array{kde_prior,1},Type{Float64}},Tuple{Type{Float64}}}, ::DynamicPPL.Sampler{NUTS{Turing.Core.ForwardDiffAD{40},(),AdvancedHMC.DiagEuclideanMetric}}, ::Int64; chain_type::Type{T} where T, resume_from::Nothing, progress::Bool, nadapts::Int64, discard_adapt::Bool, discard_initial::Int64, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\inference\hmc.jl:140
[38] #sample#2 at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\inference\Inference.jl:143 [inlined]
[39] #sample#1 at C:\Users\claud\.julia\packages\Turing\O1Pn0\src\inference\Inference.jl:133 [inlined]
[40] top-level scope at .\timing.jl:174 [inlined]
[41] top-level scope at .\In[6]:0
[42] include_string(::Function, ::Module, ::String, ::String) at .\loading.jl:1091
Because it could be related to how KernelDensityEstimate.jl works, I'd also like to pull in @dehann .
Thanks in advance
The problem is that apparently KernelDensityEstimate does not support dual numbers:
MethodError: no method matching (::BallTreeDensity)(::Array{ForwardDiff.Dual{...},1})
So I don't think there's anything that Turing can do here.
You could try to use a different AD backend but I am pretty sure that Tracker and ReverseDiff will have the same problems, and I assume Zygote might fail as well. Alternatively, you can define a custom adjoint for the AD backend that you use to avoid that the backend has to differentiate through logpdf(::kde_prior, ::Real).
I'm closing this now since it seems to be an AD rather than Turing issue. Please reopen if you need additional help.
You can also use the new discussion section for questions that are not about issues or bugs in Turing itself.
Most helpful comment
You can also use the new discussion section for questions that are not about issues or bugs in Turing itself.