def next(self): nxt = MultipleChainMCMC.next(self) # get the next one idx = self.chain_idx if nxt not in self.seen: self.chainZ[idx] = logplusexp(self.chainZ[idx], nxt.posterior_score) self.seen.add(nxt) # # Process the situation where we need to re-organize if self.nsamples % (self.within_steps * self.nchains) == 0 and self.nsamples > 0: self.refresh() self.nsamples += 1 return nxt