Skip to content

Commit 3d5072f

Browse files
committed
More MH fixes
1 parent e600589 commit 3d5072f

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/mcmc/mh.jl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -307,22 +307,24 @@ function propose!!(
307307
prev_trans = AMH.Transition(vt, DynamicPPL.getlogjoint(vi), false)
308308

309309
# Make a new transition.
310+
spl_model = DynamicPPL.contextualize(
311+
model, DynamicPPL.SamplingContext(rng, spl, model.context)
312+
)
310313
densitymodel = AMH.DensityModel(
311314
Base.Fix1(
312315
LogDensityProblems.logdensity,
313-
DynamicPPL.LogDensityFunction(
314-
model,
315-
vi,
316-
DynamicPPL.SamplingContext(rng, spl, DynamicPPL.leafcontext(model.context)),
317-
),
316+
DynamicPPL.LogDensityFunction(spl_model, DynamicPPL.getlogjoint, vi),
318317
),
319318
)
320319
trans, _ = AbstractMCMC.step(rng, densitymodel, mh_sampler, prev_trans)
321320

322321
# TODO: Make this compatible with immutable `VarInfo`.
323322
# Update the values in the VarInfo.
323+
# TODO(DPPL0.37/penelopeysm): This is obviously incorrect. We need to
324+
# re-evaluate the model.
324325
set_namedtuple!(vi, trans.params)
325-
return setlogp!!(vi, trans.lp)
326+
vi = DynamicPPL.setloglikelihood!!(vi, trans.lp)
327+
return DynamicPPL.setlogprior!!(vi, 0.0)
326328
end
327329

328330
# Make a proposal if we DO have a covariance proposal matrix.
@@ -342,19 +344,22 @@ function propose!!(
342344
prev_trans = AMH.Transition(vals, DynamicPPL.getlogjoint(vi), false)
343345

344346
# Make a new transition.
347+
spl_model = DynamicPPL.contextualize(
348+
model, DynamicPPL.SamplingContext(rng, spl, model.context)
349+
)
345350
densitymodel = AMH.DensityModel(
346351
Base.Fix1(
347352
LogDensityProblems.logdensity,
348-
DynamicPPL.LogDensityFunction(
349-
model,
350-
vi,
351-
DynamicPPL.SamplingContext(rng, spl, DynamicPPL.leafcontext(model.context)),
352-
),
353+
DynamicPPL.LogDensityFunction(spl_model, DynamicPPL.getlogjoint, vi),
353354
),
354355
)
355356
trans, _ = AbstractMCMC.step(rng, densitymodel, mh_sampler, prev_trans)
356357

357-
return setlogp!!(DynamicPPL.unflatten(vi, trans.params), trans.lp)
358+
# TODO(DPPL0.37/penelopeysm): This is obviously incorrect. We need to
359+
# re-evaluate the model.
360+
vi = DynamicPPL.unflatten(vi, trans.params)
361+
vi = DynamicPPL.setloglikelihood!!(vi, trans.lp)
362+
return DynamicPPL.setlogprior!!(vi, 0.0)
358363
end
359364

360365
function DynamicPPL.initialstep(

0 commit comments

Comments
 (0)