Skip to content

Commit bfa1de2

Browse files
committed
Fix OptimLogDensity invocations
1 parent b62ffb0 commit bfa1de2

File tree

2 files changed

+34
-13
lines changed

2 files changed

+34
-13
lines changed

src/optimisation/Optimisation.jl

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,9 @@ function StatsBase.informationmatrix(
206206
if linked
207207
new_vi = DynamicPPL.invlink!!(old_ldf.varinfo, old_ldf.model)
208208
new_f = OptimLogDensity(
209-
old_ldf.model, old_ldf.getlogdensity, new_vi; adtype=old_ldf.adtype
209+
DynamicPPL.LogDensityFunction(
210+
old_ldf.model, old_ldf.getlogdensity, new_vi; adtype=old_ldf.adtype
211+
),
210212
)
211213
m = Accessors.@set m.f = new_f
212214
end
@@ -221,7 +223,12 @@ function StatsBase.informationmatrix(
221223
invlinked_ldf = m.f.ldf
222224
new_vi = DynamicPPL.link!!(invlinked_ldf.varinfo, invlinked_ldf.model)
223225
new_f = OptimLogDensity(
224-
invlinked_ldf.model, old_ldf.getlogdensity, new_vi; adtype=invlinked_ldf.adtype
226+
DynamicPPL.LogDensityFunction(
227+
invlinked_ldf.model,
228+
old_ldf.getlogdensity,
229+
new_vi;
230+
adtype=invlinked_ldf.adtype,
231+
),
225232
)
226233
m = Accessors.@set m.f = new_f
227234
end

test/optimisation/Optimisation.jl

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,35 +44,49 @@ using Turing
4444
m2 = model2() | (x=x,)
4545
# Doesn't matter if we use getlogjoint or getlogjoint_internal since the
4646
# VarInfo isn't linked.
47-
ld1 = Turing.Optimisation.OptimLogDensity(m1, DynamicPPL.getlogjoint)
48-
ld2 = Turing.Optimisation.OptimLogDensity(m2, DynamicPPL.getlogjoint_internal)
47+
ld1 = Turing.Optimisation.OptimLogDensity(
48+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getlogjoint)
49+
)
50+
ld2 = Turing.Optimisation.OptimLogDensity(
51+
DynamicPPL.LogDensityFunction(m2, DynamicPPL.getlogjoint_internal)
52+
)
4953
@test ld1(w) == ld2(w)
5054
end
5155

5256
@testset "With prefixes" begin
5357
vn = @varname(inner)
5458
m1 = prefix(model1(x), vn)
5559
m2 = prefix((model2() | (x=x,)), vn)
56-
ld1 = Turing.Optimisation.OptimLogDensity(m1, DynamicPPL.getlogjoint)
57-
ld2 = Turing.Optimisation.OptimLogDensity(m2, DynamicPPL.getlogjoint_internal)
60+
ld1 = Turing.Optimisation.OptimLogDensity(
61+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getlogjoint)
62+
)
63+
ld2 = Turing.Optimisation.OptimLogDensity(
64+
DynamicPPL.LogDensityFunction(m2, DynamicPPL.getlogjoint_internal)
65+
)
5866
@test ld1(w) == ld2(w)
5967
end
6068

6169
@testset "Joint, prior, and likelihood" begin
6270
m1 = model1(x)
6371
a = [0.3]
64-
ld_joint = Turing.Optimisation.OptimLogDensity(m1, DynamicPPL.getlogjoint)
65-
ld_prior = Turing.Optimisation.OptimLogDensity(m1, DynamicPPL.getlogprior)
72+
ld_joint = Turing.Optimisation.OptimLogDensity(
73+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getlogjoint)
74+
)
75+
ld_prior = Turing.Optimisation.OptimLogDensity(
76+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getlogprior)
77+
)
6678
ld_likelihood = Turing.Optimisation.OptimLogDensity(
67-
m1, DynamicPPL.getloglikelihood
79+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getloglikelihood)
6880
)
6981
@test ld_joint(a) == ld_prior(a) + ld_likelihood(a)
7082

7183
# test that the prior accumulator is calculating the right thing
72-
@test Turing.Optimisation.OptimLogDensity(m1, DynamicPPL.getlogprior)([0.3])
73-
-Distributions.logpdf(Uniform(0, 2), 0.3)
74-
@test Turing.Optimisation.OptimLogDensity(m1, DynamicPPL.getlogprior)([-0.3])
75-
-Distributions.logpdf(Uniform(0, 2), -0.3)
84+
@test Turing.Optimisation.OptimLogDensity(
85+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getlogprior)
86+
)([0.3]) -Distributions.logpdf(Uniform(0, 2), 0.3)
87+
@test Turing.Optimisation.OptimLogDensity(
88+
DynamicPPL.LogDensityFunction(m1, DynamicPPL.getlogprior)
89+
)([-0.3]) -Distributions.logpdf(Uniform(0, 2), -0.3)
7690
end
7791
end
7892

0 commit comments

Comments
 (0)