def get_ratio_rms_cov(instFull, inst2, spectra, sampling, nside, pfFull=0, x0=None, plot=True, sub1=None, sub2=None, center=[316.45, -58.76], lab='Alt. Inst.', coverage_threshold=0.01, refsavefile=None, altsavefile=None, refsavefile_noiseless=None, altsavefile_noiseless=None, noI=False): nb=10 iqu=1 lim=[100,1,1][iqu] name = ['I','Q','U'][iqu] doplot=False ## reference instrument if pfFull == 0: print("Doing Reference Instrument") mapsFull, initconvFull, covFull, x0 = get_maps(spectra, instFull, sampling, nside, x0, coverage_threshold=coverage_threshold, savefile=refsavefile, savefile_noiseless=refsavefile_noiseless, noI=noI) maskFull = covFull > coverage_threshold residFull = initconvFull - mapsFull pfFull_I = profile(covFull[maskFull], residFull[maskFull,0],fmt='ro',nbins=nb, range=[0,np.max(covFull[maskFull])], plot=doplot) pfFull_Q = profile(covFull[maskFull], residFull[maskFull,1],fmt='bo',nbins=nb, range=[0,np.max(covFull[maskFull])], plot=doplot) pfFull_U = profile(covFull[maskFull], residFull[maskFull,2],fmt='go',nbins=nb, range=[0,np.max(covFull[maskFull])], plot=doplot) pfFull = [pfFull_I, pfFull_Q, pfFull_U, maskFull, residFull] if plot: figure(0) clf() hp.gnomview(initconvFull[:,iqu],min=-lim,max=lim,title=name+' In Ref. Inst.', sub=sub1, rot=center, reso=30) figure(1) clf() hp.gnomview(residFull[:,iqu],min=-lim/10,max=lim/10,title=name+' Res Ref. Inst.', sub=sub1, rot=center, reso=30) figure(2) clf() hp.gnomview(mapsFull[:,iqu],min=-lim,max=lim,title=name+' Out Ref. Inst.', sub=sub1, rot=center, reso=30) figure(3) clf() hp.gnomview(residFull[:,iqu]-residFull[:,iqu],title=name+' Res Fin Ref. Inst.', sub=sub1, rot=center, reso=30) else: pfFull_I = pfFull[0] pfFull_Q = pfFull[1] pfFull_U = pfFull[2] maskFull = pfFull[3] residFull = pfFull[4] ## alternative one print("Doing Alternative instrument") maps2, initconv2, cov2, x0 = get_maps(spectra, inst2, sampling, nside, x0, coverage_threshold=coverage_threshold, savefile=altsavefile, savefile_noiseless=altsavefile_noiseless, noI=noI) mask2 = cov2 > coverage_threshold resid2 = initconv2 - maps2 if plot: figure(0) hp.gnomview(initconv2[:,iqu],min=-lim,max=lim,fig=0, title=name+' In '+lab,sub=sub2, rot=center, reso=30) figure(1) hp.gnomview(resid2[:,iqu],min=-lim/10,max=lim/10,fig=0, title=name+' Res '+lab,sub=sub2, rot=center, reso=30) figure(2) hp.gnomview(maps2[:,iqu],min=-lim,max=lim,fig=1, title=name+' Out '+lab,sub=sub2, rot=center, reso=30) figure(3) hp.gnomview(resid2[:,iqu]-residFull[:,iqu],fig=1, title=name+' Res Fin '+lab,sub=sub2, rot=center, reso=30) pf2_I = profile(cov2[mask2]*2, resid2[mask2,0],fmt='ro', nbins=nb, range=[0,np.max(cov2[mask2]*2)], plot=doplot) pf2_Q = profile(cov2[mask2]*2, resid2[mask2,1],fmt='bo',nbins=nb, range=[0,np.max(cov2[mask2]*2)], plot=doplot) pf2_U = profile(cov2[mask2]*2, resid2[mask2,2],fmt='go',nbins=nb, range=[0,np.max(cov2[mask2]*2)], plot=doplot) return pfFull_I[0], pf2_I[3]/pfFull_I[3], pf2_Q[3]/pfFull_Q[3], pf2_U[3]/pfFull_U[3], pfFull, x0
display(solution_qubic['x'], 'Reconstructed map', iplot=4) res_qubic = display(solution_qubic['x'] - convolved_sky, 'Difference map', iplot=7) mp.figure(2) mp.clf() display(convolved_sky, 'Original map', iplot=1) display(solution_fusion['x'], 'Reconstructed map', iplot=4) res_fusion = display(solution_fusion['x'] - convolved_sky, 'Difference map', iplot=7) mp.figure(3) for res, color in zip((res_qubic, res_fusion), ('blue', 'green')): for i, kind in enumerate('IQU'): axis = mp.subplot(3, 1, i+1) x, y = profile(res[i]**2) x *= 5 / 60 y = np.sqrt(y) y *= np.degrees(np.sqrt(4 * np.pi / acq_qubic.scene.npixel)) mp.plot(x, y, color=color) mp.title(kind) mp.ylabel('Sensitivity [$\mu$K deg]') mp.xlabel('Angular distance [degrees]') # BICEP-2 / Planck # sigmas = 1.2 * np.array([1 / np.sqrt(2), 1, 1]) sigmas = np.std(acq_planck.sigma, 0) for i, sigma in enumerate(sigmas): axis = mp.subplot(3, 1, i+1) mp.axhline(sigma, color='red')
resid = all_solutions_fusion[i]['x'] - convolved_sky resid[~mask,:] = 0 display(resid, 'Difference map', iplot=7, reso=reso, Trange=Trange) print(std(resid[mask,0]), std(resid[mask,1]), std(resid[mask,2])) #savefig(names[i]+'.png') cols=['black', 'red','blue','green', 'orange'] aa=0.2 rng = [-2,4] fs=8 nb=20 clf() for i in xrange(len(all_instruments)): resid = all_solutions_fusion[i]['x'] - convolved_sky idata = profile(all_coverages[i][mask]/np.max(all_coverages[i]), np.nan_to_num(resid[mask,0]), nbins=nb, range=[0,1],color=cols[i], plot=False) qdata = profile(all_coverages[i][mask]/np.max(all_coverages[i]), np.nan_to_num(resid[mask,1]), nbins=nb, range=[0,1],color=cols[i], plot=False) udata = profile(all_coverages[i][mask]/np.max(all_coverages[i]), np.nan_to_num(resid[mask,2]), nbins=nb, range=[0,1],color=cols[i], plot=False) subplot(3,1,1) yscale('log') xlabel('Normalized coverage') ylabel('I RMS residuals') ylim(0.1,2) plot(idata[0], idata[3], color=cols[i], label=names[i], lw=2) if i==0: plot(idata[0], idata[3]*sqrt(2), '--', color=cols[i], label=names[i]+' x sqrt(2)', lw=2) legend(fontsize=fs, loc='upper right') subplot(3,1,2) yscale('log') xlabel('Normalized coverage')
x_rec_qubic[COV == 0] = np.nan display(conv_sky, 'Original map', iplot=1) display(x_rec_qubic, 'Reconstructed map', iplot=4) res_qubic = display(x_rec_qubic - conv_sky, 'Difference map', iplot=7) mp.figure(2) mp.clf() display(conv_sky, 'Original map', iplot=1) display(x_rec_fusion, 'Reconstructed map', iplot=4) res_fusion = display(x_rec_fusion - conv_sky, 'Difference map', iplot=7) mp.figure(3) for res, color in zip((res_qubic, res_fusion), ('blue', 'green')): for i, kind in enumerate('IQU'): axis = mp.subplot(3, 1, i + 1) x, y = profile(res[i]**2) x *= 5 / 60 y = np.sqrt(y) y *= np.degrees(np.sqrt(4 * np.pi / acq.scene.npixel)) mp.plot(x, y, color=color) mp.title(kind) mp.ylim(0, 1.8) mp.ylabel('Sensitivity [$\mu$K deg]') mp.xlabel('Angular distance [degrees]') # BICEP-2 / Planck # sigmas = 1.2 * np.array([1 / np.sqrt(2), 1, 1]) sigmas = np.std(acq_planck.sigma, 0) for i, sigma in enumerate(sigmas): axis = mp.subplot(3, 1, i + 1) mp.axhline(sigma, color='red')
detector_nep = 4.7e-17*np.sqrt(len(sampling) * sampling.period / (365 * 86400)) acq_qubic = QubicAcquisition(150, sampling[np.abs(sampling.elevation-50) < 20], nside=nside, detector_nep=detector_nep) coverage_map = acq_qubic.get_coverage() coverage_map = coverage_map / np.max(coverage_map) angmax = hp.pix2ang(nside, coverage_map.argmax()) maxloc = np.array([np.degrees(angmax[1]), 90.-np.degrees(angmax[0])]) figure(0) clf() cov = hp.gnomview(coverage_map, rot=maxloc, reso=5, xsize=800, return_projected_map=True,sub=(2,1,1),min=0.0) contour(cov,[0,0.01, 0.1]) subplot(2,1,2) x, y = profile(cov) x *= 5 / 60 plot(x, y/np.max(y)) maskok = coverage_map > 0.1 fsky=np.sum(coverage_map[maskok]) *1./len(maskok) hp.mollview(coverage_map) title('QUBIC : fsky > 0.1 : {0:3.1f}%'.format(fsky*100)) savefig('moll_qubic.png') import scipy.ndimage clf() figure(0)