コード例 #1
0
def setupMetrics(colmap, wholesurvey=False):
    metricList = []
    captionList = []
    # Number of filter changes (per slice - either whole survey or X nights)
    if wholesurvey:
        metricList.append(metrics.NChangesMetric(col=colmap['filter'], orderBy=colmap['mjd'],
                                                 metricName='Total Filter Changes'))
    else:
        metricList.append(metrics.NChangesMetric(col=colmap['filter'], orderBy=colmap['mjd'],
                                                 metricName='Filter Changes'))
    captionList.append('Total filter changes ')
    # Minimum time between filter changes
    metricList.append(metrics.MinTimeBetweenStatesMetric(changeCol=colmap['filter'], timeCol=colmap['mjd']))
    captionList.append('Minimum time between filter changes ')
    # Number of filter changes faster than 10 minutes
    metricList.append(metrics.NStateChangesFasterThanMetric(changeCol=colmap['filter'], timeCol=colmap['mjd'],
                                                            cutoff=10))
    captionList.append('Number of filter changes faster than 10 minutes ')
    # Number of filter changes faster than 20 minutes
    metricList.append(metrics.NStateChangesFasterThanMetric(changeCol=colmap['filter'], timeCol=colmap['mjd'],
                                                            cutoff=20))
    captionList.append('Number of filter changes faster than 20 minutes ')
    # Maximum number of filter changes faster than 10 minutes within slice
    metricList.append(metrics.MaxStateChangesWithinMetric(changeCol=colmap['filter'], timeCol=colmap['mjd'],
                                                          timespan=10))
    captionList.append('Max number of filter  changes within a window of 10 minutes ')
    # Maximum number of filter changes faster than 20 minutes within slice
    metricList.append(metrics.MaxStateChangesWithinMetric(changeCol=colmap['filter'], timeCol=colmap['mjd'],
                                                          timespan=20))
    captionList.append('Max number of filter changes within a window of 20 minutes ')
    return metricList, captionList
コード例 #2
0
    def testMaxStateChangesWithinMetric(self):
        """
        Test the MaxStateChangesWithin metric.
        """
        filters = np.array(['u', 'g', 'r', 'u', 'g', 'r'])
        visitTimes = np.array([0, 1, 1, 4, 6, 7])  # days
        data = np.core.records.fromarrays(
            [visitTimes, filters], names=['observationStartMJD', 'filter'])
        metric = metrics.MaxStateChangesWithinMetric(timespan=1 * 24 * 60)
        result = metric.run(data)  # minutes
        self.assertEqual(result, 2)
        filters = np.array(['u', 'g', 'g', 'u', 'g', 'r', 'g', 'r'])
        visitTimes = np.array([0, 1, 1, 4, 4, 7, 8, 8])  # days
        data = np.core.records.fromarrays(
            [visitTimes, filters], names=['observationStartMJD', 'filter'])
        metric = metrics.MaxStateChangesWithinMetric(timespan=1 * 24 * 60)
        result = metric.run(data)  # minutes
        self.assertEqual(result, 3)

        filters = np.array(['u', 'g'])
        visitTimes = np.array([0, 1])  # days
        data = np.core.records.fromarrays(
            [visitTimes, filters], names=['observationStartMJD', 'filter'])
        metric = metrics.MaxStateChangesWithinMetric(timespan=1 * 24 * 60)
        result = metric.run(data)  # minutes
        self.assertEqual(result, 1)

        filters = np.array(['u', 'u'])
        visitTimes = np.array([0, 1])  # days
        data = np.core.records.fromarrays(
            [visitTimes, filters], names=['observationStartMJD', 'filter'])
        metric = metrics.MaxStateChangesWithinMetric(timespan=1 * 24 * 60)
        result = metric.run(data)  # minutes
        self.assertEqual(result, 0)