def get_qubic_map(instrument, sampling, scene, input_maps, withplanck=True, covlim=0.1): acq = QubicAcquisition(instrument, sampling, scene, photon_noise=False) C = acq.get_convolution_peak_operator() coverage = acq.get_coverage() observed = coverage > covlim * np.max(coverage) acq_restricted = acq[:, :, observed] H = acq_restricted.get_operator() x0_convolved = C(input_maps) if not withplanck: pack = PackOperator(observed, broadcast='rightward') y_noiseless = H(pack(x0_convolved)) noise = acq.get_noise() y = y_noiseless + noise print(std(noise)) invntt = acq.get_invntt_operator() A = H.T * invntt * H b = (H.T * invntt)(y) preconditioner = DiagonalOperator(1 / coverage[observed], broadcast='rightward') solution_qubic = pcg(A, b, M=preconditioner, disp=True, tol=1e-3, maxiter=1000) maps = pack.T(solution_qubic['x']) maps[~observed] = 0 else: acq_planck = PlanckAcquisition(150, acq.scene, true_sky=x0_convolved, fix_seed=True) acq_fusion = QubicPlanckAcquisition(acq, acq_planck) map_planck_obs=acq_planck.get_observation() H = acq_fusion.get_operator() invntt = acq_fusion.get_invntt_operator() y = acq_fusion.get_observation() A = H.T * invntt * H b = H.T * invntt * y solution_fusion = pcg(A, b, disp=True, maxiter=1000, tol=1e-3) maps = solution_fusion['x'] maps[~observed] = 0 x0_convolved[~observed,:]=0 return(maps, x0_convolved, observed)
ellbins = [0,50,75,100,125,150,175,200] nbins=len(ellbins)-1 ellmin=np.array(ellbins[0:nbins]) ellmax=np.array(ellbins[1:nbins+1])-1 ellval=(ellmin+ellmax)/2 binspec=pyquad.binspectrum(spectra,ellmin,ellmax) reload(qml) fwhmrad = instrument.synthbeam.peak.fwhm ll=np.arange(int(np.max(ellbins))+1) bl=np.exp(-0.5*ll**2*(fwhmrad/2.35)**2) #ds_dcb=qml.compute_ds_dcb_parpix(ellbins,nside,ipok,bl,polar=True,temp=False,nprocs=8) ### Data 1 y = acq_fusion.get_observation() b = H.T * invntt * y solution_fusion = pcg(A, b, disp=True, maxiter=1000, tol=1e-3) map_fusion = solution_fusion['x'] map_fusion[~observed,:] = 0 themaps = [map_fusion[:,1], map_fusion[:,2]] ### Data 2 y2 = acq_fusion.get_observation() b2 = H.T * invntt * y2 solution_fusion2 = pcg(A, b2, disp=True, maxiter=1000, tol=1e-3) map_fusion2 = solution_fusion2['x'] map_fusion2[~observed,:] = 0 themaps2 = [map_fusion2[:,1], map_fusion2[:,2]] mapq_o = x0_convolved[:,1]