verbose=100) else: pool = schwimmbad.choose_pool(mpi=USE_MPI, processes=n_workers) outputs = pool.map(_run_sim, range(n_sims)) pool.close() pres, mres = zip(*outputs) pres, mres = cut_nones(pres, mres) if rank == 0: dt = [('g1p', 'f8'), ('g1m', 'f8'), ('g1', 'f8'), ('g2p', 'f8'), ('g2m', 'f8'), ('g2', 'f8')] dplus = np.array(pres, dtype=dt) dminus = np.array(mres, dtype=dt) with fitsio.FITS('data.fits', 'rw') as fits: fits.write(dplus, extname='plus') fits.write(dminus, extname='minus') m, msd, c, csd = estimate_m_and_c(pres, mres, 0.02, swap12=SWAP12) print("""\ # of sims: {n_sims} noise cancel m [1e-3, 3-sigma] : {m:f} +/- {msd:f} noise cancel c [1e-5, 3-sigma] : {c:f} +/- {csd:f}""".format( n_sims=len(pres), m=m / 1e-3, msd=msd * 3 / 1e-3, c=c / 1e-5, csd=csd * 3 / 1e-5), flush=True)
dplus4 = np.array(pres4, dtype=dt) dminus4 = np.array(mres4, dtype=dt) with fitsio.FITS('data.fits', 'rw') as fits: fits.write(dplus0, extname='plus0') fits.write(dminus0, extname='minus0') fits.write(dplus1, extname='plus1') fits.write(dminus1, extname='minus1') fits.write(dplus2, extname='plus2') fits.write(dminus2, extname='minus2') fits.write(dplus3, extname='plus3') fits.write(dminus3, extname='minus3') fits.write(dplus4, extname='plus4') fits.write(dminus4, extname='minus4') m, msd, c, csd = estimate_m_and_c(pres0, mres0, 0.02, swap12=SWAP12) print("""\ # of sims: {n_sims} noise cancel m : {m:f} +/- {msd:f} noise cancel c : {c:f} +/- {csd:f}""".format(n_sims=len(pres0), m=m, msd=msd, c=c, csd=csd), flush=True) m, msd, c, csd = estimate_m_and_c(pres1, mres1, 0.02, swap12=SWAP12) print("""\ # of sims: {n_sims} noise cancel m : {m:f} +/- {msd:f} noise cancel c : {c:f} +/- {csd:f}""".format(n_sims=len(pres1),
print('found %d outputs' % len(files)) io = [joblib.delayed(_func)(fname) for fname in files] outputs = joblib.Parallel(verbose=10, n_jobs=-1, pre_dispatch='2*n_jobs', max_nbytes=None)(io) for i, s2n in enumerate([10, 15, 20]): _outputs = [o[i][0] for o in outputs if o[i][0] is not None] _wgts = [o[i][1] for o in outputs if o[i][0] is not None] pres, mres = zip(*_outputs) pres, mres = cut_nones(pres, mres) m, msd, c, csd = estimate_m_and_c(pres, mres, 0.02, swap12=SWAP12, weights=_wgts) if np.abs(m) < 1e-2: mfac = 1e-3 mstr = '[1e-3]' else: mfac = 1 mstr = ' ' if np.abs(c) < 1e-4: cfac = 1e-4 cstr = '[1e-4]' else: cfac = 1
if rank == 0: dt = [('g1p', 'f8'), ('g1m', 'f8'), ('g1', 'f8'), ('g2p', 'f8'), ('g2m', 'f8'), ('g2', 'f8')] dplus = np.array(pres, dtype=dt) dminus = np.array(mres, dtype=dt) dplus_ex = np.array(pres_ex, dtype=dt) dminus_ex = np.array(mres_ex, dtype=dt) with fitsio.FITS('data.fits', 'rw') as fits: fits.write(dplus, extname='plus') fits.write(dminus, extname='minus') fits.write(dplus_ex, extname='plus_ex') fits.write(dminus_ex, extname='minus_ex') m, msd, c, csd = estimate_m_and_c(pres, mres, 0.02, swap12=SWAP12) m_ex, msd_ex, c_ex, csd_ex = estimate_m_and_c(pres_ex, mres_ex, 0.02, swap12=SWAP12) print("""\ # of sims: {n_sims} noise cancel m : {m:f} +/- {msd:f} noise cancel c : {c:f} +/- {csd:f}""".format( n_sims=len(pres), m=m, msd=msd, c=c, csd=csd), flush=True) print("""\ # of sims: {n_sims}