From 99df54b34c09262c1509c2622d74221568c33ff5 Mon Sep 17 00:00:00 2001 From: Tor Erlend Fjelde Date: Fri, 30 Jul 2021 16:06:01 +0000 Subject: [PATCH] Fix for unwrap_left_right_vns (#297) I just noticed a bug I introduced in a recent PR when looking at #295 . This PR fixes it. I'll add tests, a sec. @yebai --- Project.toml | 2 +- src/compiler.jl | 17 ++++++++++++++++- test/Project.toml | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index 5678c050a..0b92e07d2 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "DynamicPPL" uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8" -version = "0.13.0" +version = "0.13.1" [deps] AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001" diff --git a/src/compiler.jl b/src/compiler.jl index c70bbff1e..6de2f0945 100644 --- a/src/compiler.jl +++ b/src/compiler.jl @@ -90,6 +90,21 @@ left-hand side of a `.~` expression such as `x .~ Normal()`. This is used mainly to unwrap `NamedDist` distributions and adjust the indices of the variables. + +# Example +```jldoctest; setup=:(using Distributions) +julia> _, _, vns = DynamicPPL.unwrap_right_left_vns(MvNormal(1, 1.0), randn(1, 2), @varname(x)); string(vns[end]) +"x[:,2]" + +julia> _, _, vns = DynamicPPL.unwrap_right_left_vns(Normal(), randn(1, 2), @varname(x[:])); string(vns[end]) +"x[:][1,2]" + +julia> _, _, vns = DynamicPPL.unwrap_right_left_vns(Normal(), randn(3), @varname(x[1])); string(vns[end]) +"x[1][3]" + +julia> _, _, vns = DynamicPPL.unwrap_right_left_vns(Normal(), randn(1, 2, 3), @varname(x)); string(vns[end]) +"x[1,2,3]" +``` """ unwrap_right_left_vns(right, left, vns) = right, left, vns function unwrap_right_left_vns(right::NamedDist, left, vns) @@ -103,7 +118,7 @@ function unwrap_right_left_vns( # for `i = size(left, 2)`. Hence the symbol should be `x[:, i]`, # and we therefore add the `Colon()` below. vns = map(axes(left, 2)) do i - return VarName(vn, (vn.indexing..., Colon(), Tuple(i))) + return VarName(vn, (vn.indexing..., (Colon(), i))) end return unwrap_right_left_vns(right, left, vns) end diff --git a/test/Project.toml b/test/Project.toml index 9ca62c79e..c523f6092 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -20,7 +20,7 @@ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [compat] AbstractMCMC = "2.1, 3.0" -AbstractPPL = "0.1.4, 0.2" +AbstractPPL = "0.2" Bijectors = "0.9.5" Distributions = "< 0.25.11" DistributionsAD = "0.6.3"