Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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