Coverage for tests/test_composite.py : 37%

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
# This file is part of obs_test. # # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (http://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. #
"""Make a DecoratedImageU that is a ramp.""" rampArr = makeRampImage(bbox=bbox, start=start, imageClass=afwImage.ImageU).getArray() decoratedImage = afwImage.DecoratedImageU(bbox) imarr = decoratedImage.getImage().getArray() imarr[:] = rampArr md = decoratedImage.getMetadata() for (key, val) in metadataDict.items(): md.set(key, val) return decoratedImage
"""A test case for composite object I/0.""" self.testDir = tempfile.mkdtemp(dir=os.path.join(ROOT, 'tests'), prefix=type(self).__name__+'-') self.input = os.path.join(ROOT, 'data', 'input') self.output = os.path.join(self.testDir, 'tests', 'outputs') self.compositeOutput = os.path.join(self.output, 'composite') self.nonCompositeOutput = os.path.join(self.output, 'noncomposite') self.dataId = {'visit': 1, 'filter': 'g'}
if os.path.exists(self.testDir): shutil.rmtree(self.testDir)
"""Verify get of individual components vs a composite. """ butler = dafPersist.Butler( inputs=dafPersist.RepositoryArgs(root=self.input, mapper='lsst.obs.test.testMapper.TestMapper'), ) rawAndFlat = butler.get('rawAndFlat', dataId=self.dataId) raw = butler.get('raw', dataId=self.dataId) flat = butler.get('flat', dataId=self.dataId)
# Exposures (which is how these are retrieved) cannot be directly compared, # including associated objects and metadata, so pickle them and cmpare the pickles self.assertEqual(pickle.dumps(raw), pickle.dumps(rawAndFlat.raw)) self.assertEqual(pickle.dumps(flat), pickle.dumps(rawAndFlat.flat))
"""Compare put of individual components vs a composite.
Notes ----- Raw and calibration frames do not round trip (they are saved as DecoratedImageU and read in as ExposureU), so create the raw and flat manually. """ outputs = (dafPersist.RepositoryArgs(root=self.compositeOutput, tags='composite'), dafPersist.RepositoryArgs(root=self.nonCompositeOutput, tags='noncomposite')) butler = dafPersist.Butler( inputs=dafPersist.RepositoryArgs(root=self.input, mapper='lsst.obs.test.testMapper.TestMapper'), outputs=outputs) bbox = afwGeom.Box2I(afwGeom.Point2I(0, 0), afwGeom.Point2I(10, 10)) raw = makeRampDecoratedImage(bbox=bbox, start=100, raw1=5, raw2="hello") flat = makeRampDecoratedImage(bbox=bbox, start=-55, flat1="me", flat2=47)
# a hack-ish way of creating a rawAndFlat object; read in the data, then replace it with our own rawAndFlat = butler.get('rawAndFlat', dataId=self.dataId) rawAndFlat.raw = raw rawAndFlat.flat = flat
butler.put(rawAndFlat, 'rawAndFlat', dataId=self.dataId, tags='composite') butler.put(raw, 'raw', dataId=self.dataId, tags='noncomposite') butler.put(raw, 'flat', dataId=self.dataId, tags='noncomposite')
self.assertTrue(filecmp.cmp(os.path.join(self.compositeOutput, 'raw', 'raw_v1_fg.fits.gz'), os.path.join(self.nonCompositeOutput, 'raw', 'raw_v1_fg.fits.gz')))
self.assertTrue(filecmp.cmp(os.path.join(self.compositeOutput, 'flat', 'flat_fg.fits.gz'), os.path.join(self.nonCompositeOutput, 'flat', 'flat_fg.fits.gz')))
lsst.utils.tests.init()
lsst.utils.tests.init() unittest.main() |