@@ -96,7 +96,7 @@ Return a `Model` which now treats variables on the right-hand side as observatio
9696
9797See [`condition`](@ref) for more information and examples.
9898"""
99- Base.:| (model:: Model , values:: Union{Tuple,NamedTuple,AbstractDict{<:VarName}} ) =
99+ Base.:| (model:: Model , values:: Union{Pair, Tuple,NamedTuple,AbstractDict{<:VarName}} ) =
100100 condition (model, values)
101101
102102"""
@@ -281,14 +281,14 @@ end
281281
282282Convert different types of input to either a `NamedTuple` or `AbstractDict` of
283283conditioning values, suitable for storage in a `ConditionContext`.
284+
285+ This handles all the cases where `vals` is either already a NamedTuple or
286+ AbstractDict (e.g. `model | (x=1, y=2)`), as well as if they are splatted (e.g.
287+ `condition(model, x=1, y=2)`).
284288"""
285- # Case 1: Already in the right format, e.g. condition(model, (x=1, y=2))
286289_make_conditioning_values (values:: Union{NamedTuple,AbstractDict} ) = values
287- # Case 2: condition(model, (@varname(x) => 1, @varname(y) => 2))
288290_make_conditioning_values (values:: Tuple{Pair{<:VarName}} ) = Dict (values)
289- # Case 3: Case 1 but splatted, e.g. condition(model, x=1, y=2)
290291_make_conditioning_values (v:: Pair{<:Symbol} , vs:: Pair{<:Symbol} ...) = NamedTuple (v, vs... )
291- # Case 4: Case 2 but splatted, e.g. condition(model, @varname(x) => 1, @varname(y) => 2)
292292_make_conditioning_values (v:: Pair{<:VarName} , vs:: Pair{<:VarName} ...) = Dict (v, vs... )
293293
294294"""
401401```
402402"""
403403function AbstractPPL. decondition (model:: Model , syms... )
404- return contextualize (model, decondition (model. context, syms... ))
404+ return contextualize (model, decondition_context (model. context, syms... ))
405405end
406406
407407"""
@@ -435,7 +435,7 @@ julia> # Returns all the variables we have conditioned on + their values.
435435(x = 100.0, m = 1.0)
436436
437437julia> # Nested ones also work (note that `PrefixContext` does nothing to the result).
438- cm = condition(contextualize(m, PrefixContext{:a}(condition( m=1.0))), x=100.0);
438+ cm = condition(contextualize(m, PrefixContext{:a}(ConditionContext(( m=1.0,) ))), x=100.0);
439439
440440julia> conditioned(cm)
441441(x = 100.0, m = 1.0)
@@ -447,15 +447,15 @@ julia> # Since we conditioned on `m`, not `a.m` as it will appear after prefixed
447447 a.m
448448
449449julia> # If we instead condition on `a.m`, `m` in the model will be considered an observation.
450- cm = condition(contextualize(m, PrefixContext{:a}(condition( var"a.m"=1.0))), x=100.0);
450+ cm = condition(contextualize(m, PrefixContext{:a}(ConditionContext(( var"a.m"=1.0,) ))), x=100.0);
451451
452452julia> conditioned(cm).x
453453100.0
454454
455455julia> conditioned(cm).var"a.m"
4564561.0
457457
458- julia> keys(VarInfo(cm)) # <= no variables are sampled
458+ julia> keys(VarInfo(cm)) # No variables are sampled
459459VarName[]
460460```
461461"""
0 commit comments