Beispiel #1
0
 def load_mask_mutable(self, order, dtype=np.double):
     assert dtype == np.double
     if self._mask is not None:
         x = as_single_map(self._mask, dtype=dtype, type='mask')
         downgrading = self.Nside < x.Nside
         x = x.reformat_and_discard(order, self.Nside, _strict=True)
         if downgrading:
             x = pixel_sphere_map(
                 (x > self._mask_downgrade_treshold).view(np.ndarray),
                 pixel_order=order)
     else:
         x = pixel_sphere_map(1, Nside=self.Nside, pixel_order=order)
     return x
Beispiel #2
0
def map_from_fits(desc, type, dtype=np.double):
    filename, extno, field = desc
    if extno is None or field is None:
        raise ValueError("extno and field must be provided")
    if isinstance(field, int) and field < 0:
        raise ValueError("field must be >= 0")
    import pyfits
    hdulist = pyfits.open(filename)
    try:
        ext = hdulist[extno]
        field = fits_resolve_field(ext, field, desc)
        mapdata = ext.data.field(field).ravel().astype(dtype)
        units = ext.columns[field].unit.split(',')[0]

        if type == 'temperature':
            if units == 'mK':
                mapdata *= 1e-3 # convert to Kelvin
            elif units == 'uK':
                mapdata *= 1e-6
            else:
                raise FormatError('Do not recognize temperature units: %s' % (units))
        elif type == 'count':
            if units != 'counts':
                raise FormatError('Do not recognize count units: %s' % (units))
        elif type in ('mask', 'raw'):
            pass
        else:
            raise ValueError('Wrong map type: %s' % type)
        
        map = pixel_sphere_map(mapdata,
                               pixel_order=ext.header['ORDERING'].lower() # nested or ring
                               )
    finally:
        hdulist.close()
    return map    
Beispiel #3
0
 def load_temperature(self, order='nested', dtype=np.double):
     key = ('temperature', order, dtype)
     x = self._cache.get(key, None)
     if x is None:
         map = self.load_temperature_mutable(order, dtype)
         x = readonly_array(map)
         x = pixel_sphere_map(x, pixel_order=map.pixel_order, Nside=map.Nside)
         self._cache[key] = x
     return x
Beispiel #4
0
 def _load(self, name, loader, order, dtype, *args):
     key = (name, order, dtype)
     x = self._cache.get(key, None)
     if x is None:
         map = loader(order, dtype, *args)
         x = readonly_array(map)
         x = pixel_sphere_map(x, pixel_order=map.pixel_order, Nside=map.Nside)
         self._cache[key] = x
     return x
Beispiel #5
0
 def wmap_temperature_mask(self, dtype=np.float64):
     filename = self.path('wmap_temperature_analysis_mask_r9_7yr_v4.fits')
     import pyfits
     import maps
     
     hdulist = pyfits.open(self.path(filename))
     try:
         data = hdulist[1].data.view(np.ndarray)
         mapdata = data['N_OBS'].ravel().astype(dtype)
     finally:
         hdulist.close()
     out = maps.pixel_sphere_map(mapdata, nested=True)
     return out
Beispiel #6
0
    def load_rms_mutable(self, order='nested', dtype=np.double, include_added_noise=True):
        if self._uniform_rms is not None:
            rms = pixel_sphere_map(self._uniform_rms, Nside=self.Nside, pixel_order=order)
            return rms # We're done -- add_noise disallowed for uniform noise
        elif self._n_obs is not None:
            n_obs = as_single_map(self._n_obs, dtype=dtype, type='count', copy=False)
            rms = self._sigma0  * self._rms_regrade_factor / np.sqrt(n_obs)
        elif self._rms is not None:
            rms = as_single_map(self._rms * self._rms_regrade_factor,
                                dtype=dtype, type='temperature', copy=True)
        else:
            assert False


        rms = rms.reformat_and_discard(order, self.Nside, _strict=True)
        if self._add_noise is not None and include_added_noise:
            rms += self._add_noise
        return rms