diff --git a/bilby/core/sampler/emcee.py b/bilby/core/sampler/emcee.py index c2fc9a6f5baf352bdd06a49cd1ab653d82fda458..12d795d3362ae0208f75aaab13e1ad4422617551 100644 --- a/bilby/core/sampler/emcee.py +++ b/bilby/core/sampler/emcee.py @@ -57,6 +57,8 @@ class Emcee(MCMCSampler): pos0=None, nburn=None, burn_in_fraction=0.25, resume=True, burn_in_act=3, **kwargs): import emcee + self.emcee = emcee + if LooseVersion(emcee.__version__) > LooseVersion('2.2.1'): self.prerelease = True else: @@ -93,8 +95,8 @@ class Emcee(MCMCSampler): @property def sampler_function_kwargs(self): - import emcee - keys = ['lnprob0', 'rstate0', 'blobs0', 'iterations', 'thin', 'storechain', 'mh_proposal'] + keys = ['lnprob0', 'rstate0', 'blobs0', 'iterations', 'thin', + 'storechain', 'mh_proposal'] # updated function keywords for emcee > v2.2.1 updatekeys = {'p0': 'initial_state', @@ -107,7 +109,8 @@ class Emcee(MCMCSampler): if self.prerelease: if function_kwargs['mh_proposal'] is not None: logger.warning("The 'mh_proposal' option is no longer used " - "in emcee v{}, and will be ignored.".format(emcee.__version__)) + "in emcee v{}, and will be ignored.".format( + self.emcee.__version__)) del function_kwargs['mh_proposal'] for key in updatekeys: @@ -259,8 +262,7 @@ class Emcee(MCMCSampler): sys.exit() def _initialise_sampler(self): - import emcee - self._sampler = emcee.EnsembleSampler(**self.sampler_init_kwargs) + self._sampler = self.emcee.EnsembleSampler(**self.sampler_init_kwargs) self._init_chain_file() @property @@ -307,7 +309,10 @@ class Emcee(MCMCSampler): This is used when loading in a sampler from a pickle file to figure out how much of the run has already been completed """ - return len(self.sampler.blobs) + try: + return len(self.sampler.blobs) + except AttributeError: + return 0 def _draw_pos0_from_prior(self): return np.array( @@ -344,7 +349,10 @@ class Emcee(MCMCSampler): iterations = sampler_function_kwargs.pop('iterations') iterations -= self._previous_iterations - sampler_function_kwargs['p0'] = self.pos0 + if self.prerelease: + sampler_function_kwargs['initial_state'] = self.pos0 + else: + sampler_function_kwargs['p0'] = self.pos0 # main iteration loop for sample in tqdm(