def _check_flags(self, mbobs): flags = self['metacal'].get('bmask_flags', None) passed_flags = True _mbobs = None if flags is not None: _mbobs = MultiBandObsList() _mbobs.update_meta_data(mbobs.meta) for obslist in mbobs: _obslist = ObsList() _obslist.update_meta_data(obslist.meta) for obs in obslist: msk = (obs.bmask & flags) != 0 if np.any(msk): logger.info(" EDGE HIT") else: _obslist.append(obs) passed_flags = True _mbobs.append(_obslist) # all bands have to have at least one obs for ol in _mbobs: if len(ol) == 0: passed_flags = False return passed_flags, _mbobs
def _strip_coadd(mbobs): _mbobs = MultiBandObsList() _mbobs.update_meta_data(mbobs.meta) for ol in mbobs: _ol = ObsList() _ol.update_meta_data(ol.meta) for i in range(1, len(ol)): _ol.append(ol[i]) _mbobs.append(_ol) return _mbobs
def _strip_zero_flux(mbobs): _mbobs = MultiBandObsList() _mbobs.update_meta_data(mbobs.meta) for ol in mbobs: _ol = ObsList() _ol.update_meta_data(ol.meta) for i in range(len(ol)): if np.sum(ol[i].image) > 0: _ol.append(ol[i]) _mbobs.append(_ol) return _mbobs
def _get_band_observations(self, band, mindex): """ Get an ObsList for the coadd observations in each band If psf fitting fails, the ObsList will be zero length note we have already checked that we have a coadd and a single epoch without flags """ meds = self.meds_list[band] ncutout = meds['ncutout'][mindex] image_flags = self._get_image_flags(band, mindex) coadd_obs_list = ObsList() obs_list = ObsList() fake = numpy.zeros((0, 0)) for icut in xrange(ncutout): flags = 0 if not self._should_use_obs(band, mindex, icut): obs = Observation(fake) flags = IMAGE_FLAGS else: iflags = image_flags[icut] if iflags != 0: flags = IMAGE_FLAGS obs = Observation(fake) else: obs = self._get_band_observation(band, mindex, icut) if obs is None: flags = IMAGE_FLAGS obs = Observation(fake) # fill the meta data self._fill_obs_meta_data(obs, band, mindex, icut) # set flags meta = {'flags': flags} obs.update_meta_data(meta) if icut == 0: coadd_obs_list.append(obs) else: obs_list.append(obs) if self.conf['reject_outliers'] and len(obs_list) > 0: self._reject_outliers(obs_list) obs_list.update_meta_data({'band_num': band}) coadd_obs_list.update_meta_data({'band_num': band}) return coadd_obs_list, obs_list
def _get_band_observations(self, band, mindex): """ Get an ObsList for the coadd observations in each band If psf fitting fails, the ObsList will be zero length note we have already checked that we have a coadd and a single epoch without flags """ meds=self.meds_list[band] ncutout=meds['ncutout'][mindex] image_flags=self._get_image_flags(band, mindex) coadd_obs_list = ObsList() obs_list = ObsList() fake=numpy.zeros((0,0)) for icut in xrange(ncutout): flags=0 if not self._should_use_obs(band, mindex, icut): obs = Observation(fake) flags = IMAGE_FLAGS else: iflags = image_flags[icut] if iflags != 0: flags = IMAGE_FLAGS obs = Observation(fake) else: obs = self._get_band_observation(band, mindex, icut) if obs is None: flags = IMAGE_FLAGS obs = Observation(fake) # fill the meta data self._fill_obs_meta_data(obs,band,mindex,icut) # set flags meta = {'flags':flags} obs.update_meta_data(meta) if icut==0: coadd_obs_list.append(obs) else: obs_list.append(obs) if self.conf['reject_outliers'] and len(obs_list) > 0: self._reject_outliers(obs_list) obs_list.update_meta_data({'band_num':band}) coadd_obs_list.update_meta_data({'band_num':band}) return coadd_obs_list, obs_list