Coverage for tests/testBaseMetrics.py : 24%

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
1import matplotlib
2matplotlib.use("Agg")
3import unittest
4import lsst.sims.maf.metrics as metrics
5import lsst.utils.tests
8class TestBaseMetric(unittest.TestCase):
10 def testReduceDict(self):
11 """Test that reduce dictionary is created."""
12 testmetric = metrics.BaseMetric('testcol')
13 self.assertEqual(list(testmetric.reduceFuncs.keys()), [])
15 def testMetricName(self):
16 """Test that metric name is set appropriately automatically and explicitly"""
17 # Test automatic setting of metric name
18 testmetric = metrics.BaseMetric('testcol')
19 self.assertEqual(testmetric.name, 'Base testcol')
20 testmetric = metrics.BaseMetric(['testcol1', 'testcol2'])
21 self.assertEqual(testmetric.name, 'Base testcol1, testcol2')
22 # Test explicit setting of metric name
23 testmetric = metrics.BaseMetric('testcol', metricName='Test')
24 self.assertEqual(testmetric.name, 'Test')
26 def testColRegistry(self):
27 """Test column registry adds to colRegistry as expected"""
28 cols = 'onecolumn'
29 colset = set()
30 colset.add(cols)
31 testmetric = metrics.BaseMetric(cols)
32 # Class registry should have dictionary with values = set of columns for metric class
33 self.assertEqual(testmetric.colRegistry.colSet, colset)
34 cols = ['onecolumn', 'twocolumn']
35 colset.add('twocolumn')
36 testmetric = metrics.BaseMetric(cols)
37 self.assertEqual(testmetric.colRegistry.colSet, colset)
38 # Test with additional (different) metric
39 cols = 'twocolumn'
40 testmetric2 = metrics.MeanMetric(cols)
41 self.assertEqual(testmetric2.colRegistry.colSet, colset)
43 def testMetricDtype(self):
44 """Test that base metric data value type set appropriately"""
45 cols = 'onecolumn'
46 testmetric = metrics.BaseMetric(cols)
47 self.assertEqual(testmetric.metricDtype, 'float')
48 testmetric = metrics.BaseMetric(cols, metricDtype='object')
49 self.assertEqual(testmetric.metricDtype, 'object')
51 def testUnits(self):
52 """Test unit setting (including units set by utils.getColInfo)"""
53 cols = 'onecolumn'
54 # Test for column not in colInfo, units not set by hand.
55 testmetric = metrics.BaseMetric(cols)
56 self.assertEqual(testmetric.units, '')
57 # Test for column not in colInfo, units set by hand.
58 testmetric = metrics.BaseMetric(cols, units='Test')
59 self.assertEqual(testmetric.units, 'Test')
60 # Test for column in colInfo (looking up units in colInfo)
61 cols = 'finSeeing'
62 testmetric = metrics.BaseMetric(cols)
63 self.assertEqual(testmetric.units, 'arcsec')
64 # Test for column in colInfo but units overriden
65 testmetric = metrics.BaseMetric(cols, units='Test')
66 self.assertEqual(testmetric.units, 'Test')
67 # Test for multiple columns not in colInfo
68 cols = ['onecol', 'twocol']
69 testmetric = metrics.BaseMetric(cols)
70 self.assertEqual(testmetric.units, '')
71 # Test for multiple columns in colInfo
72 cols = ['finSeeing', 'filtSkyBrightness']
73 testmetric = metrics.BaseMetric(cols)
74 self.assertEqual(testmetric.units, 'arcsec mag/sq arcsec')
75 # Test for multiple columns, only one in colInfo
76 cols = ['finSeeing', 'twocol']
77 testmetric = metrics.BaseMetric(cols)
78 self.assertEqual(testmetric.units, 'arcsec ')
79 # Test for multiple columns both in colInfo but repeated
80 cols = ['finSeeing', 'finSeeing']
81 testmetric = metrics.BaseMetric(cols)
82 self.assertEqual(testmetric.units, 'arcsec arcsec')
85class TestMemory(lsst.utils.tests.MemoryTestCase):
86 pass
89def setup_module(module):
90 lsst.utils.tests.init()
93if __name__ == "__main__": 93 ↛ 94line 93 didn't jump to line 94, because the condition on line 93 was never true
94 lsst.utils.tests.init()
95 unittest.main()