Coverage for tests/testPhoSimVariability.py : 51%

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
1from builtins import zip
2import os
3import unittest
4import tempfile
5import lsst.utils.tests
6import numpy as np
7from lsst.sims.utils.CodeUtilities import sims_clean_up
8from lsst.sims.utils import ModifiedJulianDate
9from lsst.sims.catalogs.definitions import InstanceCatalog
10from lsst.sims.catUtils.utils import (testStarsDBObj, testGalaxyDiskDBObj,
11 testGalaxyBulgeDBObj, testGalaxyAgnDBObj)
12from lsst.sims.catUtils.exampleCatalogDefinitions import (PhoSimCatalogSersic2D, PhoSimCatalogPoint,
13 PhoSimCatalogZPoint)
14from lsst.sims.catUtils.utils import makePhoSimTestDB
15from lsst.sims.catUtils.mixins import VariabilityStars, VariabilityGalaxies
16from lsst.sims.catUtils.mixins import VariabilityAGN
17from lsst.sims.catUtils.mixins import ExtraGalacticVariabilityModels
18from lsst.sims.catUtils.utils import TestVariabilityMixin
19from lsst.sims.catUtils.mixins import AstrometryStars, AstrometryGalaxies
21ROOT = os.path.abspath(os.path.dirname(__file__))
24def setup_module(module):
25 lsst.utils.tests.init()
28class PhoSimPointVariable(PhoSimCatalogPoint, VariabilityStars, TestVariabilityMixin):
29 catalog_type = __file__ + 'pho_sim_point_variable'
30 pass
33class PhoSimZPointVariable(PhoSimCatalogZPoint, VariabilityAGN, TestVariabilityMixin):
34 catalog_type = __file__ + 'pho_sim_z_point_variable'
35 pass
38class AgnControlCatalog(InstanceCatalog, VariabilityGalaxies, TestVariabilityMixin, AstrometryGalaxies):
39 catalog_type = __file__ + "agn_control_catalog"
40 column_outputs = ['magNorm', 'delta_rAgn']
43class BulgeControlCatalog(InstanceCatalog, AstrometryGalaxies):
44 catalog_type = __file__ + "bulge_control_catalog"
45 column_outputs = ['magNorm']
48class DiskControlCatalog(InstanceCatalog, AstrometryGalaxies):
49 catalog_type = __file__ + "disk_control_catalog"
50 column_outputs = ['magNorm']
53class StarControlCatalog(InstanceCatalog, AstrometryStars, VariabilityStars, TestVariabilityMixin):
54 catalog_type = __file__ + "star_control_catalog"
55 column_outputs = ['magNorm', 'delta_lsst_r']
58class PhoSimVariabilityTest(unittest.TestCase):
59 """
60 This class will test that variability gets correctly propagated into
61 PhoSim catalogs
62 """
64 longMessage = True
66 @classmethod
67 def setUpClass(cls):
68 cls.dbName = tempfile.mktemp(dir=ROOT, prefix='PhoSimVariabilityDatabase-', suffix='.db')
69 cls.obs_metadata = makePhoSimTestDB(size=10, filename=cls.dbName)
70 cls.obs_metadata.mjd = ModifiedJulianDate(TAI=60000.0)
72 cls.bulgeDB = testGalaxyBulgeDBObj(driver='sqlite', database=cls.dbName)
73 cls.diskDB = testGalaxyDiskDBObj(driver='sqlite', database=cls.dbName)
74 cls.agnDB = testGalaxyAgnDBObj(driver='sqlite', database=cls.dbName)
75 cls.starDB = testStarsDBObj(driver='sqlite', database=cls.dbName)
77 @classmethod
78 def tearDownClass(cls):
79 sims_clean_up()
80 del cls.bulgeDB
81 del cls.diskDB
82 del cls.agnDB
83 del cls.starDB
84 if os.path.exists(cls.dbName):
85 os.unlink(cls.dbName)
87 def testAgn(self):
88 """
89 Test that variability is correctly added to PhoSim Agn catalogs
90 by outputting both a variable PhoSim catalog and a control catalog
91 and making sure that the magNorm column in the PhoSim catalog
92 is equal to the sum of the magNorm column in the control plus
93 the detla_mag column from Variability.
94 """
95 baseline = AgnControlCatalog(self.agnDB, obs_metadata=self.obs_metadata)
96 test = PhoSimZPointVariable(self.agnDB, obs_metadata=self.obs_metadata)
98 for bb, tt in zip(baseline.iter_catalog(), test.iter_catalog()):
99 msg = 'baseline mag %.6e; delta %.6e' % (bb[0], bb[1])
100 self.assertAlmostEqual(bb[0] + bb[1], tt[4], 10, msg=msg)
101 self.assertGreater(np.abs(bb[1]), 0.0)
103 def testStars(self):
104 """
105 Test that variability is correctly added to PhoSim star catalogs
106 by outputting both a variable PhoSim catalog and a control catalog
107 and making sure that the magNorm column in the PhoSim catalog
108 is equal to the sum of the magNorm column in the control plus
109 the detla_mag column from Variability.
110 """
111 baseline = StarControlCatalog(self.starDB, obs_metadata=self.obs_metadata)
112 test = PhoSimPointVariable(self.starDB, obs_metadata=self.obs_metadata)
114 for bb, tt in zip(baseline.iter_catalog(), test.iter_catalog()):
115 msg = 'baseline mag %.6e; delta %.6e' % (bb[0], bb[1])
116 self.assertAlmostEqual(bb[0] + bb[1], tt[4], 10, msg=msg)
117 self.assertGreater(np.abs(bb[1]), 0.0)
119 def testBulges(self):
120 """
121 Make sure that the magNorm output to PhoSim catalogs that lack
122 variability is the same as the column 'magNorm' taken from the database
123 """
124 baseline = BulgeControlCatalog(self.bulgeDB, obs_metadata=self.obs_metadata)
125 test = PhoSimCatalogSersic2D(self.bulgeDB, obs_metadata=self.obs_metadata)
127 for bb, tt in zip(baseline.iter_catalog(), test.iter_catalog()):
128 self.assertAlmostEqual(bb[0], tt[4], 10)
130 def testDisks(self):
131 baseline = DiskControlCatalog(self.diskDB, obs_metadata=self.obs_metadata)
132 test = PhoSimCatalogSersic2D(self.diskDB, obs_metadata=self.obs_metadata)
134 for bb, tt in zip(baseline.iter_catalog(), test.iter_catalog()):
135 self.assertAlmostEqual(bb[0], tt[4], 10)
138class MemoryTestClass(lsst.utils.tests.MemoryTestCase):
139 pass
141if __name__ == "__main__": 141 ↛ 142line 141 didn't jump to line 142, because the condition on line 141 was never true
142 lsst.utils.tests.init()
143 unittest.main()