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

1from builtins import zip 

2from builtins import str 

3import matplotlib 

4matplotlib.use("Agg") 

5import numpy as np 

6import unittest 

7import warnings 

8import os 

9import lsst.sims.maf.slicers as slicers 

10import lsst.sims.maf.maps as maps 

11import lsst.utils.tests 

12 

13 

14def makeDataValues(size=100, min=0., max=1., random=-1): 

15 """Generate a simple array of numbers, evenly arranged between min/max, but (optional) random order.""" 

16 datavalues = np.arange(0, size, dtype='float') 

17 datavalues *= (float(max) - float(min)) / (datavalues.max() - datavalues.min()) 

18 datavalues += min 

19 if random > 0: 

20 rng = np.random.RandomState(random) 

21 randorder = rng.rand(size) 

22 randind = np.argsort(randorder) 

23 datavalues = datavalues[randind] 

24 ids = np.arange(size) 

25 datavalues = np.array(list(zip(datavalues, datavalues, ids)), 

26 dtype=[('fieldRA', 'float'), 

27 ('fieldDec', 'float'), ('fieldId', 'int')]) 

28 return datavalues 

29 

30 

31def makeFieldData(seed): 

32 rng = np.random.RandomState(seed) 

33 names = ['fieldId', 'fieldRA', 'fieldDec'] 

34 types = [int, float, float] 

35 fieldData = np.zeros(100, dtype=list(zip(names, types))) 

36 fieldData['fieldId'] = np.arange(100) 

37 fieldData['fieldRA'] = rng.rand(100) 

38 fieldData['fieldDec'] = rng.rand(100) 

39 return fieldData 

40 

41 

42class TestMaps(unittest.TestCase): 

43 

44 def testDustMap(self): 

45 

46 mapPath = os.environ['SIMS_MAPS_DIR'] 

47 

48 if os.path.isfile(os.path.join(mapPath, 'DustMaps/dust_nside_128.npz')): 

49 

50 data = makeDataValues(random=981) 

51 dustmap = maps.DustMap() 

52 

53 slicer1 = slicers.HealpixSlicer(latLonDeg=False) 

54 slicer1.setupSlicer(data) 

55 result1 = dustmap.run(slicer1.slicePoints) 

56 assert('ebv' in list(result1.keys())) 

57 

58 fieldData = makeFieldData(2234) 

59 

60 slicer2 = slicers.OpsimFieldSlicer(latLonDeg=False) 

61 slicer2.setupSlicer(data, fieldData) 

62 result2 = dustmap.run(slicer2.slicePoints) 

63 assert('ebv' in list(result2.keys())) 

64 

65 # Check interpolation works 

66 dustmap = maps.DustMap(interp=True) 

67 result3 = dustmap.run(slicer2.slicePoints) 

68 assert('ebv' in list(result3.keys())) 

69 

70 # Check warning gets raised 

71 dustmap = maps.DustMap(nside=4) 

72 with warnings.catch_warnings(record=True) as w: 

73 warnings.simplefilter("always") 

74 dustmap.run(slicer1.slicePoints) 

75 self.assertIn("nside", str(w[-1].message)) 

76 else: 

77 warnings.warn('Did not find dustmaps, not running testMaps.py') 

78 

79 def testStarMap(self): 

80 mapPath = os.environ['SIMS_MAPS_DIR'] 

81 

82 if os.path.isfile(os.path.join(mapPath, 'StarMaps/starDensity_r_nside_64.npz')): 

83 data = makeDataValues(random=887) 

84 # check that it works if nside does not match map nside of 64 

85 nsides = [32, 64, 128] 

86 for nside in nsides: 

87 starmap = maps.StellarDensityMap() 

88 slicer1 = slicers.HealpixSlicer(nside=nside, latLonDeg=False) 

89 slicer1.setupSlicer(data) 

90 result1 = starmap.run(slicer1.slicePoints) 

91 assert('starMapBins_r' in list(result1.keys())) 

92 assert('starLumFunc_r' in list(result1.keys())) 

93 assert(np.max(result1['starLumFunc_r'] > 0)) 

94 

95 fieldData = makeFieldData(22) 

96 

97 slicer2 = slicers.OpsimFieldSlicer(latLonDeg=False) 

98 slicer2.setupSlicer(data, fieldData) 

99 result2 = starmap.run(slicer2.slicePoints) 

100 assert('starMapBins_r' in list(result2.keys())) 

101 assert('starLumFunc_r' in list(result2.keys())) 

102 assert(np.max(result2['starLumFunc_r'] > 0)) 

103 

104 else: 

105 warnings.warn('Did not find stellar density map, skipping test.') 

106 

107 

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

109 pass 

110 

111 

112def setup_module(module): 

113 lsst.utils.tests.init() 

114 

115 

116if __name__ == "__main__": 116 ↛ 117line 116 didn't jump to line 117, because the condition on line 116 was never true

117 lsst.utils.tests.init() 

118 unittest.main()