@@ -187,13 +187,13 @@ standardizeθ(prob::TuringMuseProblem, θ::Number) =
187
187
188
188
function logLike (prob:: TuringMuseProblem , x, z, θ, θ_space)
189
189
trans = is_transformed (θ_space) ? prob. trans_z′_θ′ : prob. trans_z′_θ
190
- vi = DynPPL. SimpleVarInfo ((;x... , z... , θ... ), 0 , trans)
190
+ vi = DynPPL. SimpleVarInfo ((;x... , z... , θ... ), trans)
191
191
DynPPL. logjoint (prob. model, vi)
192
192
end
193
193
194
194
function logPriorθ (prob:: TuringMuseProblem , θ, θ_space)
195
195
trans = is_transformed (θ_space) ? prob. trans_z′_θ′ : prob. trans_z′_θ
196
- vi = DynPPL. SimpleVarInfo ((;θ... ), 0 , trans)
196
+ vi = DynPPL. SimpleVarInfo ((;θ... ), trans)
197
197
DynPPL. logprior (prob. model_for_prior, vi)
198
198
end
199
199
@@ -210,13 +210,23 @@ end
210
210
211
211
function sample_x_z (prob:: TuringMuseProblem , rng:: AbstractRNG , θ)
212
212
model = DynPPL. condition (prob. model, θ)
213
- vi = DynPPL. SimpleVarInfo ((;), 0 , prob. trans_z′_θ)
213
+ vi = DynPPL. SimpleVarInfo ((;θ ... ) , prob. trans_z′_θ)
214
214
vars = DynPPL. values_as (last (DynPPL. evaluate!! (model, rng, vi)), NamedTuple)
215
215
(x = ComponentVector (select (vars, prob. observed_vars)), z = ComponentVector (select (vars, prob. latent_vars)))
216
216
end
217
217
218
218
219
219
220
+ # benevolent type-piracy:
221
+ function DynPPL. SimpleVarInfo (nt:: NamedTuple , trans:: DynPPL.AbstractTransformation )
222
+ if isempty (nt)
223
+ T = DynPPL. SIMPLEVARINFO_DEFAULT_ELTYPE
224
+ else
225
+ T = DynPPL. float_type_with_fallback (DynPPL. infer_nested_eltype (typeof (nt)))
226
+ end
227
+ DynPPL. SimpleVarInfo (nt, zero (T), trans)
228
+ end
229
+
220
230
function _namedtuple (vi:: DynPPL.VarInfo )
221
231
# `values_as` seems to return Real arays so narrow eltype
222
232
map (x -> identity .(x), DynPPL. values_as (vi, NamedTuple))
0 commit comments