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
def testMinTimeBetweenStatesMetric(self): """ Test the minTimeBetweenStates metric. """ filters = np.array(['u', 'g', 'g', 'r']) visitTimes = np.array([0, 5, 6, 7]) # days data = np.core.records.fromarrays( [visitTimes, filters], names=['observationStartMJD', 'filter']) metric = metrics.MinTimeBetweenStatesMetric() result = metric.run(data) # minutes self.assertEqual(result, 2 * 24.0 * 60.0) data['filter'] = np.array(['u', 'u', 'u', 'u']) result = metric.run(data) self.assertEqual(result, metric.badval)