def _fit_simple_max(self, obs, model, guesser): from ngmix.fitting import MaxSimple max_pars = self['max_pars'] if max_pars['method'] == 'lm': return self._fit_simple_lm(obs, model, guesser) prior = self['search_prior'] #print("search prior:",prior) fitter = MaxSimple(obs, model, prior=prior, use_logpars=self['use_logpars'], **max_pars) for i in xrange(max_pars['ntry']): guess = guesser(prior=prior) print_pars(guess, front=' max_guess: ') fitter.run_max(guess, **max_pars) res = fitter.get_result() if res['flags'] == 0: break return fitter
def _go_nm(self, ntry=1): from ngmix.fitting import MaxSimple for i in xrange(ntry): guess = self.guesser() fitter = MaxSimple(self.obs, self.model, method='Nelder-Mead', use_logpars=self.use_logpars, prior=self.prior) fitter.run_max(guess, **self.send_pars) res = fitter.get_result() if res['flags'] == 0: break self.fitter = fitter
def _fit_psf_max(self, obs): from ngmix.fitting import MaxSimple, LMSimple assert self['psf_model'] in ["turb", "gauss"], "gauss,turb only for now" max_pars = self['psf_max_pars'] if self['psf_method'] == 'Nelder-Mead': fitter = MaxSimple(obs, self['psf_model'], method=self['psf_method']) else: fitter = LMSimple(obs, self['psf_model'], lm_pars=max_pars) Tguess = 2 * self['psf_sigma_guess']**2 Fguess = obs.image.sum() guess0 = array([0.0, 0.0, 0.0, 0.0, Tguess, Fguess]) for i in xrange(self['psf_ntry']): guess = guess0.copy() guess[0:0 + 2] += 0.01 * srandu(2) guess[2:2 + 2] += 0.1 * srandu(2) guess[4] *= (1.0 + 0.1 * srandu()) guess[5] *= (1.0 + 0.1 * srandu()) print_pars(guess, front=' guess: ') if self['psf_method'] == 'lm': fitter.run_max(guess) else: fitter.run_max(guess, **max_pars) res = fitter.get_result() if res['flags'] == 0: print(" max_nfev:", res['nfev']) break return fitter