Skip to content

Commit 697c208

Browse files
committed
Add Gibbs tests for non-identity VarNames and submodels
1 parent 89bf31a commit 697c208

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

test/mcmc/gibbs.jl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,39 @@ end
723723
end
724724
end
725725

726+
@testset "non-identity varnames" begin
727+
struct Wrap{T}
728+
a::T
729+
end
730+
@model function model1(::Type{T}=Float64) where {T}
731+
x = Vector{T}(undef, 1)
732+
x[1] ~ Normal()
733+
y = Wrap{T}(0.0)
734+
return y.a ~ Normal()
735+
end
736+
model = model1()
737+
spl = Gibbs(@varname(x[1]) => HMC(0.5, 10), @varname(y.a) => MH())
738+
@test sample(model, spl, 10) isa MCMCChains.Chains
739+
spl = Gibbs((@varname(x[1]), @varname(y.a)) => HMC(0.5, 10))
740+
@test sample(model, spl, 10) isa MCMCChains.Chains
741+
end
742+
743+
@testset "submodels" begin
744+
@model inner() = x ~ Normal()
745+
@model function outer()
746+
a ~ to_submodel(inner())
747+
_ignored ~ to_submodel(prefix(inner(), @varname(b)), false)
748+
return _also_ignored ~ to_submodel(inner(), false)
749+
end
750+
model = outer()
751+
spl = Gibbs(
752+
@varname(a.x) => HMC(0.5, 10), @varname(b.x) => MH(), @varname(x) => MH()
753+
)
754+
@test sample(model, spl, 10) isa MCMCChains.Chains
755+
spl = Gibbs((@varname(a.x), @varname(b.x), @varname(x)) => MH())
756+
@test sample(model, spl, 10) isa MCMCChains.Chains
757+
end
758+
726759
@testset "CSMC + ESS" begin
727760
rng = Random.default_rng()
728761
model = MoGtest_default

0 commit comments

Comments
 (0)