From 5bd1af869de52f2c3209c83fbd9196f5fb62f275 Mon Sep 17 00:00:00 2001 From: "gregory.ashton" <gregory.ashton@ligo.org> Date: Tue, 27 Sep 2016 10:06:27 +0200 Subject: [PATCH] Adds ability to input initial as list and improves logging --- pyfstat.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pyfstat.py b/pyfstat.py index 64106f1..c26a5dc 100755 --- a/pyfstat.py +++ b/pyfstat.py @@ -800,11 +800,21 @@ class MCMCSearch(BaseSearchClass): """ Generate a set of init vals for the walkers """ if type(self.theta_initial) == dict: + logging.info('Generate initial values from initial dictionary') + if self.nglitch > 1: + raise ValueError('Initial dict not implemented for nglitch>1') p0 = [[[self.generate_rv(**self.theta_initial[key]) for key in self.theta_keys] for i in range(self.nwalkers)] for j in range(self.ntemps)] + elif type(self.theta_initial) == list: + logging.info('Generate initial values from list of theta_initial') + p0 = [[[self.generate_rv(**val) + for val in self.theta_initial] + for i in range(self.nwalkers)] + for j in range(self.ntemps)] elif self.theta_initial is None: + logging.info('Generate initial values from prior dictionary') p0 = [[[self.generate_rv(**self.theta_prior[key]) for key in self.theta_keys] for i in range(self.nwalkers)] @@ -958,12 +968,15 @@ class MCMCSearch(BaseSearchClass): d = OrderedDict() lnl_finite = copy.copy(self.lnlikes) - lnl_finite[idxs] = np.nan + lnl_finite[idxs] = 0 close_idxs = abs((maxtwoF - lnl_finite) / maxtwoF) < threshold for i, k in enumerate(self.theta_keys): ng = 1 while k in d: - k = k.rstrip('_{}'.format(ng-1)) + '_{}'.format(ng) + if k == 1: + k = k + '_1' + else: + k.replace('_{}'.format(ng-1), '_{}'.format(ng)) ng += 1 d[k] = self.samples[jmax][i] -- GitLab