Hide keyboard shortcuts

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 

6 

7 

8class TestBaseMetric(unittest.TestCase): 

9 

10 def testReduceDict(self): 

11 """Test that reduce dictionary is created.""" 

12 testmetric = metrics.BaseMetric('testcol') 

13 self.assertEqual(list(testmetric.reduceFuncs.keys()), []) 

14 

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') 

25 

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) 

42 

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') 

50 

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') 

83 

84 

85class TestMemory(lsst.utils.tests.MemoryTestCase): 

86 pass 

87 

88 

89def setup_module(module): 

90 lsst.utils.tests.init() 

91 

92 

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()