Coverage for tests/testCalibrationMetrics.py : 13%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
""" Test the parallax metric. """ names = ['observationStartMJD', 'finSeeing', 'fiveSigmaDepth', 'fieldRA', 'fieldDec', 'filter'] types = [float, float, float, float, float, (np.str_, 1)] data = np.zeros(700, dtype=list(zip(names, types))) slicePoint = {'sid': 0} data['observationStartMJD'] = np.arange(700)+56762 data['finSeeing'] = 0.7 data['filter'][0:100] = str('r') data['filter'][100:200] = str('u') data['filter'][200:] = str('g') data['fiveSigmaDepth'] = 24. stacker = stackers.ParallaxFactorStacker() data = stacker.run(data) normFlags = [False, True] for flag in normFlags: data['finSeeing'] = 0.7 data['fiveSigmaDepth'] = 24. baseline = metrics.ParallaxMetric(normalize=flag, seeingCol='finSeeing').run(data, slicePoint) data['finSeeing'] = data['finSeeing']+.3 worse1 = metrics.ParallaxMetric(normalize=flag, seeingCol='finSeeing').run(data, slicePoint) worse2 = metrics.ParallaxMetric(normalize=flag, rmag=22., seeingCol='finSeeing').run(data, slicePoint) worse3 = metrics.ParallaxMetric(normalize=flag, rmag=22., seeingCol='finSeeing').run(data[0:300], slicePoint) data['fiveSigmaDepth'] = data['fiveSigmaDepth']-1. worse4 = metrics.ParallaxMetric(normalize=flag, rmag=22., seeingCol='finSeeing').run(data[0:300], slicePoint) # Make sure the RMS increases as seeing increases, the star gets fainter, # the background gets brighter, or the baseline decreases. if flag: pass else: assert(worse1 > baseline) assert(worse2 > worse1) assert(worse3 > worse2) assert(worse4 > worse3)
""" Test the ProperMotion metric. """ names = ['observationStartMJD', 'finSeeing', 'fiveSigmaDepth', 'fieldRA', 'fieldDec', 'filter'] types = [float, float, float, float, float, (np.str_, 1)] data = np.zeros(700, dtype=list(zip(names, types))) slicePoint = [0] stacker = stackers.ParallaxFactorStacker() normFlags = [False, True] data['observationStartMJD'] = np.arange(700)+56762 data['finSeeing'] = 0.7 data['filter'][0:100] = str('r') data['filter'][100:200] = str('u') data['filter'][200:] = str('g') data['fiveSigmaDepth'] = 24. data = stacker.run(data) for flag in normFlags: data['finSeeing'] = 0.7 data['fiveSigmaDepth'] = 24 baseline = metrics.ProperMotionMetric(normalize=flag, seeingCol='finSeeing').run(data, slicePoint) data['finSeeing'] = data['finSeeing']+.3 worse1 = metrics.ProperMotionMetric(normalize=flag, seeingCol='finSeeing').run(data, slicePoint) worse2 = metrics.ProperMotionMetric(normalize=flag, rmag=22., seeingCol='finSeeing').run(data, slicePoint) worse3 = metrics.ProperMotionMetric(normalize=flag, rmag=22., seeingCol='finSeeing').run(data[0:300], slicePoint) data['fiveSigmaDepth'] = data['fiveSigmaDepth']-1. worse4 = metrics.ProperMotionMetric(normalize=flag, rmag=22., seeingCol='finSeeing').run(data[0:300], slicePoint) # Make sure the RMS increases as seeing increases, the star gets fainter, # the background gets brighter, or the baseline decreases. if flag: # When normalized, mag of star and m5 don't matter (just scheduling). self.assertAlmostEqual(worse2, worse1) self.assertAlmostEqual(worse4, worse3) # But using fewer points should make proper motion worse. # survey assumed to have same seeing and limiting mags. assert(worse3 < worse2) else: assert(worse1 > baseline) assert(worse2 > worse1) assert(worse3 > worse2) assert(worse4 > worse3)
""" Test the parallax coverage """ names = ['observationStartMJD', 'finSeeing', 'fiveSigmaDepth', 'fieldRA', 'fieldDec', 'filter', 'ra_pi_amp', 'dec_pi_amp'] types = [float, float, float, float, float, '<U1', float, float] data = np.zeros(100, dtype=list(zip(names, types))) data['filter'] = 'r' data['fiveSigmaDepth'] = 25. data['ra_pi_amp'] = 1. data['dec_pi_amp'] = 1.
# All the parallax amplitudes are the same, should return zero metric = metrics.ParallaxCoverageMetric(seeingCol='finSeeing') val = metric.run(data) assert(val == 0)
# Half at (1,1), half at (0.5,0.5) data['ra_pi_amp'][0:50] = 1 data['dec_pi_amp'][0:50] = 1 data['ra_pi_amp'][50:] = -1 data['dec_pi_amp'][50:] = -1 val = metric.run(data) self.assertAlmostEqual(val, 2.**0.5)
data['ra_pi_amp'][0:50] = 0.5 data['dec_pi_amp'][0:50] = 0.5 data['ra_pi_amp'][50:] = -0.5 data['dec_pi_amp'][50:] = -0.5 val = metric.run(data) self.assertAlmostEqual(val, 0.5*2**0.5)
data['ra_pi_amp'][0:50] = 1 data['dec_pi_amp'][0:50] = 0 data['ra_pi_amp'][50:] = -1 data['dec_pi_amp'][50:] = 0 val = metric.run(data) assert(val == 1)
""" Test the parallax-DCR degeneracy metric """ names = ['observationStartMJD', 'finSeeing', 'fiveSigmaDepth', 'fieldRA', 'fieldDec', 'filter', 'ra_pi_amp', 'dec_pi_amp', 'ra_dcr_amp', 'dec_dcr_amp'] types = [float, float, float, float, float, '<U1', float, float, float, float] data = np.zeros(100, dtype=list(zip(names, types))) data['filter'] = 'r' data['fiveSigmaDepth'] = 25.
# Set so ra is perfecly correlated data['ra_pi_amp'] = 1. data['dec_pi_amp'] = 0.01 data['ra_dcr_amp'] = 0.2
metric = metrics.ParallaxDcrDegenMetric(seeingCol='finSeeing') val = metric.run(data) np.testing.assert_almost_equal(np.abs(val), 1., decimal=2)
# set so the offsets are always nearly perpendicular data['ra_pi_amp'] = 0.001 data['dec_pi_amp'] = 1. data['ra_dcr_amp'] = 0.2
metric = metrics.ParallaxDcrDegenMetric(seeingCol='finSeeing') val = metric.run(data) np.testing.assert_almost_equal(val, 0., decimal=2)
# Generate a random distribution that should have little or no correlation rng = np.random.RandomState(42)
data['ra_pi_amp'] = rng.rand(100)*2-1. data['dec_pi_amp'] = rng.rand(100)*2-1. data['ra_dcr_amp'] = rng.rand(100)*2-1. data['dec_dcr_amp'] = rng.rand(100)*2-1.
val = metric.run(data) assert(np.abs(val) < 0.2)
""" Test the RadiusObsMetric """
names = ['fieldRA', 'fieldDec'] dt = ['float']*2 data = np.zeros(3, dtype=list(zip(names, dt))) data['fieldDec'] = [-.1, 0, .1] slicePoint = {'ra': 0., 'dec': 0.} metric = metrics.RadiusObsMetric() result = metric.run(data, slicePoint) for i, r in enumerate(result): np.testing.assert_almost_equal(r, abs(data['fieldDec'][i])) assert(metric.reduceMean(result) == np.mean(result)) assert(metric.reduceRMS(result) == np.std(result)) np.testing.assert_almost_equal(metric.reduceFullRange(result), np.max(np.abs(data['fieldDec']))-np.min(np.abs(data['fieldDec'])))
lsst.utils.tests.init()
lsst.utils.tests.init() unittest.main() |