From 0b228873205401b94ad65fc9614f8343b5debc69 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:07:29 -0500 Subject: [PATCH 01/14] bump turing version --- Project.toml | 4 ++-- test/Project.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index 2ed9d63..3ece8f8 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "SliceSampling" uuid = "43f4d3e8-9711-4a8c-bd1b-03ac73a255cf" -version = "0.7" +version = "0.8" [deps] AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001" @@ -29,7 +29,7 @@ LogDensityProblems = "2" LogDensityProblemsAD = "1" Random = "1" Requires = "1" -Turing = "0.33, 0.34, 0.35" +Turing = "0.36" julia = "1.10" [extras] diff --git a/test/Project.toml b/test/Project.toml index cb3d933..25379d4 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -18,5 +18,5 @@ MCMCTesting = "0.3" Random = "1" StableRNGs = "1" Test = "1" -Turing = "0.33, 0.34, 0.35" +Turing = "0.36" julia = "1.10" From 966b8a08543e8e05e34818ef34497827e93de643 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:09:38 -0500 Subject: [PATCH 02/14] run formatter --- test/turing.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/turing.jl b/test/turing.jl index 725828a..032fa76 100644 --- a/test/turing.jl +++ b/test/turing.jl @@ -41,9 +41,7 @@ ] sample( model, - Turing.Experimental.Gibbs(( - s=externalsampler(sampler), m=externalsampler(sampler) - ),), + Turing.Gibbs(:s => externalsampler(sampler), :m => externalsampler(sampler)), n_samples; progress=false, ) From 6a6070d9aa595376443e298209425f346c28e919 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:11:53 -0500 Subject: [PATCH 03/14] fix docs --- README.md | 10 ++++------ docs/src/general.md | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4be3620..7158c10 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ model = demo() sample(model, externalsampler(sampler), n_samples) ``` -The following slice samplers can also be used as a conditional sampler in `Turing.Experimental.Gibbs` sampler: +The following slice samplers can also be used as a conditional sampler in `Turing.Gibbs` sampler: * For multidimensional variables: * `RandPermGibbs` * `HitAndRun` @@ -69,11 +69,9 @@ using SliceSampling end end -sampler = Turing.Experimental.Gibbs( - ( - p = externalsampler(SliceSteppingOut(2.0)), - z = PG(20, :z) - ) +sampler = Turing.Gibbs( + p => externalsampler(SliceSteppingOut(2.0)), + z => PG(20, :z), ) n_samples = 1000 diff --git a/docs/src/general.md b/docs/src/general.md index f48a7e7..0bc797f 100644 --- a/docs/src/general.md +++ b/docs/src/general.md @@ -60,8 +60,8 @@ model = demo() sample(model, externalsampler(sampler), n_samples) ``` -### Conditional sampling in a `Turing.Experimental.Gibbs` sampler -`SliceSampling.jl` be used as a conditional sampler in `Turing.Experimental.Gibbs`. +### Conditional sampling in a `Turing.Gibbs` sampler +`SliceSampling.jl` be used as a conditional sampler in `Turing.Gibbs`. ```@example turinggibbs using Distributions @@ -81,10 +81,8 @@ using SliceSampling end sampler = Turing.Experimental.Gibbs( - ( - p = externalsampler(SliceSteppingOut(2.0)), - z = PG(20, :z) - ) + p => externalsampler(SliceSteppingOut(2.0)), + z => PG(20, :z), ) n_samples = 1000 From f349e8cb3942ebf742b0b3f8b2c6083f87a72bd1 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:46:01 -0500 Subject: [PATCH 04/14] update Turing compat by implementing mising AbstractMCMC interfaces --- ext/SliceSamplingTuringExt.jl | 26 +++++++++----------------- src/multivariate/hitandrun.jl | 9 +++++++++ src/multivariate/randpermgibbs.jl | 9 +++++++++ src/univariate/univariate.jl | 9 +++++++++ test/runtests.jl | 6 +++--- 5 files changed, 39 insertions(+), 20 deletions(-) diff --git a/ext/SliceSamplingTuringExt.jl b/ext/SliceSamplingTuringExt.jl index fd3e6ab..c7aa33a 100644 --- a/ext/SliceSamplingTuringExt.jl +++ b/ext/SliceSamplingTuringExt.jl @@ -6,13 +6,11 @@ if isdefined(Base, :get_extension) using Random using SliceSampling using Turing - # using Turing: Turing, Experimental else using ..LogDensityProblemsAD using ..Random using ..SliceSampling using ..Turing - #using ..Turing: Turing, Experimental end # Required for using the slice samplers as `externalsampler`s in Turing @@ -24,12 +22,18 @@ function Turing.Inference.getparams( end # end -# Required for using the slice samplers as `Experimental.Gibbs` samplers in Turing +# Required for using the slice samplers as `Gibbs` samplers in Turing # begin +Turing.Inference.isgibbscomponent(::SliceSampling.RandPermGibbs) = true +Turing.Inference.isgibbscomponent(::SliceSampling.HitAndRun) = true +Turing.Inference.isgibbscomponent(::SliceSampling.Slice) = true +Turing.Inference.isgibbscomponent(::SliceSampling.SliceSteppingOut) = true +Turing.Inference.isgibbscomponent(::SliceSampling.SliceDoublingOut) = true + function Turing.Inference.getparams( - ::Turing.DynamicPPL.Model, state::SliceSampling.UnivariateSliceState + ::Turing.DynamicPPL.Model, sample::SliceSampling.UnivariateSliceState ) - return state.transition.params + return sample.transition.params end function Turing.Inference.getparams( @@ -43,18 +47,6 @@ function Turing.Inference.getparams( ) return state.transition.params end - -function Turing.Experimental.gibbs_requires_recompute_logprob( - model_dst, - ::Turing.DynamicPPL.Sampler{ - <:Turing.Inference.ExternalSampler{<:SliceSampling.AbstractSliceSampling,A,U} - }, - sampler_src, - state_dst, - state_src, -) where {A,U} - return false -end # end function SliceSampling.initial_sample(rng::Random.AbstractRNG, ℓ::Turing.LogDensityFunction) diff --git a/src/multivariate/hitandrun.jl b/src/multivariate/hitandrun.jl index f05ce72..03acf7b 100644 --- a/src/multivariate/hitandrun.jl +++ b/src/multivariate/hitandrun.jl @@ -17,6 +17,15 @@ struct HitAndRunState{T<:Transition} transition::T end +function AbstractMCMC.setparams!!( + model::AbstractMCMC.LogDensityModel, + state::HitAndRunState, + params +) + lp = LogDensityProblems.logdensity(model.logdensity, params) + return HitAndRunState(Transition(params, lp, NamedTuple())) +end + struct HitAndRunTarget{Model,Vec<:AbstractVector} model :: Model direction :: Vec diff --git a/src/multivariate/randpermgibbs.jl b/src/multivariate/randpermgibbs.jl index 366c320..4003a05 100644 --- a/src/multivariate/randpermgibbs.jl +++ b/src/multivariate/randpermgibbs.jl @@ -25,6 +25,15 @@ struct GibbsState{T<:Transition} transition::T end +function AbstractMCMC.setparams!!( + model::AbstractMCMC.LogDensityModel, + state::GibbsState, + params +) + lp = LogDensityProblems.logdensity(model.logdensity, params) + return GibbsState(Transition(params, lp, NamedTuple())) +end + struct GibbsTarget{Model,Idx<:Integer,Vec<:AbstractVector} model :: Model idx :: Idx diff --git a/src/univariate/univariate.jl b/src/univariate/univariate.jl index 0498b17..269b19e 100644 --- a/src/univariate/univariate.jl +++ b/src/univariate/univariate.jl @@ -29,6 +29,15 @@ struct UnivariateSliceState{T<:Transition} transition::T end +function AbstractMCMC.setparams!!( + model::AbstractMCMC.LogDensityModel, + state::UnivariateSliceState, + params +) + lp = LogDensityProblems.logdensity(model.logdensity, params) + return UnivariateSliceState(Transition(params, lp, NamedTuple())) +end + function AbstractMCMC.step( rng::Random.AbstractRNG, model::AbstractMCMC.LogDensityModel, diff --git a/test/runtests.jl b/test/runtests.jl index 23b4650..e23eedc 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -11,7 +11,7 @@ using StableRNGs using SliceSampling -include("univariate.jl") -include("multivariate.jl") -include("maxprops.jl") +#include("univariate.jl") +#include("multivariate.jl") +#include("maxprops.jl") include("turing.jl") From 54389e12a2906a4b31a9a0c333dda85244a43258 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:49:18 -0500 Subject: [PATCH 05/14] bump SliceSampling compat for docs --- docs/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Project.toml b/docs/Project.toml index e22c2f9..faa4148 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -25,7 +25,7 @@ PDMats = "0.11" Plots = "1" PrettyTables = "2" Random = "1" -SliceSampling = "0.6, 0.7" +SliceSampling = "0.8" StableRNGs = "1" Statistics = "1" Turing = "0.34, 0.35" From c693d3ba93723025564e8e630ba0705acf3264ff Mon Sep 17 00:00:00 2001 From: Kyurae Kim Date: Thu, 16 Jan 2025 04:50:59 +0000 Subject: [PATCH 06/14] run formatter Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/multivariate/hitandrun.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/multivariate/hitandrun.jl b/src/multivariate/hitandrun.jl index 03acf7b..8fb945c 100644 --- a/src/multivariate/hitandrun.jl +++ b/src/multivariate/hitandrun.jl @@ -18,9 +18,7 @@ struct HitAndRunState{T<:Transition} end function AbstractMCMC.setparams!!( - model::AbstractMCMC.LogDensityModel, - state::HitAndRunState, - params + model::AbstractMCMC.LogDensityModel, state::HitAndRunState, params ) lp = LogDensityProblems.logdensity(model.logdensity, params) return HitAndRunState(Transition(params, lp, NamedTuple())) From 0b6d3887b57b7e6754ef69f658d482cff03a7d59 Mon Sep 17 00:00:00 2001 From: Kyurae Kim Date: Thu, 16 Jan 2025 04:51:06 +0000 Subject: [PATCH 07/14] run formatter Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/multivariate/randpermgibbs.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/multivariate/randpermgibbs.jl b/src/multivariate/randpermgibbs.jl index 4003a05..c8ba434 100644 --- a/src/multivariate/randpermgibbs.jl +++ b/src/multivariate/randpermgibbs.jl @@ -26,9 +26,7 @@ struct GibbsState{T<:Transition} end function AbstractMCMC.setparams!!( - model::AbstractMCMC.LogDensityModel, - state::GibbsState, - params + model::AbstractMCMC.LogDensityModel, state::GibbsState, params ) lp = LogDensityProblems.logdensity(model.logdensity, params) return GibbsState(Transition(params, lp, NamedTuple())) From 66c77455d722569de797a166d89771cd6c4845b5 Mon Sep 17 00:00:00 2001 From: Kyurae Kim Date: Thu, 16 Jan 2025 04:51:11 +0000 Subject: [PATCH 08/14] run formatter Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/univariate/univariate.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/univariate/univariate.jl b/src/univariate/univariate.jl index 269b19e..13f136b 100644 --- a/src/univariate/univariate.jl +++ b/src/univariate/univariate.jl @@ -30,9 +30,7 @@ struct UnivariateSliceState{T<:Transition} end function AbstractMCMC.setparams!!( - model::AbstractMCMC.LogDensityModel, - state::UnivariateSliceState, - params + model::AbstractMCMC.LogDensityModel, state::UnivariateSliceState, params ) lp = LogDensityProblems.logdensity(model.logdensity, params) return UnivariateSliceState(Transition(params, lp, NamedTuple())) From 4d83df02ac53a0e8ece0113c9402428dccc75559 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:53:32 -0500 Subject: [PATCH 09/14] fix bump turing version in docs --- docs/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Project.toml b/docs/Project.toml index faa4148..07b6ec5 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -28,5 +28,5 @@ Random = "1" SliceSampling = "0.8" StableRNGs = "1" Statistics = "1" -Turing = "0.34, 0.35" +Turing = "0.36" julia = "1.10" From babaae7997971261555bd56f9c5653aa87c19d6a Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Wed, 15 Jan 2025 23:55:00 -0500 Subject: [PATCH 10/14] fix revert unintended commit --- test/runtests.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index e23eedc..23b4650 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -11,7 +11,7 @@ using StableRNGs using SliceSampling -#include("univariate.jl") -#include("multivariate.jl") -#include("maxprops.jl") +include("univariate.jl") +include("multivariate.jl") +include("maxprops.jl") include("turing.jl") From 64a029415ae85c1f5612c66e1ee331c11a4f9053 Mon Sep 17 00:00:00 2001 From: Kyurae Kim Date: Thu, 16 Jan 2025 13:58:17 +0000 Subject: [PATCH 11/14] fix turing Gibbs example in docs Co-authored-by: Markus Hauru --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7158c10..4162144 100644 --- a/README.md +++ b/README.md @@ -70,8 +70,8 @@ using SliceSampling end sampler = Turing.Gibbs( - p => externalsampler(SliceSteppingOut(2.0)), - z => PG(20, :z), + :p => externalsampler(SliceSteppingOut(2.0)), + :z => PG(20, :z), ) n_samples = 1000 From 467976a52464fb0d6d47c96590a05f462088fc51 Mon Sep 17 00:00:00 2001 From: Kyurae Kim Date: Thu, 16 Jan 2025 13:58:24 +0000 Subject: [PATCH 12/14] fix turing Gibbs example in docs Co-authored-by: Markus Hauru --- docs/src/general.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/general.md b/docs/src/general.md index 0bc797f..1c4b35f 100644 --- a/docs/src/general.md +++ b/docs/src/general.md @@ -81,8 +81,8 @@ using SliceSampling end sampler = Turing.Experimental.Gibbs( - p => externalsampler(SliceSteppingOut(2.0)), - z => PG(20, :z), + :p => externalsampler(SliceSteppingOut(2.0)), + :z => PG(20, :z), ) n_samples = 1000 From 0f16f120c21e7f7888e0d222e460a0b6eaf0d421 Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Thu, 16 Jan 2025 08:59:24 -0500 Subject: [PATCH 13/14] change version increment to minor version --- Project.toml | 2 +- docs/Project.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 3ece8f8..1871588 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "SliceSampling" uuid = "43f4d3e8-9711-4a8c-bd1b-03ac73a255cf" -version = "0.8" +version = "0.7.1" [deps] AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001" diff --git a/docs/Project.toml b/docs/Project.toml index 07b6ec5..2f16010 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -25,7 +25,7 @@ PDMats = "0.11" Plots = "1" PrettyTables = "2" Random = "1" -SliceSampling = "0.8" +SliceSampling = "0.7.1" StableRNGs = "1" Statistics = "1" Turing = "0.36" From 45316862c6716051d32096b686dada2da048c34c Mon Sep 17 00:00:00 2001 From: Ray Kim Date: Thu, 16 Jan 2025 08:59:59 -0500 Subject: [PATCH 14/14] fix turing example in docs --- docs/src/general.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/general.md b/docs/src/general.md index 0bc797f..def9a95 100644 --- a/docs/src/general.md +++ b/docs/src/general.md @@ -80,9 +80,9 @@ using SliceSampling end end -sampler = Turing.Experimental.Gibbs( - p => externalsampler(SliceSteppingOut(2.0)), - z => PG(20, :z), +sampler = Turing.Gibbs( + :p => externalsampler(SliceSteppingOut(2.0)), + :z => PG(20, :z), ) n_samples = 1000