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

from math import pi 

import sys 

import unittest 

 

import numpy as np 

from numpy.testing import assert_allclose 

 

import astshim as ast 

from astshim.test import MappingTestCase 

 

 

class TestNormMap(MappingTestCase): 

 

def test_NormMapFrame(self): 

"""Check NormMap(Frame): output = input 

""" 

normmap = ast.NormMap(ast.Frame(2)) 

self.assertEqual(normmap.className, "NormMap") 

self.assertEqual(normmap.nIn, 2) 

self.assertEqual(normmap.nOut, 2) 

 

self.checkBasicSimplify(normmap) 

self.checkCopy(normmap) 

 

indata = np.array([ 

[100.0, 2000.0, 3000.0], 

[-100.0, -1000.0, -2000.0], 

], dtype=float) 

outdata = normmap.applyForward(indata) 

assert_allclose(outdata, indata) 

 

self.checkMappingPersistence(normmap, indata) 

 

def testNormMapMap(self): 

"""Check that NormMap(Mapping) is an error""" 

with self.assertRaises(TypeError): 

ast.NormMap(ast.UnitMap(1)) 

 

def test_NormMapSkyFrame(self): 

"""Check NormMap(SkYFrame): 

 

longitude wrapped to [0, 2 pi] 

if pi < |latitude| < 2 pi: 

offset longitude by pi and set latitutude = 2 pi - latitude 

else: 

wrap pi to range [-pi, pi] 

 

This test intentionally stays a small delta away from boundaries 

(except 0) because the expected behavior is not certain 

and not important. 

""" 

normmap = ast.NormMap(ast.SkyFrame()) 

self.assertEqual(normmap.className, "NormMap") 

self.assertEqual(normmap.nIn, 2) 

self.assertEqual(normmap.nOut, 2) 

 

self.checkBasicSimplify(normmap) 

 

# I'm not sure why 100 is needed; I expected ~10 (2 pi) 

eps = 100 * sys.float_info.epsilon 

 

indata = (np.array([ 

[0, 0], 

[-eps, 0], # lon out of range 

[2 * pi - eps, 0], 

[2 * pi + eps, 0], # lon out of range 

[0, -pi / 2 + eps], 

[0, -pi / 2 - eps], # lat too small; offset lat by pi 

[0, pi / 2 - eps], 

[0, pi / 2 + eps], # lat too big; offset lat by pi 

], dtype=float)).T.copy() # applyForward can't accept a view 

pred_outdata = np.array([ 

[0, 0], 

[2 * pi - eps, 0], 

[2 * pi - eps, 0], 

[eps, 0], 

[0, -pi / 2 + eps], 

[pi, -pi / 2 + eps], 

[0, pi / 2 - eps], 

[pi, pi / 2 - eps], 

]).T 

outdata = normmap.applyForward(indata) 

assert_allclose(outdata, pred_outdata) 

 

self.checkMappingPersistence(normmap, indata) 

 

 

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

unittest.main()