def mapmake_full(self, nside, maptype): mapfile = self._mapsdir + 'map_%s.hdf5' % maptype Tmfile = self._Tmsdir + 'Tm_%s.hdf5' % maptype if os.path.exists(mapfile): if mpiutil.rank0: print "File %s exists. Skipping..." % mapfile mpiutil.barrier() return elif os.path.exists(Tmfile): if mpiutil.rank0: print "File %s exists. Read from it..." % Tmfile Tm = MPIArray.from_hdf5(Tmfile, 'Tm') else: def _make_Tm(mi): print "Making %i" % mi mmode = self.mmode(mi) return self.beamtransfer.project_vector_telescope_to_sky(mi, mmode) # if mpiutil.rank0 and not os.path.exists(self._Tmsdir): # # Make directory for Tms file # os.makedirs(self._Tmsdir) # Make directory for Tms file try: os.makedirs(self._Tmsdir) except OSError: # directory exists pass tel = self.telescope mmax = tel.mmax lm, sm, em = mpiutil.split_local(mmax+1) nfreq = tel.nfreq npol = tel.num_pol_sky ntheta = tel.theta_size # the local Tm array Tm = np.zeros((nfreq, npol, ntheta, lm), dtype=np.complex128) for ind, mi in enumerate(range(sm, em)): Tm[..., ind] = _make_Tm(mi) Tm = MPIArray.wrap(Tm, axis=3) Tm = Tm.redistribute(axis=0) # redistribute along freq # Save Tm Tm.to_hdf5(Tmfile, 'Tm', create=True) # if mpiutil.rank0 and not os.path.exists(self._mapsdir): # # Make directory for maps file # os.makedirs(self._mapsdir) # Make directory for maps file try: os.makedirs(self._mapsdir) except OSError: # directory exists pass tel = self.telescope npol = tel.num_pol_sky ntime = self.ntime # irfft to get map # cart_map = np.fft.irfft(Tm, axis=3, n=ntime) * ntime # NOTE the normalization constant ntime here to be consistant with the simulation fft cart_map = np.fft.hfft(Tm, axis=3, n=ntime) lfreq = cart_map.shape[0] hp_map = np.zeros((lfreq, npol, 12*nside**2), dtype=cart_map.dtype) for fi in range(lfreq): for pi in range(npol): hp_map[fi, pi] = tel.cart_projector.inv_projmap(cart_map[fi, pi], nside) mpiutil.barrier() hp_map = MPIArray.wrap(hp_map, axis=0) # save map hp_map.to_hdf5(mapfile, 'map', create=True)
def mapmake_full(self, nside, maptype): mapfile = self._mapsdir + 'map_%s.hdf5' % maptype Tmfile = self._Tmsdir + 'Tm_%s.hdf5' % maptype if os.path.exists(mapfile): if mpiutil.rank0: print "File %s exists. Skipping..." % mapfile mpiutil.barrier() return elif os.path.exists(Tmfile): if mpiutil.rank0: print "File %s exists. Read from it..." % Tmfile Tm = MPIArray.from_hdf5(Tmfile, 'Tm') else: def _make_Tm(mi): print "Making %i" % mi mmode = self.mmode(mi) return self.beamtransfer.project_vector_telescope_to_sky( mi, mmode) # if mpiutil.rank0 and not os.path.exists(self._Tmsdir): # # Make directory for Tms file # os.makedirs(self._Tmsdir) # Make directory for Tms file try: os.makedirs(self._Tmsdir) except OSError: # directory exists pass tel = self.telescope mmax = tel.mmax lm, sm, em = mpiutil.split_local(mmax + 1) nfreq = tel.nfreq npol = tel.num_pol_sky ntheta = tel.theta_size # the local Tm array Tm = np.zeros((nfreq, npol, ntheta, lm), dtype=np.complex128) for ind, mi in enumerate(range(sm, em)): Tm[..., ind] = _make_Tm(mi) Tm = MPIArray.wrap(Tm, axis=3) Tm = Tm.redistribute(axis=0) # redistribute along freq # Save Tm Tm.to_hdf5(Tmfile, 'Tm', create=True) # if mpiutil.rank0 and not os.path.exists(self._mapsdir): # # Make directory for maps file # os.makedirs(self._mapsdir) # Make directory for maps file try: os.makedirs(self._mapsdir) except OSError: # directory exists pass tel = self.telescope npol = tel.num_pol_sky ntime = self.ntime # irfft to get map # cart_map = np.fft.irfft(Tm, axis=3, n=ntime) * ntime # NOTE the normalization constant ntime here to be consistant with the simulation fft cart_map = np.fft.hfft(Tm, axis=3, n=ntime) lfreq = cart_map.shape[0] hp_map = np.zeros((lfreq, npol, 12 * nside**2), dtype=cart_map.dtype) for fi in range(lfreq): for pi in range(npol): hp_map[fi, pi] = tel.cart_projector.inv_projmap( cart_map[fi, pi], nside) mpiutil.barrier() hp_map = MPIArray.wrap(hp_map, axis=0) # save map hp_map.to_hdf5(mapfile, 'map', create=True)