Skip to content

Commit

Permalink
Fix id check so that all components can use readComponent.
Browse files Browse the repository at this point in the history
Note that the TransmissionCurve is special in some way and
does not work with the current implementation.
  • Loading branch information
erykoff committed Jan 15, 2021
1 parent d9c33f4 commit 9a35beb
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/image/ExposureFitsReader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ class ExposureFitsReader::ArchiveReader {
return nullptr;
}

if (_extraIds.count(c) > 0) {
if (_genericIds.count(c) > 0) {
int archiveId = _genericIds.at(c);
return _archive.get<T>(archiveId);
} else {
Expand Down
19 changes: 18 additions & 1 deletion tests/test_readers.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from lsst.afw.image import (Image, Mask, Exposure, LOCAL, PARENT, MaskPixel, VariancePixel,
ImageFitsReader, MaskFitsReader, MaskedImageFitsReader, ExposureFitsReader,
Filter, FilterLabel, PhotoCalib, ApCorrMap, VisitInfo, TransmissionCurve,
CoaddInputs)
CoaddInputs, ExposureInfo)
from lsst.afw.image.utils import defineFilter
from lsst.afw.detection import GaussianPsf
from lsst.afw.cameraGeom.testUtils import DetectorWrapper
Expand Down Expand Up @@ -182,18 +182,35 @@ def checkExposureFitsReader(self, exposureIn, fileName, dtypesOut):
self.assertEqual(exposureIn.getMetadata().toDict(), reader.readMetadata().toDict())
self.assertWcsAlmostEqualOverBBox(exposureIn.getWcs(), reader.readWcs(), self.bbox,
maxDiffPix=0, maxDiffSky=0*degrees)
self.assertWcsAlmostEqualOverBBox(exposureIn.getWcs(),
reader.readComponent(ExposureInfo.KEY_WCS),
self.bbox,
maxDiffPix=0, maxDiffSky=0*degrees)
self.assertEqual(exposureIn.getFilter(), reader.readFilter())
self.assertEqual(exposureIn.getFilterLabel(), reader.readFilterLabel())
self.assertEqual(exposureIn.getFilterLabel(),
reader.readComponent(ExposureInfo.KEY_FILTER))
self.assertEqual(exposureIn.getPhotoCalib(), reader.readPhotoCalib())
self.assertEqual(exposureIn.getPhotoCalib(),
reader.readComponent(ExposureInfo.KEY_PHOTO_CALIB))
self.assertImagesEqual(exposureIn.getPsf().computeImage(), reader.readPsf().computeImage())
self.assertImagesEqual(exposureIn.getPsf().computeImage(),
reader.readComponent('PSF').computeImage())
self.assertEqual(exposureIn.getInfo().getValidPolygon(), reader.readValidPolygon())
self.assertEqual(exposureIn.getInfo().getValidPolygon(),
reader.readComponent(ExposureInfo.KEY_VALID_POLYGON))
self.assertCountEqual(exposureIn.getInfo().getApCorrMap(), reader.readApCorrMap())
self.assertCountEqual(exposureIn.getInfo().getApCorrMap(),
reader.readComponent(ExposureInfo.KEY_AP_CORR_MAP))
self.assertEqual(exposureIn.getInfo().getVisitInfo().getExposureTime(),
reader.readVisitInfo().getExposureTime())
point = Point2D(2.3, 3.1)
wavelengths = np.linspace(4000, 5000, 5)
self.assertFloatsEqual(exposureIn.getInfo().getTransmissionCurve().sampleAt(point, wavelengths),
reader.readTransmissionCurve().sampleAt(point, wavelengths))
# Note: readComponent(ExposureInfo.KEY_TRANSMISSION_CURVE) returns a generic Storable
# rather than a TransmissionCurve object.

# Because we persisted the same instances, we should get back the same
# instances for *archive* components, and hence equality comparisons
# should work even if it just amounts to C++ pointer equality.
Expand Down

0 comments on commit 9a35beb

Please sign in to comment.