Coverage for tests/test_seeingData.py : 27%

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
1import os
2import unittest
3import sqlite3
4from astropy.time import Time, TimeDelta
5from lsst.utils import getPackageDir
6import lsst.utils.tests
7from lsst.utils.tests import getTempFilePath
8from lsst.sims.seeingModel import SeeingData
10# Unit test here uses oldest/original opsim seeing database, "Seeing.db".
11# Could be updated to use a new DB, but that would require changing some of these hard-coded numbers.
13class TestSeeingData(unittest.TestCase):
15 def setUp(self):
16 self.time = Time('2020-01-01', format='isot', scale='tai')
17 self.seeing_db = os.path.join(getPackageDir('sims_seeingModel'), 'data', 'seeing.db')
19 def test_basic_information_after_creation(self):
20 seeingData = SeeingData(self.time, seeing_db=self.seeing_db)
21 self.assertEqual(seeingData.start_time, self.time)
22 self.assertEqual(seeingData.seeing_db, self.seeing_db)
23 # And check sets seeing_db appropriately if not provided.
24 seeingData = SeeingData(self.time, seeing_db=None)
25 self.assertIsNotNone(seeingData.seeing_db)
27 def test_information_after_read(self):
28 seeingData = SeeingData(self.time, seeing_db=self.seeing_db)
29 seeingData.read_data()
30 self.assertTrue(len(seeingData.seeing_values) > 0)
31 self.assertTrue(len(seeingData.seeing_dates) > 0)
33 def test_fwhm500_at_time(self):
34 seeingData = SeeingData(self.time, self.seeing_db, offset_year=0)
35 seeingData.read_data()
36 dt = TimeDelta(75400, format='sec')
37 self.assertEqual(seeingData(self.time + dt), 0.859431982040405)
38 dt = TimeDelta(76700, format='sec')
39 self.assertEqual(seeingData(self.time + dt), 0.646009027957916)
40 dt = TimeDelta(63190400, format='sec')
41 self.assertEqual(seeingData(self.time + dt), 0.64860999584198)
42 dt = TimeDelta(189424900, format='sec')
43 self.assertEqual(seeingData(self.time + dt), 0.699440002441406)
44 # Test time selection from seeing data.
45 dt = TimeDelta(800, format='sec')
46 fwhm500 = seeingData(self.time + dt)
47 # Hack seeing data to remove first date, thus db does not start at zero.
48 seeingData.seeing_dates = seeingData.seeing_dates[:-1]
49 seeingData.seeing_values = seeingData.seeing_values[:-1]
50 seeingData.time_range = seeingData.seeing_dates[-1] - seeingData.seeing_dates[0]
51 seeingData.min_time = seeingData.seeing_dates[0]
52 self.assertEqual(fwhm500, seeingData(self.time + dt))
54 def test_using_different_start_month(self):
55 t2 = Time('2020-05-24', format='isot', scale='tai')
56 seeingData = SeeingData(t2, self.seeing_db, offset_year=0)
57 self.assertEqual(seeingData.start_time, self.time)
58 seeingData.read_data()
59 dt = TimeDelta(75400, format='sec')
60 self.assertEqual(seeingData(t2 + dt), 0.437314003705978)
61 dt = TimeDelta(63190400, format='sec')
62 self.assertEqual(seeingData(t2 + dt), 0.453994989395142)
64 def test_alternate_db(self):
65 # Create temporary data file, use it as the seeing_db.
66 with getTempFilePath('.alt_seeing.db') as tmpdb:
67 seeing_table = []
68 seeing_table.append("seeingId INTEGER PRIMARY KEY")
69 seeing_table.append("s_date INTEGER")
70 seeing_table.append("seeing DOUBLE")
71 with sqlite3.connect(tmpdb) as conn:
72 cur = conn.cursor()
73 cur.execute("DROP TABLE IF EXISTS Seeing")
74 cur.execute("CREATE TABLE Seeing({})".format(",".join(seeing_table)))
75 cur.executemany("INSERT INTO Seeing VALUES(?, ?, ?)", [(1, 9997, 0.5), (2, 10342, 0.3)])
76 cur.close()
77 seeingData = SeeingData(self.time, seeing_db=tmpdb)
78 seeingData.read_data()
79 self.assertEqual(seeingData.seeing_values.size, 2)
80 self.assertEqual(seeingData.seeing_values[1], 0.3)
83class TestMemory(lsst.utils.tests.MemoryTestCase):
84 pass
86def setup_module(module):
87 lsst.utils.tests.init()
89if __name__ == "__main__": 89 ↛ 90line 89 didn't jump to line 90, because the condition on line 89 was never true
90 lsst.utils.tests.init()
91 unittest.main()