# Load up the outfile for plotting, or calculate and save before plotting if os.path.isfile(OUTFILE): Q08, QZ1, QZ2 = cPickle.load(open(OUTFILE, 'rb')) else: for krepeat in range(NMONTE): # Generate the truth tables for this realization g1true, g2true = g3metrics.make_const_truth_uniform_annular( NFIELDS, NIMS, range_min=TRUE_MIN, range_max=TRUE_MAX) # Loop over each c, m combination for i in range(NBINS): for j in range(NBINS): # Make the submissions g1sub, g2sub = g3metrics.make_submission_const_shear( cvals[i], cvals[i], mvals[j], mvals[j], g1true, g2true, ngals_per_im=NGALS_PER_IM, noise_sigma=NOISE_SIGMA) # Calculate the metrics and store Q08[i, j, krepeat] = g3metrics.metricQ08_const_shear( g1sub, g2sub, g1true, g2true, nfields=NFIELDS) QZ1[i, j, krepeat] = g3metrics.metricQZ1_const_shear( g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] QZ2[i, j, krepeat] = g3metrics.metricQZ2_const_shear( g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] print "Calculated const shear metrics for "+str(krepeat + 1)+"/"+\ str(NMONTE)+" realizations" # Save the results as a tuple of NumPy arrays cPickle.dump((Q08, QZ1, QZ2), open(OUTFILE, 'wb'))
true_sigma=TRUE_SIGMA) # Create empty storage arrays in which to put QZ1_mcboth = np.empty((NBINS, NBINS)) QZ2_mcboth = np.empty((NBINS, NBINS)) # Loop over mvalues making independent submissions at each c, m combination for i in range(NBINS): for j in range(NBINS): g1sub, g2sub = g3metrics.make_submission_const_shear( cgrid[i, j], cgrid[i, j], mgrid[i, j], mgrid[i, j], g1true, g2true, ngals_per_im=NGALS_PER_IM, noise_sigma=NOISE_SIGMA) QZ1_mcboth[i, j] = g3metrics.metricQZ1_const_shear(g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] QZ2_mcboth[i, j] = g3metrics.metricQZ2_const_shear(g1sub, g2sub, g1true, g2true, cfid=CFID,
else: for krepeat in range(NMONTE): # Generate the truth tables for this realization g1true, g2true = g3metrics.make_const_truth_uniform_annular( NFIELDS, NIMS, range_min=TRUE_MIN, range_max=TRUE_MAX) # Loop over each c, m combination for i in range(NBINS): for j in range(NBINS): # Make the submissions g1sub, g2sub = g3metrics.make_submission_const_shear( cvals[i], cvals[i], mvals[j], mvals[j], g1true, g2true, ngals_per_im=NGALS_PER_IM, noise_sigma=NOISE_SIGMA) # Calculate the metrics and store Q08[i, j, krepeat] = g3metrics.metricQ08_const_shear( g1sub, g2sub, g1true, g2true, nfields=NFIELDS) QZ1[i, j, krepeat] = g3metrics.metricQZ1_const_shear( g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] QZ2[i, j, krepeat] = g3metrics.metricQZ2_const_shear( g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] print "Calculated const shear metrics for "+str(krepeat + 1)+"/"+\ str(NMONTE)+" realizations"
print "Calculating Q_c values versus c for control-"+obs_type+"-constant data in GREAT3" print "NOISE_SIGMA = "+str(NOISE_SIGMA[obs_type]) # First we build the truth table print "Building truth tables for control-"+obs_type+"-constant" subfield_index, g1true, g2true = evaluate.get_generate_const_truth( EXPERIMENT, obs_type, truth_dir=TRUTH_DIR) rotations = evaluate.get_generate_const_rotations( EXPERIMENT, obs_type, truth_dir=TRUTH_DIR) for jc, cval in enumerate(CVALS): for itest in xrange(NTEST): # Build the submission g1sub, g2sub = g3metrics.make_submission_const_shear( cval, 0., evaluate.MFID, evaluate.MFID, g1true, g2true, NGALS_PER_IMAGE, NOISE_SIGMA[obs_type], rotate_cs=rotations) fdsub, subfile = tempfile.mkstemp(suffix=".dat") with os.fdopen(fdsub, "wb") as fsub: np.savetxt( fsub, np.array((subfield_index, g1sub, g2sub)).T, fmt="%d %e %e") # Then evaluate Q_c qc[obs_type][itest, jc] = evaluate.q_constant( subfile, EXPERIMENT, obs_type, just_q=True, truth_dir=TRUTH_DIR) os.remove(subfile) print "Test %4d / %4d (c+ = %.3e) Q_c = %.4f" % ( itest+1, NTEST, cval, qc[obs_type][itest, jc]) print "Mean Q_c = "+str(qc[obs_type][:, jc].mean())+" for "+str(NTEST)+\ " sims (with c+ = "+str(cval)+", obs_type = "+str(obs_type)+")" print
# Generate the truth tables g1true, g2true = g3metrics.make_const_truth_normal_dist(NFIELDS, NIMS, true_sigma=TRUE_SIGMA) # Create empty storage arrays in which to put QZ1_mcboth = np.empty((NBINS, NBINS)) QZ2_mcboth = np.empty((NBINS, NBINS)) # Loop over mvalues making independent submissions at each c, m combination for i in range(NBINS): for j in range(NBINS): g1sub, g2sub = g3metrics.make_submission_const_shear(cgrid[i, j], cgrid[i, j], mgrid[i, j], mgrid[i, j], g1true, g2true, ngals_per_im=NGALS_PER_IM, noise_sigma=NOISE_SIGMA) QZ1_mcboth[i, j] = g3metrics.metricQZ1_const_shear(g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] QZ2_mcboth[i, j] = g3metrics.metricQZ2_const_shear(g1sub, g2sub, g1true, g2true, cfid=CFID, mfid=MFID)[0] from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt if not os.path.isdir('./plots'): os.mkdir('./plots') fig = plt.figure() ax = fig.add_subplot(111, projection='3d')
# First we build the truth table print "Building truth tables for control-" + obs_type + "-constant" subfield_index, g1true, g2true = evaluate.get_generate_const_truth( EXPERIMENT, obs_type, truth_dir=TRUTH_DIR) rotations = evaluate.get_generate_const_rotations( EXPERIMENT, obs_type, truth_dir=TRUTH_DIR) for jc, cval in enumerate(CVALS): for itest in xrange(NTEST): # Build the submission g1sub, g2sub = g3metrics.make_submission_const_shear( cval, 0., evaluate.MFID, evaluate.MFID, g1true, g2true, NGALS_PER_IMAGE, NOISE_SIGMA[obs_type], rotate_cs=rotations) fdsub, subfile = tempfile.mkstemp(suffix=".dat") with os.fdopen(fdsub, "wb") as fsub: np.savetxt(fsub, np.array((subfield_index, g1sub, g2sub)).T, fmt="%d %e %e") # Then evaluate Q_c qc[obs_type][itest, jc] = evaluate.q_constant(subfile, EXPERIMENT, obs_type, just_q=True,