Coverage for tests/test_normMap.py: 32%
36 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-21 03:01 -0700
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-21 03:01 -0700
1from math import pi
2import sys
3import unittest
5import numpy as np
6from numpy.testing import assert_allclose
8import astshim as ast
9from astshim.test import MappingTestCase
12class TestNormMap(MappingTestCase):
14 def test_NormMapFrame(self):
15 """Check NormMap(Frame): output = input
16 """
17 normmap = ast.NormMap(ast.Frame(2))
18 self.assertEqual(normmap.className, "NormMap")
19 self.assertEqual(normmap.nIn, 2)
20 self.assertEqual(normmap.nOut, 2)
22 self.checkBasicSimplify(normmap)
23 self.checkCopy(normmap)
25 indata = np.array([
26 [100.0, 2000.0, 3000.0],
27 [-100.0, -1000.0, -2000.0],
28 ], dtype=float)
29 outdata = normmap.applyForward(indata)
30 assert_allclose(outdata, indata)
32 self.checkMappingPersistence(normmap, indata)
34 def testNormMapMap(self):
35 """Check that NormMap(Mapping) is an error"""
36 with self.assertRaises(TypeError):
37 ast.NormMap(ast.UnitMap(1))
39 def test_NormMapSkyFrame(self):
40 """Check NormMap(SkYFrame):
42 longitude wrapped to [0, 2 pi]
43 if pi < |latitude| < 2 pi:
44 offset longitude by pi and set latitutude = 2 pi - latitude
45 else:
46 wrap pi to range [-pi, pi]
48 This test intentionally stays a small delta away from boundaries
49 (except 0) because the expected behavior is not certain
50 and not important.
51 """
52 normmap = ast.NormMap(ast.SkyFrame())
53 self.assertEqual(normmap.className, "NormMap")
54 self.assertEqual(normmap.nIn, 2)
55 self.assertEqual(normmap.nOut, 2)
57 self.checkBasicSimplify(normmap)
59 # I'm not sure why 100 is needed; I expected ~10 (2 pi)
60 eps = 100 * sys.float_info.epsilon
62 indata = (np.array([
63 [0, 0],
64 [-eps, 0], # lon out of range
65 [2 * pi - eps, 0],
66 [2 * pi + eps, 0], # lon out of range
67 [0, -pi / 2 + eps],
68 [0, -pi / 2 - eps], # lat too small; offset lat by pi
69 [0, pi / 2 - eps],
70 [0, pi / 2 + eps], # lat too big; offset lat by pi
71 ], dtype=float)).T.copy() # applyForward can't accept a view
72 pred_outdata = np.array([
73 [0, 0],
74 [2 * pi - eps, 0],
75 [2 * pi - eps, 0],
76 [eps, 0],
77 [0, -pi / 2 + eps],
78 [pi, -pi / 2 + eps],
79 [0, pi / 2 - eps],
80 [pi, pi / 2 - eps],
81 ]).T
82 outdata = normmap.applyForward(indata)
83 assert_allclose(outdata, pred_outdata)
85 self.checkMappingPersistence(normmap, indata)
88if __name__ == "__main__": 88 ↛ 89line 88 didn't jump to line 89, because the condition on line 88 was never true
89 unittest.main()