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

import sys 

import unittest 

 

import numpy as np 

import astropy.wcs 

 

import lsst.utils.tests 

 

from pfs.datamodel.wavelengthArray import WavelengthArray 

 

display = None 

 

 

class WavelengthArrayTestCase(lsst.utils.tests.TestCase): 

def testBasics(self): 

"""Test the basic behaviour of WavelenthArray""" 

minWl = 600 

maxWl = 900 

size = 50 

 

# Creation 

wlArray = WavelengthArray(minWl, maxWl, size) 

linspace = np.linspace(minWl, maxWl, size, dtype=np.float32) 

self.assertEqual(len(wlArray), size) 

self.assertEqual(len(wlArray), len(linspace)) 

self.assertFloatsEqual(wlArray, linspace) 

 

# Iteration 

for xx, yy in zip(wlArray, linspace): 

self.assertFloatsEqual(xx, yy) 

 

# Indexing 

for ii in range(size): 

self.assertFloatsEqual(wlArray[ii], linspace[ii]) 

self.assertFloatsEqual(wlArray[-ii], linspace[-ii]) 

 

# Behaves like a numpy array 

self.assertFloatsEqual(wlArray.mean(), linspace.mean()) 

self.assertFloatsEqual(wlArray.std(), linspace.std()) 

 

def testIO(self): 

"""Test that we can round-trip a WavelengthArray""" 

size = 50 

wlArray = WavelengthArray(600, 900, size) 

header = wlArray.toFitsHeader() 

copy = WavelengthArray.fromFitsHeader(header, size) 

self.assertEqual(len(copy), size) 

self.assertFloatsEqual(copy, wlArray) 

self.assertEqual(type(copy), type(wlArray)) 

 

def testWcs(self): 

"""Test that the WavelengthArray WCS header is correct""" 

size = 50 

wlArray = WavelengthArray(600, 900, size) 

header = wlArray.toFitsHeader() 

wcs = astropy.wcs.WCS(header) 

for ii in range(size): 

self.assertFloatsAlmostEqual(wlArray[ii], wcs.pixel_to_world(ii + 1).to(astropy.units.nm).value, 

atol=1.0e-4) 

 

 

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

pass 

 

 

def setup_module(module): 

lsst.utils.tests.init() 

 

 

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

setup_module(sys.modules["__main__"]) 

from argparse import ArgumentParser 

parser = ArgumentParser(__file__) 

parser.add_argument("--display", help="Display backend") 

args, argv = parser.parse_known_args() 

display = args.display 

unittest.main(failfast=True, argv=[__file__] + argv)