def NIST_runner(dataset, method='leastsq', chi_atol=1e-5, val_rtol=1e-2, err_rtol=0.01): NIST_dataset = ReadNistData(dataset) x, y = (NIST_dataset['x'], NIST_dataset['y']) if dataset == 'Nelson': y = np.log(y) params = NIST_dataset['start'] fitfunc = Models[dataset][0] fitter = CurveFitter(fitfunc, (x, y), params) result = fitter.fit(method, params) assert_allclose(result.chisqr, NIST_dataset['sum_squares'], atol=chi_atol) thisval = values(result.params) certval = NIST_dataset['cert_values'] assert_allclose(thisval, certval, rtol=val_rtol) if result.errorbars: thiserr = np.array([result.params[par].stderr for par in result.params]) certerr = NIST_dataset['cert_stderr'] assert_allclose(thiserr, certerr, rtol=err_rtol)
def _write_results(f, emcee_result): # the flatchain is what we're interested in. # make an output array # hopefully the chain has been burned and thinned enough. output = np.zeros((np.size(emcee_result.flatchain, 0), len(emcee_result.params))) gen = pgen(emcee_result.params, emcee_result.flatchain) for row in output: pars = next(gen) row[:] = values(pars)[:] np.savetxt(f, output, header=' '.join(names(emcee_result.params)))