def _fit_simple_emcee_guess(self, mb_obs_list, model, epars): """ Fit one of the "simple" models, e.g. exp or dev use flat g prior """ from ngmix.fitting import MCMCSimple # note flat on g! prior=self['model_pars'][model]['gflat_prior'] guess=self.guesser(n=epars['nwalkers'], prior=prior) self._print_pars(guess.mean(axis=0), front=" emcee guess:") fitter=MCMCSimple(mb_obs_list, model, nu=self['nu'], margsky=self['margsky'], prior=prior, nwalkers=epars['nwalkers'], mca_a=epars['a'], random_state=self.random_state) pos=fitter.run_mcmc(guess,epars['burnin']) pos=fitter.run_mcmc(pos,epars['nstep']) return fitter
def _fit_simple_mcmc(self, obs, model, guesser): """ Fit the simple model """ from ngmix.fitting import MCMCSimple # note flat on g! prior = self['search_prior'] epars = self['emcee_pars'] guess = guesser(n=epars['nwalkers'], prior=prior) fitter = MCMCSimple(obs, model, prior=prior, use_logpars=self['use_logpars'], nwalkers=epars['nwalkers'], mca_a=epars['a']) try: pos = fitter.run_mcmc(guess, epars['burnin']) pos = fitter.run_mcmc(pos, epars['nstep'], thin=epars['thin']) except ValueError as err: print("problem with emcee: %s" % str(err)) return None if self['g_prior_during']: weights = None else: g_prior = self['prior'].g_prior trials = fitter.get_trials() weights = g_prior.get_prob_array2d(trials[:, 2], trials[:, 3]) fitter.calc_result(weights=weights) self.weights = weights return fitter
def _fit_simple_mcmc(self, obs, model, guesser): """ Fit the simple model """ from ngmix.fitting import MCMCSimple # note flat on g! prior=self['search_prior'] epars=self['emcee_pars'] guess=guesser(n=epars['nwalkers'], prior=prior) fitter=MCMCSimple(obs, model, prior=prior, use_logpars=self['use_logpars'], nwalkers=epars['nwalkers'], mca_a=epars['a']) try: pos=fitter.run_mcmc(guess,epars['burnin']) pos=fitter.run_mcmc(pos,epars['nstep'],thin=epars['thin']) except ValueError as err: print("problem with emcee: %s" % str(err)) return None if self['g_prior_during']: weights=None else: g_prior = self['prior'].g_prior trials = fitter.get_trials() weights = g_prior.get_prob_array2d(trials[:,2], trials[:,3]) fitter.calc_result(weights=weights) self.weights=weights return fitter