-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds @returned_quantities
macro
#696
Open
torfjelde
wants to merge
57
commits into
master
Choose a base branch
from
torfjelde/returned-quantities-macro
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+405
−39
Open
Changes from all commits
Commits
Show all changes
57 commits
Select commit
Hold shift + click to select a range
5c746c4
Added `@returned_quantities` macro
torfjelde 0b081b7
Added `@returned_quantities` to the docs
torfjelde dc699a5
Fixed names of doctests for `@returned_quantities`
torfjelde 7067695
Update src/submodel_macro.jl
torfjelde 8cb0796
Added `@prefix` macro which calls `prefix` with a `Val` argument to
torfjelde 2d887c9
Convert the result of `prefix_expr` in `@prefix` into a `Sybmol`
torfjelde 692cfff
Export `prefix` and `@prefix`
torfjelde 32fd6b9
Updated docstring for `@returned_quantities`
torfjelde 5478fb3
Fixed bug in `rand` for `Model` where it would duplicate the non-leaf
torfjelde 5fe65b3
Merge remote-tracking branch 'origin/torfjelde/returned-quantities-ma…
torfjelde 9e0730f
Update src/contexts.jl
torfjelde cc3af46
Added `prefix` and `@prefix` to docs
torfjelde 720053a
removed the prefix=... syntax for `@returned_quantities`
torfjelde fe0403f
added deprecation.jl + deprecated `generated_quantities` in favour of…
torfjelde 55b95a1
removed export of `prefix` and `generated_quantities` (the latter is
torfjelde 34fb6bd
updated `DynamicPPLMCMCChainsExt` to define `returned_quantities`
torfjelde 9a7e18f
updated docs
torfjelde 7aef65b
Update docs/src/api.md
torfjelde 5ee727b
improved docstring for `prefix` and `@prefix`
torfjelde d92141c
added `@returned_quantities` macro taking two arguments + removed
torfjelde 64b519d
updated docs to reflect the new two-argument `@returned_quantities`
torfjelde 1b48f65
added depwarn to `@submodel` macro
torfjelde db2102c
fixed reference
torfjelde da95aba
fixed reference to `@prefix` in `@returned_quantities` macro
torfjelde c8d567f
actually fixed doc references
torfjelde d477137
updated doctests for `@submodel` to include the depwarn + added
torfjelde 4896793
Merge branch 'master' into torfjelde/returned-quantities-macro
torfjelde 946fa6d
Merge branch 'master' into torfjelde/returned-quantities-macro
torfjelde bf35de4
added `to_sampleable` and limited `~` handling for submodels
torfjelde 0f20624
added docs to `to_sampleable` + removed the unnecessary macro exports
torfjelde 99d99b3
updated more docstrings
torfjelde 0597b2a
added testing of deprecation warning of `@submodel` + replaced some
torfjelde 0c6bada
Update test/compiler.jl
torfjelde 5134ff7
renamed `returned_quantities` to `returned` as requested
torfjelde 45451f7
removed redundant `SampleableModelWrapper` in favour of
torfjelde c00a9ae
updated tests + docstrings + warnings to use `returned`
torfjelde f0af1d5
updated docs
torfjelde 1b231a9
formatting
torfjelde 1faa627
Update src/model.jl
torfjelde 92ac6b9
fix docs
torfjelde f73d1b0
Merge branch 'master' into torfjelde/returned-quantities-macro
torfjelde b7b2e1d
export `to_sampleable` and add to docs
torfjelde ed4bb76
fixed typo in warning
torfjelde 36f02f6
removed unnecessary import in docstring
torfjelde 98538c5
added docstring to `rand_like!!`
torfjelde d316306
fixed docstring for `returned(model)`
torfjelde 0e05901
improvements to docstrings thanks to @penelopesym
torfjelde f073b25
added abstract type `Distributional` and concrete type `Sampleable`,
torfjelde 2ec03c1
replaced usages of `returned` with `to_submodel`
torfjelde 1f70dfc
formatting
torfjelde f645259
Merge remote-tracking branch 'origin/torfjelde/returned-quantities-ma…
torfjelde 23355ea
Update docs/src/api.md
torfjelde 0e82a60
removed export of `to_sampleable` since it currently has no purpose +
torfjelde b9017c4
formatting
torfjelde 6e149a3
Merge remote-tracking branch 'origin/torfjelde/returned-quantities-ma…
torfjelde 933e4ed
updated docstring for `condition` and `fix` to not use `@submdoel`
torfjelde 4fc7b76
added `check_tilde_rhs` for `Sampleable`
torfjelde File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -141,8 +141,12 @@ By default, calls `tilde_assume(context, right, vn, vi)` and accumulates the log | |
probability of `vi` with the returned value. | ||
""" | ||
function tilde_assume!!(context, right, vn, vi) | ||
value, logp, vi = tilde_assume(context, right, vn, vi) | ||
return value, acclogp_assume!!(context, vi, logp) | ||
return if is_rhs_model(right) | ||
rand_like!!(right, context, vi) | ||
else | ||
value, logp, vi = tilde_assume(context, right, vn, vi) | ||
value, acclogp_assume!!(context, vi, logp) | ||
end | ||
end | ||
|
||
# observe | ||
|
@@ -197,6 +201,11 @@ Falls back to `tilde_observe!!(context, right, left, vi)` ignoring the informati | |
and indices; if needed, these can be accessed through this function, though. | ||
""" | ||
function tilde_observe!!(context, right, left, vname, vi) | ||
is_rhs_model(right) && throw( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Once we want "more" things to be allowed on |
||
ArgumentError( | ||
"`~` with a model on the right-hand side of an observe statement is not supported", | ||
), | ||
) | ||
return tilde_observe!!(context, right, left, vi) | ||
end | ||
|
||
|
@@ -210,6 +219,11 @@ By default, calls `tilde_observe(context, right, left, vi)` and accumulates the | |
probability of `vi` with the returned value. | ||
""" | ||
function tilde_observe!!(context, right, left, vi) | ||
is_rhs_model(right) && throw( | ||
ArgumentError( | ||
"`~` with a model on the right-hand side of an observe statement is not supported", | ||
), | ||
) | ||
logp, vi = tilde_observe(context, right, left, vi) | ||
return left, acclogp_observe!!(context, vi, logp) | ||
end | ||
|
@@ -420,8 +434,12 @@ model inputs), accumulate the log probability, and return the sampled value and | |
Falls back to `dot_tilde_assume(context, right, left, vn, vi)`. | ||
""" | ||
function dot_tilde_assume!!(context, right, left, vn, vi) | ||
value, logp, vi = dot_tilde_assume(context, right, left, vn, vi) | ||
return value, acclogp_assume!!(context, vi, logp), vi | ||
return if is_rhs_model(right) | ||
rand_like!!(right, context, vi) | ||
else | ||
value, logp, vi = dot_tilde_assume(context, right, left, vn, vi) | ||
value, acclogp_assume!!(context, vi, logp) | ||
end | ||
end | ||
|
||
# `dot_assume` | ||
|
@@ -672,6 +690,11 @@ Falls back to `dot_tilde_observe!!(context, right, left, vi)` ignoring the infor | |
name and indices; if needed, these can be accessed through this function, though. | ||
""" | ||
function dot_tilde_observe!!(context, right, left, vn, vi) | ||
is_rhs_model(right) && throw( | ||
ArgumentError( | ||
"`~` with a model on the right-hand side of an observe statement is not supported", | ||
), | ||
) | ||
return dot_tilde_observe!!(context, right, left, vi) | ||
end | ||
|
||
|
@@ -684,6 +707,11 @@ probability, and return the observed value and updated `vi`. | |
Falls back to `dot_tilde_observe(context, right, left, vi)`. | ||
""" | ||
function dot_tilde_observe!!(context, right, left, vi) | ||
is_rhs_model(right) && throw( | ||
ArgumentError( | ||
"`~` with a model on the right-hand side of an observe statement is not supported", | ||
), | ||
) | ||
logp, vi = dot_tilde_observe(context, right, left, vi) | ||
return left, acclogp_observe!!(context, vi, logp) | ||
end | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
@deprecate generated_quantities(model, params) returned(model, params) |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This can be generalized as we desire, e.g. if want to do something special with
lantent(model)
, we can overload this to betrue
and then overloadrand_like!!