20
20
│ 1 │ m │ 0.824853 │
21
21
```
22
22
"""
23
- struct ESS{space} <: InferenceAlgorithm end
24
-
25
- ESS () = ESS {()} ()
26
- ESS (space:: Symbol ) = ESS {(space,)} ()
27
-
28
- drop_space (alg:: ESS ) = ESS ()
23
+ struct ESS <: InferenceAlgorithm end
29
24
30
25
# always accept in the first step
31
26
function DynamicPPL. initialstep (
@@ -35,7 +30,7 @@ function DynamicPPL.initialstep(
35
30
vns = _getvns (vi, spl)
36
31
length (vns) == 1 ||
37
32
error (" [ESS] does only support one variable ($(length (vns)) variables specified)" )
38
- for vn in vns[ 1 ]
33
+ for vn in only ( vns)
39
34
dist = getdist (vi, vn)
40
35
EllipticalSliceSampling. isgaussian (typeof (dist)) ||
41
36
error (" [ESS] only supports Gaussian prior distributions" )
@@ -48,7 +43,7 @@ function AbstractMCMC.step(
48
43
rng:: AbstractRNG , model:: Model , spl:: Sampler{<:ESS} , vi:: AbstractVarInfo ; kwargs...
49
44
)
50
45
# obtain previous sample
51
- f = vi[spl ]
46
+ f = vi[: ]
52
47
53
48
# define previous sampler state
54
49
# (do not use cache to avoid in-place sampling from prior)
@@ -129,13 +124,11 @@ function (ℓ::ESSLogLikelihood)(f::AbstractVector)
129
124
end
130
125
131
126
function DynamicPPL. tilde_assume (
132
- rng:: Random.AbstractRNG , ctx :: DefaultContext , sampler :: Sampler{<:ESS} , right, vn, vi
127
+ rng:: Random.AbstractRNG , :: DefaultContext , :: Sampler{<:ESS} , right, vn, vi
133
128
)
134
- return if inspace (vn, sampler)
135
- DynamicPPL. tilde_assume (rng, LikelihoodContext (), SampleFromPrior (), right, vn, vi)
136
- else
137
- DynamicPPL. tilde_assume (rng, ctx, SampleFromPrior (), right, vn, vi)
138
- end
129
+ return DynamicPPL. tilde_assume (
130
+ rng, LikelihoodContext (), SampleFromPrior (), right, vn, vi
131
+ )
139
132
end
140
133
141
134
function DynamicPPL. tilde_observe (
@@ -145,22 +138,11 @@ function DynamicPPL.tilde_observe(
145
138
end
146
139
147
140
function DynamicPPL. dot_tilde_assume (
148
- rng:: Random.AbstractRNG ,
149
- ctx:: DefaultContext ,
150
- sampler:: Sampler{<:ESS} ,
151
- right,
152
- left,
153
- vns,
154
- vi,
141
+ rng:: Random.AbstractRNG , :: DefaultContext , :: Sampler{<:ESS} , right, left, vns, vi
155
142
)
156
- # TODO : Or should we do `all(Base.Fix2(inspace, sampler), vns)`?
157
- return if inspace (first (vns), sampler)
158
- DynamicPPL. dot_tilde_assume (
159
- rng, LikelihoodContext (), SampleFromPrior (), right, left, vns, vi
160
- )
161
- else
162
- DynamicPPL. dot_tilde_assume (rng, ctx, SampleFromPrior (), right, left, vns, vi)
163
- end
143
+ return DynamicPPL. dot_tilde_assume (
144
+ rng, LikelihoodContext (), SampleFromPrior (), right, left, vns, vi
145
+ )
164
146
end
165
147
166
148
function DynamicPPL. dot_tilde_observe (
0 commit comments