Skip to content

Commit aa1cd80

Browse files
committed
Remove src/essential and deprecated function stubs
1 parent d29f810 commit aa1cd80

File tree

7 files changed

+81
-139
lines changed

7 files changed

+81
-139
lines changed

HISTORY.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# Release 0.39.0
2+
3+
## Removal of Turing.Essential
4+
5+
The Turing.Essential module has been removed.
6+
Anything exported from there can be imported from either `Turing` or `DynamicPPL`.
7+
18
# Release 0.38.4
29

310
The minimum Julia version was increased to 1.10.2 (from 1.10.0).

src/Turing.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ end
4747
# Random probability measures.
4848
include("stdlib/distributions.jl")
4949
include("stdlib/RandomMeasures.jl")
50-
include("essential/Essential.jl")
51-
using .Essential
5250
include("mcmc/Inference.jl") # inference algorithms
5351
using .Inference
5452
include("variational/VariationalInference.jl")
@@ -57,8 +55,6 @@ using .Variational
5755
include("optimisation/Optimisation.jl")
5856
using .Optimisation
5957

60-
include("deprecated.jl") # to be removed in the next minor version release
61-
6258
###########
6359
# Exports #
6460
###########

src/deprecated.jl

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/essential/Essential.jl

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/essential/container.jl

Lines changed: 0 additions & 70 deletions
This file was deleted.

src/mcmc/Inference.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
module Inference
22

3-
using ..Essential
43
using DynamicPPL:
54
Metadata,
65
VarInfo,

src/mcmc/particle_mcmc.jl

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,79 @@
22
### Particle Filtering and Particle MCMC Samplers.
33
###
44

5+
### AdvancedPS models and interface
6+
7+
struct TracedModel{S<:AbstractSampler,V<:AbstractVarInfo,M<:Model,E<:Tuple} <:
8+
AdvancedPS.AbstractGenericModel
9+
model::M
10+
sampler::S
11+
varinfo::V
12+
evaluator::E
13+
end
14+
15+
function TracedModel(
16+
model::Model,
17+
sampler::AbstractSampler,
18+
varinfo::AbstractVarInfo,
19+
rng::Random.AbstractRNG,
20+
)
21+
context = SamplingContext(rng, sampler, DefaultContext())
22+
args, kwargs = DynamicPPL.make_evaluate_args_and_kwargs(model, varinfo, context)
23+
if kwargs !== nothing && !isempty(kwargs)
24+
error(
25+
"Sampling with `$(sampler.alg)` does not support models with keyword arguments. See issue #2007 for more details.",
26+
)
27+
end
28+
return TracedModel{AbstractSampler,AbstractVarInfo,Model,Tuple}(
29+
model, sampler, varinfo, (model.f, args...)
30+
)
31+
end
32+
33+
function AdvancedPS.advance!(
34+
trace::AdvancedPS.Trace{<:AdvancedPS.LibtaskModel{<:TracedModel}}, isref::Bool=false
35+
)
36+
# Make sure we load/reset the rng in the new replaying mechanism
37+
DynamicPPL.increment_num_produce!(trace.model.f.varinfo)
38+
isref ? AdvancedPS.load_state!(trace.rng) : AdvancedPS.save_state!(trace.rng)
39+
score = consume(trace.model.ctask)
40+
if score === nothing
41+
return nothing
42+
else
43+
return score + DynamicPPL.getlogp(trace.model.f.varinfo)
44+
end
45+
end
46+
47+
function AdvancedPS.delete_retained!(trace::TracedModel)
48+
DynamicPPL.set_retained_vns_del!(trace.varinfo)
49+
return trace
50+
end
51+
52+
function AdvancedPS.reset_model(trace::TracedModel)
53+
DynamicPPL.reset_num_produce!(trace.varinfo)
54+
return trace
55+
end
56+
57+
function AdvancedPS.reset_logprob!(trace::TracedModel)
58+
DynamicPPL.resetlogp!!(trace.model.varinfo)
59+
return trace
60+
end
61+
62+
function AdvancedPS.update_rng!(
63+
trace::AdvancedPS.Trace{<:AdvancedPS.LibtaskModel{<:TracedModel}}
64+
)
65+
# Extract the `args`.
66+
args = trace.model.ctask.args
67+
# From `args`, extract the `SamplingContext`, which contains the RNG.
68+
sampling_context = args[3]
69+
rng = sampling_context.rng
70+
trace.rng = rng
71+
return trace
72+
end
73+
74+
function Libtask.TapedTask(model::TracedModel, ::Random.AbstractRNG, args...; kwargs...) # RNG ?
75+
return Libtask.TapedTask(model.evaluator[1], model.evaluator[2:end]...; kwargs...)
76+
end
77+
578
####
679
#### Generic Sequential Monte Carlo sampler.
780
####
@@ -408,7 +481,7 @@ function AdvancedPS.Trace(
408481
newvarinfo = deepcopy(varinfo)
409482
DynamicPPL.reset_num_produce!(newvarinfo)
410483

411-
tmodel = Turing.Essential.TracedModel(model, sampler, newvarinfo, rng)
484+
tmodel = TracedModel(model, sampler, newvarinfo, rng)
412485
newtrace = AdvancedPS.Trace(tmodel, rng)
413486
AdvancedPS.addreference!(newtrace.model.ctask.task, newtrace)
414487
return newtrace

0 commit comments

Comments
 (0)