DynamicPPL.jl
DynamicPPL.jl copied to clipboard
`BangBang.setindex!!(vi::SimpleVarInfo{<:AbstractDict}, val, vn::VarName)` returns eltype Any arrays when `vn` is multidimensional
MWE
julia> using DynamicPPL
[ Info: Precompiling DynamicPPL [366bfd00-2699-11ea-058f-f148b4cae6d8]
julia> svi = SimpleVarInfo(Dict(@varname(a)=>zeros(2, 2)))
SimpleVarInfo(Dict(a => [0.0 0.0; 0.0 0.0]), 0.0)
julia> DynamicPPL.setindex!!(svi, ones(2, 2), @varname(a[1:2, 1:2]))
SimpleVarInfo(Dict{VarName{:a, Setfield.IdentityLens}, Matrix{Any}}(a => [1.0 1.0; 1.0 1.0]), 0.0)
Possible solutions:
- Define
BangBang.possiblefunction like https://github.com/TuringLang/DynamicPPL.jl/blob/ba16e3bc91e293c58b03ad287637472d6e11f52f/src/utils.jl#L504-L535 - (Worse performance) add implementation for
BangBang.NoBang._setindexwith second argument being an array
More similar issues: https://github.com/TuringLang/Turing.jl/discussions/2094#discussioncomment-7212953