@@ -99,20 +99,27 @@ function AbstractMCMC.step(
9999 return transition, newstate
100100end
101101
102- function AbstractMCMC. bundle_samples(
103- samples:: Vector{<:Vector} ,
104- model:: AbstractModel ,
105- spl:: Emcee ,
106- state:: EmceeState ,
107- chain_type:: Type{MCMCChains.Chains} ;
108- kwargs... ,
109- )
110- n_walkers = _get_n_walkers(spl)
111- chains = map(1 : n_walkers) do i
112- this_walker_samples = [s[i] for s in samples]
113- AbstractMCMC. bundle_samples(
114- this_walker_samples, model, spl, state, chain_type; kwargs...
102+ # Have to define methods for both to avoid method ambiguities (as opposed to a single
103+ # `::Type{T<:AbstractMCMC.AbstractChains})` since default `bundle_samples` takes
104+ # `samples::AbstractVector`.
105+ for Tchain in (:(MCMCChains. Chains), :(FlexiChains. VNChain))
106+ @eval begin
107+ function AbstractMCMC. bundle_samples(
108+ samples:: Vector{<:Vector} ,
109+ model:: DynamicPPL.Model ,
110+ spl:: Emcee ,
111+ state:: EmceeState ,
112+ :: Type{$Tchain} ;
113+ kwargs... ,
115114 )
115+ n_walkers = _get_n_walkers(spl)
116+ chains = map(1 : n_walkers) do i
117+ this_walker_samples = [s[i] for s in samples]
118+ AbstractMCMC. bundle_samples(
119+ this_walker_samples, model, spl, state, $ Tchain; kwargs...
120+ )
121+ end
122+ return AbstractMCMC. chainscat(chains... )
123+ end
116124 end
117- return AbstractMCMC. chainscat(chains... )
118125end
0 commit comments