-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathtest_tree_rings.py
More file actions
93 lines (80 loc) · 3.84 KB
/
Copy pathtest_tree_rings.py
File metadata and controls
93 lines (80 loc) · 3.84 KB
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
"""
Unit tests for tree rings code. Just tests that the tree ring data was found and could be read.
"""
import os
from pathlib import Path
import unittest
import numpy as np
import imsim
DATA_DIR = Path(__file__).parent / 'data'
class TreeRingsTestCase(unittest.TestCase):
"""TestCase class for the tree rings code."""
def setUp(self):
self.detnames = ['R22_S11', 'R34_S22']
self.instcat_file = str(DATA_DIR / 'tiny_instcat.txt')
self.rtest = 5280.0 # Just a value to test the radial function at
self.rvalues = [.0030205, -.0034135] # Expected results
self.centers = [(-3026.3, -3001.0), (3095.5, -2971.3)] # Input center values
self.tr_filename = 'tree_ring_parameters_19mar18.txt'
def test_read_tree_rings(self):
"""Check reading of tree_ring_parameters file"""
tr_filename = os.path.join(imsim.data_dir, 'tree_ring_data',
self.tr_filename)
tree_rings = imsim.TreeRings(tr_filename, only_dets=self.detnames,
defer_load=False)
for i, detname in enumerate(self.detnames):
center = tree_rings.get_center(detname)
print('center = ', center)
print('cf. ', self.centers)
shifted_center = (center.x - 2048.5,
center.y - 2048.5)
self.assertAlmostEqual(shifted_center, self.centers[i], 1)
r_value_test = tree_rings.get_func(detname)(self.rtest)
self.assertAlmostEqual(r_value_test, self.rvalues[i], 6)
# Can also just give the file name, and imSim will find it in the data dir.
tree_rings2 = imsim.TreeRings(self.tr_filename,
only_dets=self.detnames,
defer_load=False)
for i, detname in enumerate(self.detnames):
center = tree_rings2.get_center(detname)
print('center = ', center)
print('cf. ', self.centers)
shifted_center = (center.x - 2048.5,
center.y - 2048.5)
self.assertAlmostEqual(shifted_center, self.centers[i], 1)
r_value_test = tree_rings2.get_func(detname)(self.rtest)
self.assertAlmostEqual(r_value_test, self.rvalues[i], 6)
# If file not found, OSError
np.testing.assert_raises(OSError, imsim.TreeRings, 'invalid.txt')
def test_deferred_read(self):
"""Test deferred reading of tree ring data."""
tree_rings = imsim.TreeRings(self.tr_filename, defer_load=True)
self.assertEqual(len(tree_rings.info), 0)
det_name = "R22_S00"
_ = tree_rings.get_center(det_name)
self.assertEqual(len(tree_rings.info), 1)
_ = tree_rings.get_func(det_name)
self.assertEqual(len(tree_rings.info), 1)
self.assertIn(det_name, tree_rings.info)
det_name = "R22_S11"
_ = tree_rings.get_center(det_name)
self.assertEqual(len(tree_rings.info), 2)
_ = tree_rings.get_func(det_name)
self.assertEqual(len(tree_rings.info), 2)
self.assertIn(det_name, tree_rings.info)
def test_unhandled_det_names(self):
"""Test that unrecognized detectors in only_dets are handled
without raising errors."""
# There is no detector named R44_S12 in LSSTCam.
only_dets = ['R22_S12', 'R44_S12']
tree_rings = imsim.TreeRings(self.tr_filename, only_dets=only_dets)
for det_name in ['R22_S12']:
_ = tree_rings.get_center(det_name)
_ = tree_rings.get_func(det_name)
for det_name in ['R44_S12']:
with np.testing.assert_warns(UserWarning):
_ = tree_rings.get_center(det_name)
with np.testing.assert_warns(UserWarning):
_ = tree_rings.get_func(det_name)
if __name__ == '__main__':
unittest.main()