Skip to content

Commit 08e47db

Browse files
Red-Portalgithub-actions[bot]mhauru
authored
Bump turing version 0.36 (#22)
* bump turing version * update Turing compat by implementing mising AbstractMCMC interfaces * bump SliceSampling compat for docs --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Markus Hauru <markus@mhauru.org>
1 parent 731239a commit 08e47db

File tree

10 files changed

+45
-38
lines changed

10 files changed

+45
-38
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "SliceSampling"
22
uuid = "43f4d3e8-9711-4a8c-bd1b-03ac73a255cf"
3-
version = "0.7"
3+
version = "0.7.1"
44

55
[deps]
66
AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001"
@@ -29,7 +29,7 @@ LogDensityProblems = "2"
2929
LogDensityProblemsAD = "1"
3030
Random = "1"
3131
Requires = "1"
32-
Turing = "0.33, 0.34, 0.35"
32+
Turing = "0.36"
3333
julia = "1.10"
3434

3535
[extras]

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ model = demo()
4242
sample(model, externalsampler(sampler), n_samples)
4343
```
4444

45-
The following slice samplers can also be used as a conditional sampler in `Turing.Experimental.Gibbs` sampler:
45+
The following slice samplers can also be used as a conditional sampler in `Turing.Gibbs` sampler:
4646
* For multidimensional variables:
4747
* `RandPermGibbs`
4848
* `HitAndRun`
@@ -69,11 +69,9 @@ using SliceSampling
6969
end
7070
end
7171

72-
sampler = Turing.Experimental.Gibbs(
73-
(
74-
p = externalsampler(SliceSteppingOut(2.0)),
75-
z = PG(20, :z)
76-
)
72+
sampler = Turing.Gibbs(
73+
:p => externalsampler(SliceSteppingOut(2.0)),
74+
:z => PG(20, :z),
7775
)
7876

7977
n_samples = 1000

docs/Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ PDMats = "0.11"
2525
Plots = "1"
2626
PrettyTables = "2"
2727
Random = "1"
28-
SliceSampling = "0.6, 0.7"
28+
SliceSampling = "0.7.1"
2929
StableRNGs = "1"
3030
Statistics = "1"
31-
Turing = "0.34, 0.35"
31+
Turing = "0.36"
3232
julia = "1.10"

docs/src/general.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ model = demo()
6060
sample(model, externalsampler(sampler), n_samples)
6161
```
6262

63-
### Conditional sampling in a `Turing.Experimental.Gibbs` sampler
64-
`SliceSampling.jl` be used as a conditional sampler in `Turing.Experimental.Gibbs`.
63+
### Conditional sampling in a `Turing.Gibbs` sampler
64+
`SliceSampling.jl` be used as a conditional sampler in `Turing.Gibbs`.
6565

6666
```@example turinggibbs
6767
using Distributions
@@ -80,11 +80,9 @@ using SliceSampling
8080
end
8181
end
8282
83-
sampler = Turing.Experimental.Gibbs(
84-
(
85-
p = externalsampler(SliceSteppingOut(2.0)),
86-
z = PG(20, :z)
87-
)
83+
sampler = Turing.Gibbs(
84+
:p => externalsampler(SliceSteppingOut(2.0)),
85+
:z => PG(20, :z),
8886
)
8987
9088
n_samples = 1000

ext/SliceSamplingTuringExt.jl

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ if isdefined(Base, :get_extension)
66
using Random
77
using SliceSampling
88
using Turing
9-
# using Turing: Turing, Experimental
109
else
1110
using ..LogDensityProblemsAD
1211
using ..Random
1312
using ..SliceSampling
1413
using ..Turing
15-
#using ..Turing: Turing, Experimental
1614
end
1715

1816
# Required for using the slice samplers as `externalsampler`s in Turing
@@ -24,12 +22,18 @@ function Turing.Inference.getparams(
2422
end
2523
# end
2624

27-
# Required for using the slice samplers as `Experimental.Gibbs` samplers in Turing
25+
# Required for using the slice samplers as `Gibbs` samplers in Turing
2826
# begin
27+
Turing.Inference.isgibbscomponent(::SliceSampling.RandPermGibbs) = true
28+
Turing.Inference.isgibbscomponent(::SliceSampling.HitAndRun) = true
29+
Turing.Inference.isgibbscomponent(::SliceSampling.Slice) = true
30+
Turing.Inference.isgibbscomponent(::SliceSampling.SliceSteppingOut) = true
31+
Turing.Inference.isgibbscomponent(::SliceSampling.SliceDoublingOut) = true
32+
2933
function Turing.Inference.getparams(
30-
::Turing.DynamicPPL.Model, state::SliceSampling.UnivariateSliceState
34+
::Turing.DynamicPPL.Model, sample::SliceSampling.UnivariateSliceState
3135
)
32-
return state.transition.params
36+
return sample.transition.params
3337
end
3438

3539
function Turing.Inference.getparams(
@@ -43,18 +47,6 @@ function Turing.Inference.getparams(
4347
)
4448
return state.transition.params
4549
end
46-
47-
function Turing.Experimental.gibbs_requires_recompute_logprob(
48-
model_dst,
49-
::Turing.DynamicPPL.Sampler{
50-
<:Turing.Inference.ExternalSampler{<:SliceSampling.AbstractSliceSampling,A,U}
51-
},
52-
sampler_src,
53-
state_dst,
54-
state_src,
55-
) where {A,U}
56-
return false
57-
end
5850
# end
5951

6052
function SliceSampling.initial_sample(rng::Random.AbstractRNG, ℓ::Turing.LogDensityFunction)

src/multivariate/hitandrun.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ struct HitAndRunState{T<:Transition}
1717
transition::T
1818
end
1919

20+
function AbstractMCMC.setparams!!(
21+
model::AbstractMCMC.LogDensityModel, state::HitAndRunState, params
22+
)
23+
lp = LogDensityProblems.logdensity(model.logdensity, params)
24+
return HitAndRunState(Transition(params, lp, NamedTuple()))
25+
end
26+
2027
struct HitAndRunTarget{Model,Vec<:AbstractVector}
2128
model :: Model
2229
direction :: Vec

src/multivariate/randpermgibbs.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ struct GibbsState{T<:Transition}
2525
transition::T
2626
end
2727

28+
function AbstractMCMC.setparams!!(
29+
model::AbstractMCMC.LogDensityModel, state::GibbsState, params
30+
)
31+
lp = LogDensityProblems.logdensity(model.logdensity, params)
32+
return GibbsState(Transition(params, lp, NamedTuple()))
33+
end
34+
2835
struct GibbsTarget{Model,Idx<:Integer,Vec<:AbstractVector}
2936
model :: Model
3037
idx :: Idx

src/univariate/univariate.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ struct UnivariateSliceState{T<:Transition}
2929
transition::T
3030
end
3131

32+
function AbstractMCMC.setparams!!(
33+
model::AbstractMCMC.LogDensityModel, state::UnivariateSliceState, params
34+
)
35+
lp = LogDensityProblems.logdensity(model.logdensity, params)
36+
return UnivariateSliceState(Transition(params, lp, NamedTuple()))
37+
end
38+
3239
function AbstractMCMC.step(
3340
rng::Random.AbstractRNG,
3441
model::AbstractMCMC.LogDensityModel,

test/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ MCMCTesting = "0.3"
1818
Random = "1"
1919
StableRNGs = "1"
2020
Test = "1"
21-
Turing = "0.33, 0.34, 0.35"
21+
Turing = "0.36"
2222
julia = "1.10"

test/turing.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@
4141
]
4242
sample(
4343
model,
44-
Turing.Experimental.Gibbs((
45-
s=externalsampler(sampler), m=externalsampler(sampler)
46-
),),
44+
Turing.Gibbs(:s => externalsampler(sampler), :m => externalsampler(sampler)),
4745
n_samples;
4846
progress=false,
4947
)

0 commit comments

Comments
 (0)