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

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

from builtins import zip 

from builtins import str 

import matplotlib 

matplotlib.use("Agg") 

import numpy as np 

import unittest 

import warnings 

import os 

import lsst.sims.maf.slicers as slicers 

import lsst.sims.maf.maps as maps 

import lsst.utils.tests 

 

 

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

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

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

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

datavalues += min 

if random > 0: 

rng = np.random.RandomState(random) 

randorder = rng.rand(size) 

randind = np.argsort(randorder) 

datavalues = datavalues[randind] 

ids = np.arange(size) 

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

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

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

return datavalues 

 

 

def makeFieldData(seed): 

rng = np.random.RandomState(seed) 

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

types = [int, float, float] 

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

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

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

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

return fieldData 

 

 

class TestMaps(unittest.TestCase): 

 

def testDustMap(self): 

 

mapPath = os.environ['SIMS_MAPS_DIR'] 

 

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

 

data = makeDataValues(random=981) 

dustmap = maps.DustMap() 

 

slicer1 = slicers.HealpixSlicer(latLonDeg=False) 

slicer1.setupSlicer(data) 

result1 = dustmap.run(slicer1.slicePoints) 

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

 

fieldData = makeFieldData(2234) 

 

slicer2 = slicers.OpsimFieldSlicer(latLonDeg=False) 

slicer2.setupSlicer(data, fieldData) 

result2 = dustmap.run(slicer2.slicePoints) 

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

 

# Check interpolation works 

dustmap = maps.DustMap(interp=True) 

result3 = dustmap.run(slicer2.slicePoints) 

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

 

# Check warning gets raised 

dustmap = maps.DustMap(nside=4) 

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

warnings.simplefilter("always") 

dustmap.run(slicer1.slicePoints) 

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

else: 

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

 

def testStarMap(self): 

mapPath = os.environ['SIMS_MAPS_DIR'] 

 

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

data = makeDataValues(random=887) 

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

nsides = [32, 64, 128] 

for nside in nsides: 

starmap = maps.StellarDensityMap() 

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

slicer1.setupSlicer(data) 

result1 = starmap.run(slicer1.slicePoints) 

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

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

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

 

fieldData = makeFieldData(22) 

 

slicer2 = slicers.OpsimFieldSlicer(latLonDeg=False) 

slicer2.setupSlicer(data, fieldData) 

result2 = starmap.run(slicer2.slicePoints) 

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

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

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

 

else: 

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

 

 

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

pass 

 

 

def setup_module(module): 

lsst.utils.tests.init() 

 

 

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

lsst.utils.tests.init() 

unittest.main()