コード例 #1
0
def start_routine(filename, P, Me_range, Re_range, n_range, noise_level, R, zp):
	noise = make_noise(R, noise_level)

	with open(filename, 'wb') as csvfile:
		writer = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
		header = ['%s = %.2f' % (P[i].name, P[i].value) for i in ['MeD', 'ReD', 'nD']]
		writer.writerow(header + ['range= [%.1f, %.1f]' % (R[0], R[-1])] + ['noise level = %.1f' % noise_level])
		writer.writerow(['MeB_initial', 'ReB_initial', 'nB_initial', 'MeD_final', 'ReD_final', 'nD_final', 'MeB_final', 'ReB_final', 'nB_final',\
		 'redchi2_all', 'redchi2_excl', 'KS', 'KS_excl'])
		for nB in n_range:
			for ReB in Re_range:
				for MeB in Me_range:
					pars = S.copy_params(P, False)
					pars.add_many(('MeB', float(MeB), True, 1.), ('ReB', float(ReB), True, 0.01), ('nB', float(nB), True, 0.1))
					pars['nD'].vary = False
					test_gal = S.sersic2(pars, R, zp, False) + noise

					new_pars = S.copy_params(pars, False)
					
					fit_data, res_excl = S.fit(new_pars, S.sersic2, R, zp, test_gal, weights=None, fit_range=None, redchi_marker=30.)

					initials = [pars[i].value for i in ['MeB', 'ReB', 'nB']]
					if fit_data is None:
						writer.writerow(['N/A'] * 13) 
					else:
						finals = [new_pars[i].value for i in ['MeB', 'ReB', 'nB', 'MeD', 'ReD', 'nD']]
						redchi_excl = np.sum(res_excl) / fit_data.nfree
						KS, KS_excl = stats.kstest(fit_data.residual, 'norm')[1], stats.kstest(res_excl, 'norm')[1]
						writer.writerow(initials+finals+['%r' % (res_excl)])