コード例 #1
0
def photRepeat(matchedCatalog, numRandomShuffles=50, randomSeed=None, **filterargs):
    filteredCat = filterMatches(matchedCatalog, **filterargs)
    magKey = filteredCat.schema.find('slot_PsfFlux_mag').key

    # Require at least nMinPhotRepeat objects to calculate the repeatability:
    nMinPhotRepeat = 50
    if filteredCat.count > nMinPhotRepeat:
        phot_resid_meas = calcPhotRepeat(filteredCat, magKey, numRandomShuffles=50, randomSeed=randomSeed)
        return phot_resid_meas
    else:
        return {'nomeas': np.nan*u.mmag}
コード例 #2
0
    def run(self, matchedCatalog, metric_name):
        self.log.info(f"Measuring {metric_name}")

        D = self.config.annulus_r * u.arcmin
        filteredCat = filterMatches(matchedCatalog)
        nMinTEx = 50
        if filteredCat.count <= nMinTEx:
            return Struct(measurement=Measurement(metric_name, np.nan*u.Unit('')))

        radius, xip, xip_err = correlation_function_ellipticity_from_matches(filteredCat)
        operator = ThresholdSpecification.convert_operator_str(self.config.comparison_operator)
        corr, corr_err = select_bin_from_corr(radius, xip, xip_err, radius=D, operator=operator)
        return Struct(measurement=Measurement(metric_name, np.abs(corr)*u.Unit('')))
コード例 #3
0
def astromRms(matchedCatalog, mag_bright_cut, mag_faint_cut, annulus_r, width, **filterargs):
    filteredCat = filterMatches(matchedCatalog, **filterargs)

    magRange = np.array([mag_bright_cut, mag_faint_cut]) * u.mag
    D = annulus_r * u.arcmin
    width = width * u.arcmin
    annulus = D + (width/2)*np.array([-1, +1])

    # Require at least 2 measurements to calculate the repeatability:
    nMinMeas = 2
    if filteredCat.count > nMinMeas:
        astrom_resid_rms_meas = calcRmsDistances(
            filteredCat,
            annulus,
            magRange=magRange)
        return astrom_resid_rms_meas
    else:
        return {'nomeas': np.nan*u.marcsec}
コード例 #4
0
    def run(self, matchedCatalogMulti, metric_name, in_id, out_id):
        self.log.info(f"Measuring {metric_name}")

        if self.config.ref_filter not in filter_dict:
            raise Exception('Reference filter supplied for AB1 not in dictionary.')

        filteredCat = filterMatches(matchedCatalogMulti)
        rmsDistancesAll = []

        if len(filteredCat) > 0:

            filtnum = filter_dict[self.config.ref_filter]

            refVisits = set()
            for id in filteredCat.ids:
                grptmp = filteredCat[id]
                filtmch = (grptmp['filt'] == filtnum)
                if len(filtmch) > 0:
                    refVisits.update(set(grptmp[filtmch]['visit']))

            refVisits = list(refVisits)

            magRange = np.array([self.config.bright_mag_cut, self.config.faint_mag_cut]) * u.mag
            for rv in refVisits:
                rmsDistances = calcRmsDistancesVsRef(
                    filteredCat,
                    rv,
                    magRange=magRange,
                    band=filter_dict[out_id['band']])
                finiteEntries = np.where(np.isfinite(rmsDistances))[0]
                if len(finiteEntries) > 0:
                    rmsDistancesAll.append(rmsDistances[finiteEntries])

            if len(rmsDistancesAll) == 0:
                return Struct(measurement=Measurement(metric_name, np.nan*u.marcsec))
            else:
                rmsDistancesAll = np.concatenate(rmsDistancesAll)
                return Struct(measurement=Measurement(metric_name, np.mean(rmsDistancesAll)*u.marcsec))

        else:
            return Struct(measurement=Measurement(metric_name, np.nan*u.marcsec))
コード例 #5
0
    def run(self, matchedCatalog, metric_name):
        self.log.info(f"Measuring {metric_name}")

        filteredCat = filterMatches(matchedCatalog)

        magRange = np.array([self.config.bright_mag_cut, self.config.faint_mag_cut]) * u.mag
        D = self.config.annulus_r * u.arcmin
        width = self.config.width * u.arcmin
        annulus = D + (width/2)*np.array([-1, +1])

        rmsDistances = calcRmsDistances(
            filteredCat,
            annulus,
            magRange=magRange)

        values, bins = np.histogram(rmsDistances.to(u.marcsec), bins=self.config.bins*u.marcsec)
        extras = {'bins': Datum(bins, label='binvalues', description='bins'),
                  'values': Datum(values*u.count, label='counts', description='icounts in bins')}

        if len(rmsDistances) == 0:
            return Struct(measurement=Measurement(metric_name, np.nan*u.marcsec, extras=extras))

        return Struct(measurement=Measurement(metric_name, np.median(rmsDistances.to(u.marcsec)),
                                              extras=extras))