@@ -96,7 +96,7 @@ Return a `Model` which now treats variables on the right-hand side as observatio
96
96
97
97
See [`condition`](@ref) for more information and examples.
98
98
"""
99
- Base.:| (model:: Model , values:: Union{Tuple,NamedTuple,AbstractDict{<:VarName}} ) =
99
+ Base.:| (model:: Model , values:: Union{Pair, Tuple,NamedTuple,AbstractDict{<:VarName}} ) =
100
100
condition (model, values)
101
101
102
102
"""
@@ -281,14 +281,14 @@ end
281
281
282
282
Convert different types of input to either a `NamedTuple` or `AbstractDict` of
283
283
conditioning 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)`).
284
288
"""
285
- # Case 1: Already in the right format, e.g. condition(model, (x=1, y=2))
286
289
_make_conditioning_values (values:: Union{NamedTuple,AbstractDict} ) = values
287
- # Case 2: condition(model, (@varname(x) => 1, @varname(y) => 2))
288
290
_make_conditioning_values (values:: Tuple{Pair{<:VarName}} ) = Dict (values)
289
- # Case 3: Case 1 but splatted, e.g. condition(model, x=1, y=2)
290
291
_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)
292
292
_make_conditioning_values (v:: Pair{<:VarName} , vs:: Pair{<:VarName} ...) = Dict (v, vs... )
293
293
294
294
"""
401
401
```
402
402
"""
403
403
function AbstractPPL. decondition (model:: Model , syms... )
404
- return contextualize (model, decondition (model. context, syms... ))
404
+ return contextualize (model, decondition_context (model. context, syms... ))
405
405
end
406
406
407
407
"""
@@ -435,7 +435,7 @@ julia> # Returns all the variables we have conditioned on + their values.
435
435
(x = 100.0, m = 1.0)
436
436
437
437
julia> # 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);
439
439
440
440
julia> conditioned(cm)
441
441
(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
447
447
a.m
448
448
449
449
julia> # 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);
451
451
452
452
julia> conditioned(cm).x
453
453
100.0
454
454
455
455
julia> conditioned(cm).var"a.m"
456
456
1.0
457
457
458
- julia> keys(VarInfo(cm)) # <= no variables are sampled
458
+ julia> keys(VarInfo(cm)) # No variables are sampled
459
459
VarName[]
460
460
```
461
461
"""
0 commit comments