def getInitEmceePos(self, nwalkers=None, init_pars=None): if init_pars is None: rough_mean_now, rough_cov_now = \ self.approxCurrentDayDistribution() # Exploit the component logic to generate closest set of pars dummy_comp = Component(mean=rough_mean_now, covmatrix=rough_cov_now, form=self.model_form) init_pars = Component.internalisePars(dummy_comp.getPars()) init_std = Component.getSensibleInitSpread(form='sphere') # Generate initial positions of all walkers by adding some random # offset to `init_pars` if nwalkers is None: npars = len(init_pars) nwalkers = 2 * npars init_pos = emcee.utils.sample_ball(init_pars, init_std, size=nwalkers) # force ages to be positive init_pos[:, -1] = abs(init_pos[:, -1]) return init_pos