Skip to content

Commit 16df848

Browse files
committed
fix rebase
1 parent eb2732a commit 16df848

File tree

1 file changed

+7
-66
lines changed

1 file changed

+7
-66
lines changed

src/mcmc/particle_mcmc.jl

Lines changed: 7 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -545,67 +545,20 @@ Exactly like `LogLikelihoodAccumulator`, but calls `Libtask.produce` on change o
545545
# Fields
546546
$(TYPEDFIELDS)
547547
"""
548-
struct ProduceLogLikelihoodAccumulator{T<:Real} <: DynamicPPL.AbstractAccumulator
548+
struct ProduceLogLikelihoodAccumulator{T<:Real} <: DynamicPPL.LogProbAccumulator{T}
549549
"the scalar log likelihood value"
550550
logp::T
551551
end
552552

553-
"""
554-
ProduceLogLikelihoodAccumulator{T}()
555-
556-
Create a new `ProduceLogLikelihoodAccumulator` accumulator with the log likelihood of zero.
557-
"""
558-
ProduceLogLikelihoodAccumulator{T}() where {T<:Real} =
559-
ProduceLogLikelihoodAccumulator(zero(T))
560-
function ProduceLogLikelihoodAccumulator()
561-
return ProduceLogLikelihoodAccumulator{DynamicPPL.LogProbType}()
562-
end
563-
564-
Base.copy(acc::ProduceLogLikelihoodAccumulator) = acc
565-
566-
function Base.show(io::IO, acc::ProduceLogLikelihoodAccumulator)
567-
return print(io, "ProduceLogLikelihoodAccumulator($(repr(acc.logp)))")
568-
end
569-
570-
function Base.:(==)(
571-
acc1::ProduceLogLikelihoodAccumulator, acc2::ProduceLogLikelihoodAccumulator
572-
)
573-
return acc1.logp == acc2.logp
574-
end
575-
576-
function Base.isequal(
577-
acc1::ProduceLogLikelihoodAccumulator, acc2::ProduceLogLikelihoodAccumulator
578-
)
579-
return isequal(acc1.logp, acc2.logp)
580-
end
581-
582-
function Base.hash(acc::ProduceLogLikelihoodAccumulator, h::UInt)
583-
return hash((ProduceLogLikelihoodAccumulator, acc.logp), h)
584-
end
585-
586553
# Note that this uses the same name as `LogLikelihoodAccumulator`. Thus only one of the two
587554
# can be used in a given VarInfo.
588555
DynamicPPL.accumulator_name(::Type{<:ProduceLogLikelihoodAccumulator}) = :LogLikelihood
556+
DynamicPPL.logp(acc::ProduceLogLikelihoodAccumulator) = acc.logp
589557

590-
function DynamicPPL.split(::ProduceLogLikelihoodAccumulator{T}) where {T}
591-
return ProduceLogLikelihoodAccumulator(zero(T))
592-
end
593-
594-
function DynamicPPL.combine(
595-
acc::ProduceLogLikelihoodAccumulator, acc2::ProduceLogLikelihoodAccumulator
596-
)
597-
return ProduceLogLikelihoodAccumulator(acc.logp + acc2.logp)
598-
end
599-
600-
function Base.:+(
601-
acc1::ProduceLogLikelihoodAccumulator, acc2::DynamicPPL.LogLikelihoodAccumulator
602-
)
603-
Libtask.produce(acc2.logp)
604-
return ProduceLogLikelihoodAccumulator(acc1.logp + acc2.logp)
605-
end
606-
607-
function Base.zero(acc::ProduceLogLikelihoodAccumulator)
608-
return ProduceLogLikelihoodAccumulator(zero(acc.logp))
558+
function DynamicPPL.acclogp(acc1::ProduceLogLikelihoodAccumulator, val)
559+
# The below line is the only difference from `LogLikelihoodAccumulator`.
560+
Libtask.produce(val)
561+
return ProduceLogLikelihoodAccumulator(acc1.logp + val)
609562
end
610563

611564
function DynamicPPL.accumulate_assume!!(
@@ -616,19 +569,7 @@ end
616569
function DynamicPPL.accumulate_observe!!(
617570
acc::ProduceLogLikelihoodAccumulator, right, left, vn
618571
)
619-
return acc +
620-
DynamicPPL.LogLikelihoodAccumulator(Distributions.loglikelihood(right, left))
621-
end
622-
623-
function Base.convert(
624-
::Type{ProduceLogLikelihoodAccumulator{T}}, acc::ProduceLogLikelihoodAccumulator
625-
) where {T}
626-
return ProduceLogLikelihoodAccumulator(convert(T, acc.logp))
627-
end
628-
function DynamicPPL.convert_eltype(
629-
::Type{T}, acc::ProduceLogLikelihoodAccumulator
630-
) where {T}
631-
return ProduceLogLikelihoodAccumulator(convert(T, acc.logp))
572+
return DynamicPPL.acclogp(acc, Distributions.loglikelihood(right, left))
632573
end
633574

634575
# We need to tell Libtask which calls may have `produce` calls within them. In practice most

0 commit comments

Comments
 (0)