Skip to content

Commit 9012774

Browse files
committed
even more fixes
1 parent b346198 commit 9012774

File tree

5 files changed

+22
-8
lines changed

5 files changed

+22
-8
lines changed

src/mcmc/external_sampler.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,13 @@ function make_updated_varinfo(
126126
return if ismissing(new_logp)
127127
last(DynamicPPL.evaluate!!(f.model, new_varinfo, f.context))
128128
else
129-
DynamicPPL.setlogp!!(new_varinfo, new_logp)
129+
# TODO(DPPL0.37/penelopeysm) This is obviously wrong. Note that we
130+
# have the same problem here as in HMC in that the sampler doesn't
131+
# tell us about how logp is broken down into prior and likelihood.
132+
# We should probably just re-evaluate unconditionally. A bit
133+
# unfortunate.
134+
DynamicPPL.setlogprior!!(new_varinfo, 0.0)
135+
DynamicPPL.setloglikelihood!!(new_varinfo, new_logp)
130136
end
131137
end
132138

src/mcmc/is.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,6 @@ function DynamicPPL.assume(rng, ::Sampler{<:IS}, dist::Distribution, vn::VarName
5959
r = rand(rng, dist)
6060
vi = push!!(vi, vn, r, dist)
6161
end
62-
vi = accumulate_assume!!(vi, r, 0.0, vn, dist)
62+
vi = DynamicPPL.accumulate_assume!!(vi, r, 0.0, vn, dist)
6363
return r, vi
6464
end

src/mcmc/particle_mcmc.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,8 @@ function trace_local_rng_maybe(rng::Random.AbstractRNG)
429429
end
430430
end
431431

432+
# TODO(DPPL0.37/penelopeysm) The whole tilde pipeline for particle MCMC needs to be
433+
# thoroughly fixed.
432434
function DynamicPPL.assume(
433435
rng, ::Sampler{<:Union{PG,SMC}}, dist::Distribution, vn::VarName, _vi::AbstractVarInfo
434436
)
@@ -442,13 +444,12 @@ function DynamicPPL.assume(
442444
DynamicPPL.unset_flag!(vi, vn, "del") # Reference particle parent
443445
r = rand(trng, dist)
444446
vi[vn] = DynamicPPL.tovec(r)
445-
DynamicPPL.setorder!(vi, vn, DynamicPPL.get_num_produce(vi))
447+
vi = DynamicPPL.setorder!!(vi, vn, DynamicPPL.get_num_produce(vi))
446448
else
447449
r = vi[vn]
448450
end
449-
# TODO: Should we make this `zero(promote_type(eltype(dist), eltype(r)))` or something?
450-
lp = 0
451-
return r, lp, vi
451+
# TODO: call accumulate_assume?!
452+
return r, vi
452453
end
453454

454455
# TODO(mhauru) Fix this.

src/optimisation/Optimisation.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,12 @@ function estimate_mode(
611611
ub=nothing,
612612
kwargs...,
613613
)
614-
check_model && DynamicPPL.check_model(model; error_on_failure=true)
614+
if check_model
615+
spl_model = DynamicPPL.contextualize(
616+
model, DynamicPPL.SamplingContext(model.context)
617+
)
618+
DynamicPPL.check_model(spl_model, VarInfo(); error_on_failure=true)
619+
end
615620

616621
constraints = ModeEstimationConstraints(lb, ub, cons, lcons, ucons)
617622
initial_params = generate_initial_params(model, initial_params, constraints)

test/mcmc/external_sampler.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ function initialize_nuts(model::DynamicPPL.Model)
2020
linked_vi = DynamicPPL.link!!(vi, model)
2121

2222
# Create a LogDensityFunction
23-
f = DynamicPPL.LogDensityFunction(model, linked_vi; adtype=Turing.DEFAULT_ADTYPE)
23+
f = DynamicPPL.LogDensityFunction(
24+
model, DynamicPPL.getlogjoint, linked_vi; adtype=Turing.DEFAULT_ADTYPE
25+
)
2426

2527
# Choose parameter dimensionality and initial parameter value
2628
D = LogDensityProblems.dimension(f)

0 commit comments

Comments
 (0)