def __init__(self): BlobBase.__init__(self) self.register_datum('mag', quantity=5 * u.mag, description='Magnitude') self.register_datum('updateable_mag', quantity=5 * u.mag, description='Magnitude')
def __init__(self, repo, dataIds, matchRadius=None, safeSnr=50., useJointCal=False, verbose=False): BlobBase.__init__(self) self.verbose = verbose if not matchRadius: matchRadius = afwGeom.Angle(1, afwGeom.arcseconds) # Extract single filter self.register_datum('filterName', quantity=set([dId['filter'] for dId in dataIds]).pop(), description='Filter name') # Record important configuration self.register_datum( 'useJointCal', quantity=useJointCal, description='Whether jointcal/meas_mosaic calibrations were used') # Register datums stored by this blob; will be set later self.register_datum( 'mag', label='{band}'.format(band=self.filterName), description='Mean PSF magnitudes of stars over multiple visits') self.register_datum( 'magrms', label='RMS({band})'.format(band=self.filterName), description='RMS of PSF magnitudes over multiple visits') self.register_datum( 'magerr', label='sigma({band})'.format(band=self.filterName), description='Median 1-sigma uncertainty of PSF magnitudes over ' 'multiple visits') self.register_datum( 'snr', label='SNR({band})'.format(band=self.filterName), description='Median signal-to-noise ratio of PSF magnitudes over ' 'multiple visits') self.register_datum( 'dist', label='d', description='RMS of sky coordinates of stars over multiple visits') # Match catalogs across visits self._matchedCatalog = self._loadAndMatchCatalogs( repo, dataIds, matchRadius, useJointCal=useJointCal) self.magKey = self._matchedCatalog.schema.find("base_PsfFlux_mag").key # Reduce catalogs into summary statistics. # These are the serialiable attributes of this class. self._reduceStars(self._matchedCatalog, safeSnr)
def __init__(self, matchedMultiVisitDataset, brightSnr=100, medianRef=100, matchRef=500): BlobBase.__init__(self) self.register_datum( 'brightSnr', label='Bright SNR', description='Threshold in SNR for bright sources used in this ' 'model') self.register_datum('sigmaSys', label='sigma(sys)', description='Systematic error floor') self.register_datum( 'gamma', label='gamma', description='Proxy for sky brightness and read noise') self.register_datum('m5', label='m5', description='5-sigma depth') self.register_datum( 'photScatter', label='RMS', description='RMS photometric scatter for good stars') # FIXME add a description field to blobs? # self._doc['doc'] \ # = "Photometric uncertainty model from " \ # "http://arxiv.org/abs/0805.2366v4 (Eq 4, 5): " \ # "sigma_1^2 = sigma_sys^2 + sigma_rand^2, " \ # "sigma_rand^2 = (0.04 - gamma) * x + gamma * x^2 [mag^2] " \ # "where x = 10**(0.4*(m-m_5))" if not isinstance(medianRef, u.Quantity): medianRef = medianRef * u.mmag if not isinstance(brightSnr, u.Quantity): brightSnr = brightSnr * u.Unit('') self._compute(matchedMultiVisitDataset.snr, matchedMultiVisitDataset.mag, matchedMultiVisitDataset.magerr, matchedMultiVisitDataset.magrms, matchedMultiVisitDataset.dist, len(matchedMultiVisitDataset.goodMatches), brightSnr, medianRef, matchRef)
def __init__(self, matchedMultiVisitDataset, brightSnr=100, medianRef=100, matchRef=500): BlobBase.__init__(self) # FIXME add description field to blobs # self._doc['doc'] \ # = "Astrometric astrometry model: mas = C*theta/SNR + sigmaSys" if not isinstance(brightSnr, u.Quantity): brightSnr = brightSnr * u.Unit('') if not isinstance(medianRef, u.Quantity): medianRef = medianRef * u.marcsec self._compute(matchedMultiVisitDataset.snr, matchedMultiVisitDataset.dist, len(matchedMultiVisitDataset.goodMatches), brightSnr, medianRef, matchRef)