Skip to content

Commit ab02eb5

Browse files
authored
Update for newer AbstractMCMC/Turing interface (#49)
* Update for newer AbstractMCMC/Turing interface * Remove Turing ext * Enforce minimum DynamicPPL bound * Fix docs build
1 parent 2dd6716 commit ab02eb5

File tree

13 files changed

+35
-137
lines changed

13 files changed

+35
-137
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
/docs/Manifest.toml
55
/docs/build/
66
**/*~
7-
Maniest.toml
8-
test/Manifest.toml
7+
Manifest.toml
8+
test/Manifest.toml

Project.toml

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,20 @@
11
name = "SliceSampling"
22
uuid = "43f4d3e8-9711-4a8c-bd1b-03ac73a255cf"
3-
version = "0.7.10"
3+
version = "0.7.11"
44

55
[deps]
66
AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001"
7+
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
78
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
89
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
910
LogDensityProblems = "6fdf6af0-433a-55f7-b3ed-c6c6e0b8df7c"
1011
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1112

12-
[weakdeps]
13-
Turing = "fce5fe82-541a-59a6-adf8-730c64b5f9a0"
14-
15-
[extensions]
16-
SliceSamplingTuringExt = ["Turing"]
17-
1813
[compat]
19-
AbstractMCMC = "4, 5"
14+
AbstractMCMC = "5.9"
15+
Accessors = "0.1"
2016
Distributions = "0.25"
2117
LinearAlgebra = "1"
2218
LogDensityProblems = "2"
2319
Random = "1"
24-
Turing = "0.41"
2520
julia = "1.10"
26-
27-
[extras]
28-
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
29-
Turing = "fce5fe82-541a-59a6-adf8-730c64b5f9a0"
30-
31-
[targets]
32-
test = ["Test"]

docs/Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1515
Turing = "fce5fe82-541a-59a6-adf8-730c64b5f9a0"
1616

1717
[compat]
18-
AbstractMCMC = "5"
18+
AbstractMCMC = "5.9"
1919
Distributions = "0.25"
2020
Documenter = "1"
2121
FillArrays = "1"
@@ -28,5 +28,5 @@ Random = "1"
2828
SliceSampling = "0.7.1"
2929
StableRNGs = "1"
3030
Statistics = "1"
31-
Turing = "0.41, 0.42"
31+
Turing = "0.42"
3232
julia = "1.10"

docs/src/general.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,13 @@ sample([rng,] model, slice, N; initial_params)
101101
- `model`: A model implementing the `LogDensityProblems` interface.
102102
- `N`: The number of samples
103103

104-
The output is a `SliceSampling.Transition` object, which contains the following:
104+
The output is a vector of `SliceSampling.Transition`s, which contains the following:
105105
```@docs
106106
SliceSampling.Transition
107107
```
108108

109109
For the keyword arguments, `SliceSampling` allows:
110-
- `initial_params`: The intial state of the Markov chain (default: `nothing`).
110+
- `initial_params`: The initial state of the Markov chain (default: `nothing`).
111111

112112
If `initial_params` is `nothing`, the following function can be implemented to provide an initialization:
113113
```@docs

ext/SliceSamplingTuringExt.jl

Lines changed: 0 additions & 68 deletions
This file was deleted.

src/SliceSampling.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
module SliceSampling
33

44
using AbstractMCMC
5+
using Accessors: Accessors
56
using Distributions
67
using LinearAlgebra
78
using LogDensityProblems
@@ -37,6 +38,18 @@ struct Transition{P,L<:Real,I<:NamedTuple}
3738
info::I
3839
end
3940

41+
# Base type for MCMC states that contain a `Transition` stored in the `transition` field.
42+
abstract type AbstractStateWithTransition end
43+
AbstractMCMC.getparams(state::AbstractStateWithTransition) = state.transition.params
44+
AbstractMCMC.getstats(state::AbstractStateWithTransition) = state.transition.info
45+
function AbstractMCMC.setparams!!(
46+
model::AbstractMCMC.LogDensityModel, state::AbstractStateWithTransition, params
47+
)
48+
new_lp = LogDensityProblems.logdensity(model.logdensity, params)
49+
new_transition = Transition(params, new_lp, NamedTuple())
50+
return Accessors.@set state.transition = new_transition
51+
end
52+
4053
"""
4154
initial_sample(rng, model)
4255

src/multivariate/gibbspolar.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ function GibbsPolarSlice(w::Real; max_proposals::Int=DEFAULT_MAX_PROPOSALS)
2929
return GibbsPolarSlice(w, max_proposals)
3030
end
3131

32-
struct GibbsPolarSliceState{T<:Transition,R<:Real,D<:AbstractVector}
32+
struct GibbsPolarSliceState{T<:Transition,R<:Real,D<:AbstractVector} <:
33+
AbstractStateWithTransition
3334
"Current [`Transition`](@ref)."
3435
transition::T
3536

src/multivariate/hitandrun.jl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,11 @@ struct HitAndRun{S<:AbstractUnivariateSliceSampling} <: AbstractMultivariateSlic
1212
unislice::S
1313
end
1414

15-
struct HitAndRunState{T<:Transition}
15+
struct HitAndRunState{T<:Transition} <: AbstractStateWithTransition
1616
"Current [`Transition`](@ref)."
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-
2720
struct HitAndRunTarget{Model,Vec<:AbstractVector}
2821
model :: Model
2922
direction :: Vec

src/multivariate/latent.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function LatentSlice(beta::Real; max_proposals::Int=DEFAULT_MAX_PROPOSALS)
2020
return LatentSlice(beta, max_proposals)
2121
end
2222

23-
struct LatentSliceState{T<:Transition,S<:AbstractVector}
23+
struct LatentSliceState{T<:Transition,S<:AbstractVector} <: AbstractStateWithTransition
2424
"Current [`Transition`](@ref)."
2525
transition::T
2626

src/multivariate/randpermgibbs.jl

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,11 @@ struct RandPermGibbs{
2020
unislice::S
2121
end
2222

23-
struct GibbsState{T<:Transition}
23+
struct GibbsState{T<:Transition} <: AbstractStateWithTransition
2424
"Current [`Transition`](@ref)."
2525
transition::T
2626
end
2727

28-
function AbstractMCMC.setparams!!(model::AbstractMCMC.LogDensityModel, ::GibbsState, params)
29-
lp = LogDensityProblems.logdensity(model.logdensity, params)
30-
return GibbsState(Transition(params, lp, NamedTuple()))
31-
end
32-
3328
struct GibbsTarget{Model,Idx<:Integer,Vec<:AbstractVector}
3429
model :: Model
3530
idx :: Idx

0 commit comments

Comments
 (0)