@@ -7,8 +7,8 @@ Stereographic slice sampling algorithm by Bell, Latuszynski, and Roberts[^BLR].
7
7
# Keyword Arguments
8
8
- `max_proposals::Int`: Maximum number of proposals allowed until throwing an error (default: `$(DEFAULT_MAX_PROPOSALS) `).
9
9
"""
10
- @kwdef struct StereographicSlice{RType <: Real } <: AbstractMultivariateSliceSampling
11
- max_proposals :: Int = DEFAULT_MAX_PROPOSALS
10
+ @kwdef struct StereographicSlice{RType<: Real } <: AbstractMultivariateSliceSampling
11
+ max_proposals:: Int = DEFAULT_MAX_PROPOSALS
12
12
end
13
13
14
14
struct StereographicSliceState{T<: Transition }
@@ -22,23 +22,23 @@ function rand_uniform_sphere_orthogonal_subspace(
22
22
z = subspace_vector
23
23
d = length (subspace_vector)
24
24
v = randn (rng, d)
25
- v_proj = dot (z, v)/ sum (abs2, z)* z
25
+ v_proj = dot (z, v) / sum (abs2, z) * z
26
26
v_orth = v - v_proj
27
- v_orth / norm (v_orth)
27
+ return v_orth / norm (v_orth)
28
28
end
29
29
30
30
function stereographic_projection (z:: AbstractVector )
31
31
d = length (z) - 1
32
- return z[1 : d] ./ (1 - z[d+ 1 ])
32
+ return z[1 : d] ./ (1 - z[d + 1 ])
33
33
end
34
34
35
35
function stereographic_inverse_projection (x:: AbstractVector )
36
- d = length (x)
37
- z = zeros (d + 1 )
38
- x_norm2 = sum (abs2, x)
39
- z[1 : d] = 2 * x / (x_norm2 + 1 )
40
- z[d+ 1 ] = (x_norm2 - 1 )/ (x_norm2 + 1 )
41
- z
36
+ d = length (x)
37
+ z = zeros (d + 1 )
38
+ x_norm2 = sum (abs2, x)
39
+ z[1 : d] = 2 * x / (x_norm2 + 1 )
40
+ z[d + 1 ] = (x_norm2 - 1 ) / (x_norm2 + 1 )
41
+ return z
42
42
end
43
43
44
44
function AbstractMCMC. step (
@@ -56,8 +56,8 @@ function AbstractMCMC.step(
56
56
end
57
57
58
58
function logdensity_sphere (ℓπ:: Real , x:: AbstractVector )
59
- d = length (x)
60
- return ℓπ + d* log (1 + sum (abs2, x))
59
+ d = length (x)
60
+ return ℓπ + d * log (1 + sum (abs2, x))
61
61
end
62
62
63
63
function AbstractMCMC. step (
@@ -85,7 +85,7 @@ function AbstractMCMC.step(
85
85
while true
86
86
props += 1
87
87
88
- x_prop = stereographic_projection (z* cos (θ) + v* sin (θ))
88
+ x_prop = stereographic_projection (z * cos (θ) + v * sin (θ))
89
89
ℓp_prop = LogDensityProblems. logdensity (logdensitymodel, x_prop)
90
90
ℓp_sphere_prop = logdensity_sphere (ℓp_prop, x_prop)
91
91
0 commit comments