Source code for pysm3.distribution

from . import mpi


[docs]class MapDistribution: def __init__( self, pixel_indices=None, mpi_comm=None, nside=None, smoothing_lmax=None ): """Define how a map is distributed In a serial environment, this is only useful if you want to generate a partial sky, pass an array `pixel_indices` with the indices in RING ordering. in a MPI environment, pass a `mpi4py` communicator and the desired :math:`\ell_{max}` for smoothing and this class will create a ring-based distribution suitable for smoothing with `libsharp`. Parameters ---------- pixel_indices : ndarray of integers Subset of pixels that should be used in RING ordering mpi_comm: object MPI communicator object (optional, default=None). nside: int Resolution parameter at which this model is to be calculated. smoothing_lmax : int :math:`\ell_{max}` for the smoothing step, by default :math:`3*N_{side}-1` """ self.pixel_indices = pixel_indices self.mpi_comm = mpi_comm self.smoothing_lmax = smoothing_lmax self.nside = nside if self.mpi_comm is not None and pixel_indices is None: assert ( self.nside is not None ), "libsharp needs to know the NSIDE to create the distribution" if self.smoothing_lmax is None: self.smoothing_lmax = 3 * self.nside - 1 if mpi.libsharp is None: self.pixel_indices = mpi.distribute_pixels_uniformly( self.mpi_comm, self.nside ) else: self.pixel_indices, lg, lo = mpi.distribute_rings_libsharp( self.mpi_comm, self.nside, lmax=self.smoothing_lmax ) self.libsharp_grid = lg self.libsharp_order = lo