|
723 | 723 | end
|
724 | 724 | end
|
725 | 725 |
|
| 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 | + |
726 | 759 | @testset "CSMC + ESS" begin
|
727 | 760 | rng = Random.default_rng()
|
728 | 761 | model = MoGtest_default
|
|
0 commit comments