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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

import matplotlib 

matplotlib.use("Agg") 

import unittest 

import lsst.sims.maf.metrics as metrics 

import lsst.utils.tests 

 

 

class TestBaseMetric(unittest.TestCase): 

 

def testReduceDict(self): 

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

testmetric = metrics.BaseMetric('testcol') 

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

 

def testMetricName(self): 

"""Test that metric name is set appropriately automatically and explicitly""" 

# Test automatic setting of metric name 

testmetric = metrics.BaseMetric('testcol') 

self.assertEqual(testmetric.name, 'Base testcol') 

testmetric = metrics.BaseMetric(['testcol1', 'testcol2']) 

self.assertEqual(testmetric.name, 'Base testcol1, testcol2') 

# Test explicit setting of metric name 

testmetric = metrics.BaseMetric('testcol', metricName='Test') 

self.assertEqual(testmetric.name, 'Test') 

 

def testColRegistry(self): 

"""Test column registry adds to colRegistry as expected""" 

cols = 'onecolumn' 

colset = set() 

colset.add(cols) 

testmetric = metrics.BaseMetric(cols) 

# Class registry should have dictionary with values = set of columns for metric class 

self.assertEqual(testmetric.colRegistry.colSet, colset) 

cols = ['onecolumn', 'twocolumn'] 

colset.add('twocolumn') 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.colRegistry.colSet, colset) 

# Test with additional (different) metric 

cols = 'twocolumn' 

testmetric2 = metrics.MeanMetric(cols) 

self.assertEqual(testmetric.colRegistry.colSet, colset) 

 

def testMetricDtype(self): 

"""Test that base metric data value type set appropriately""" 

cols = 'onecolumn' 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.metricDtype, 'float') 

testmetric = metrics.BaseMetric(cols, metricDtype='object') 

self.assertEqual(testmetric.metricDtype, 'object') 

 

def testUnits(self): 

"""Test unit setting (including units set by utils.getColInfo)""" 

cols = 'onecolumn' 

# Test for column not in colInfo, units not set by hand. 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.units, '') 

# Test for column not in colInfo, units set by hand. 

testmetric = metrics.BaseMetric(cols, units='Test') 

self.assertEqual(testmetric.units, 'Test') 

# Test for column in colInfo (looking up units in colInfo) 

cols = 'finSeeing' 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.units, 'arcsec') 

# Test for column in colInfo but units overriden 

testmetric = metrics.BaseMetric(cols, units='Test') 

self.assertEqual(testmetric.units, 'Test') 

# Test for multiple columns not in colInfo 

cols = ['onecol', 'twocol'] 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.units, '') 

# Test for multiple columns in colInfo 

cols = ['finSeeing', 'filtSkyBrightness'] 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.units, 'arcsec mag/sq arcsec') 

# Test for multiple columns, only one in colInfo 

cols = ['finSeeing', 'twocol'] 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.units, 'arcsec ') 

# Test for multiple columns both in colInfo but repeated 

cols = ['finSeeing', 'finSeeing'] 

testmetric = metrics.BaseMetric(cols) 

self.assertEqual(testmetric.units, 'arcsec arcsec') 

 

 

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

pass 

 

 

def setup_module(module): 

lsst.utils.tests.init() 

 

 

93 ↛ 94line 93 didn't jump to line 94, because the condition on line 93 was never trueif __name__ == "__main__": 

lsst.utils.tests.init() 

unittest.main()