def read_map_bands(fname, read_bands): if read_bands: i_map = -1 else: i_map = ['g', 'r', 'i', 'z', 'y'].index(o.band) fskb, temp = fm.read_flat_map(fname, i_map=i_map) fm.compare_infos(fsk, fskb) if i_map != -1: temp = [temp] return temp
def __init__(self, hdu_list, i_bin, fsk, mask_binary, masked_fraction, contaminants=None): #Read numbers map self.fsk, nmap = fm.read_flat_map(None, hdu=hdu_list[2 * i_bin]) #Read N(z) self.nz_data = hdu_list[2 * i_bin + 1].data.copy() #Make sure other maps are compatible fm.compare_infos(self.fsk, fsk) if not self.fsk.is_map_compatible(mask_binary): raise ValueError("Mask size is incompatible") if not self.fsk.is_map_compatible(masked_fraction): raise ValueError("Mask size is incompatible") if contaminants is not None: for ic, c in enumerate(contaminants): if not self.fsk.is_map_compatible(c): raise ValueError( "%d-th contaminant template is incompatible" % ic) #Translate into delta map self.weight = masked_fraction * mask_binary goodpix = np.where(mask_binary > 0.1)[0] ndens = np.sum(nmap * mask_binary) / np.sum(self.weight) self.ndens_perad = ndens / (np.radians(self.fsk.dx) * np.radians(self.fsk.dy)) self.delta = np.zeros_like(self.weight) self.delta[goodpix] = nmap[goodpix] / (ndens * masked_fraction[goodpix]) - 1 #Reshape contaminants conts = None if contaminants is not None: conts = [[c.reshape([self.fsk.ny, self.fsk.nx])] for c in contaminants] #Form NaMaster field self.field = nmt.NmtFieldFlat( np.radians(self.fsk.lx), np.radians(self.fsk.ly), self.weight.reshape([self.fsk.ny, self.fsk.nx]), [self.delta.reshape([self.fsk.ny, self.fsk.nx])], templates=conts)
nbins = len(data_hdus) // 2 os.system('mkdir -p ' + o.prefix_out) print("Reading mask") #Create depth-based mask fsk, mp_depth = fm.read_flat_map(o.prefix_in + "_10s_depth_mean_fluxerr.fits", 2) mp_depth[np.isnan(mp_depth)] = 0 mp_depth[mp_depth > 40] = 0 msk_depth = np.zeros_like(mp_depth) msk_depth[mp_depth >= o.depth_cut] = 1 #Read masked fraction fskb, mskfrac = fm.read_flat_map(o.prefix_in + '_MaskedFraction.fits', i_map=0) fm.compare_infos(fsk, fskb) #Create BO-based mask msk_bo = np.zeros_like(mskfrac) msk_bo[mskfrac > o.mask_thr] = 1 msk_t = msk_bo * msk_depth * mskfrac for ibin in range(nbins): print("Bin %d" % ibin) data_hdu = data_hdus[2 * ibin] for j, cm in enumerate(cont_maps): print(" " + cm) path_sys = o.prefix_in + '_%s.fits' % (cm) xsys, xsys_resc, mean_sys, std_sys = check_sys(data_hdu, path_sys, msk_t, o.nbins_sys) if len(xsys) > 1: