LSST Applications g02d81e74bb+86cf3d8bc9,g180d380827+7a4e862ed4,g2079a07aa2+86d27d4dc4,g2305ad1205+e1ca1c66fa,g29320951ab+012e1474a1,g295015adf3+341ea1ce94,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+c429d67c83,g48712c4677+f88676dd22,g487adcacf7+27e1e21933,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+b41db86c35,g5a732f18d5+53520f316c,g64a986408d+86cf3d8bc9,g858d7b2824+86cf3d8bc9,g8a8a8dda67+585e252eca,g99cad8db69+84912a7fdc,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+a2b54eae19,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+6681f309db,gc120e1dc64+f0fcc2f6d8,gc28159a63d+0e5473021a,gcf0d15dbbd+c429d67c83,gdaeeff99f8+f9a426f77a,ge6526c86ff+0433e6603d,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+86cf3d8bc9,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Friends | List of all members
lsst::afw::image::MaskedImageFitsReader Class Referencefinal

A FITS reader class for MaskedImages and their components. More...

#include <MaskedImageFitsReader.h>

Public Member Functions

 MaskedImageFitsReader (std::string const &fileName, int hdu=fits::DEFAULT_HDU)
 Construct a FITS reader object.
 
 MaskedImageFitsReader (fits::MemFileManager &manager, int hdu=fits::DEFAULT_HDU)
 Construct a FITS reader object.
 
 MaskedImageFitsReader (fits::Fits *fitsFile)
 Construct a FITS reader object.
 
 MaskedImageFitsReader (MaskedImageFitsReader const &)=delete
 
 MaskedImageFitsReader (MaskedImageFitsReader &&)=delete
 
MaskedImageFitsReaderoperator= (MaskedImageFitsReader const &)=delete
 
MaskedImageFitsReaderoperator= (MaskedImageFitsReader &&)=delete
 
 ~MaskedImageFitsReader () noexcept
 
lsst::geom::Box2I readBBox (ImageOrigin origin=PARENT)
 Read the bounding box of the on-disk image.
 
lsst::geom::Point2I readXY0 (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT)
 Read the image origin from the on-disk image or a subimage thereof.
 
template<typename MaskPixelT >
Mask< MaskPixelT > readMask (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool conformMasks=false, bool allowUnsafe=false)
 Read the mask plane.
 
template<typename MaskPixelT >
ndarray::Array< MaskPixelT, 2, 2 > readMaskArray (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool allowUnsafe=false)
 Read the mask plane.
 
template<typename ImagePixelT , typename MaskPixelT = MaskPixel, typename VariancePixelT = VariancePixel>
MaskedImage< ImagePixelT, MaskPixelT, VariancePixelT > read (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool conformMasks=false, bool needAllHdus=false, bool allowUnsafe=false)
 Read the full MaskedImage.
 
std::string getFileName () const
 Return the name of the file this reader targets.
 
std::string readImageDType () const
 Read a string describing the pixel type of the on-disk image plane.
 
std::string readMaskDType () const
 Read a string describing the pixel type of the on-disk image plane.
 
std::string readVarianceDType () const
 Read a string describing the pixel type of the on-disk image plane.
 
std::shared_ptr< daf::base::PropertyListreadPrimaryMetadata ()
 Read the FITS header of one of the HDUs.
 
std::shared_ptr< daf::base::PropertyListreadImageMetadata ()
 Read the FITS header of one of the HDUs.
 
std::shared_ptr< daf::base::PropertyListreadMaskMetadata ()
 Read the FITS header of one of the HDUs.
 
std::shared_ptr< daf::base::PropertyListreadVarianceMetadata ()
 Read the FITS header of one of the HDUs.
 
template<typename ImagePixelT >
Image< ImagePixelT > readImage (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool allowUnsafe=false)
 Read the image plane.
 
template<typename ImagePixelT >
ndarray::Array< ImagePixelT, 2, 2 > readImageArray (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool allowUnsafe=false)
 Read the image plane.
 
template<typename VariancePixelT >
Image< VariancePixelT > readVariance (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool allowUnsafe=false)
 Read the variance plane.
 
template<typename VariancePixelT >
ndarray::Array< VariancePixelT, 2, 2 > readVarianceArray (lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool allowUnsafe=false)
 Read the variance plane.
 

Friends

class ExposureFitsReader
 

Detailed Description

A FITS reader class for MaskedImages and their components.

Exception Safety
All MaskedImageFitsReader methods provide strong exception safety, but exceptions thrown by the internal fits::Fits object itself may change its status variable or HDU pointer; MaskedImageFitsReader guards against this by resetting those before any use of the Fits object.

Definition at line 41 of file MaskedImageFitsReader.h.

Constructor & Destructor Documentation

◆ MaskedImageFitsReader() [1/5]

lsst::afw::image::MaskedImageFitsReader::MaskedImageFitsReader ( std::string const & fileName,
int hdu = fits::DEFAULT_HDU )
explicit

Construct a FITS reader object.

Parameters
fileNameName of a file to open.
hduHDU index for the image plane, where 0 is the primary HDU and DEFAULT_HDU is the first non-empty HDU.

Definition at line 46 of file MaskedImageFitsReader.cc.

46 :
47 _imageReader(fileName, hdu),
48 _maskReader(nextHdu(_imageReader._fitsFile)),
49 _varianceReader(nextHdu(_maskReader._fitsFile))
50{}

◆ MaskedImageFitsReader() [2/5]

lsst::afw::image::MaskedImageFitsReader::MaskedImageFitsReader ( fits::MemFileManager & manager,
int hdu = fits::DEFAULT_HDU )
explicit

Construct a FITS reader object.

Parameters
managerMemory block containing a FITS file.
hduHDU index for the image plane, where 0 is the primary HDU and DEFAULT_HDU is the first non-empty HDU.

Definition at line 52 of file MaskedImageFitsReader.cc.

52 :
53 _imageReader(manager, hdu),
54 _maskReader(nextHdu(_imageReader._fitsFile)),
55 _varianceReader(nextHdu(_maskReader._fitsFile))
56{}

◆ MaskedImageFitsReader() [3/5]

lsst::afw::image::MaskedImageFitsReader::MaskedImageFitsReader ( fits::Fits * fitsFile)
explicit

Construct a FITS reader object.

Parameters
fitsFilePointer to a CFITSIO file object. Lifetime will not be managed by the Reader object.

Definition at line 58 of file MaskedImageFitsReader.cc.

58 :
59 _imageReader(fitsFile),
60 _maskReader(nextHdu(_imageReader._fitsFile)),
61 _varianceReader(nextHdu(_maskReader._fitsFile))
62{}

◆ MaskedImageFitsReader() [4/5]

lsst::afw::image::MaskedImageFitsReader::MaskedImageFitsReader ( MaskedImageFitsReader const & )
delete

◆ MaskedImageFitsReader() [5/5]

lsst::afw::image::MaskedImageFitsReader::MaskedImageFitsReader ( MaskedImageFitsReader && )
delete

◆ ~MaskedImageFitsReader()

lsst::afw::image::MaskedImageFitsReader::~MaskedImageFitsReader ( )
defaultnoexcept

Member Function Documentation

◆ getFileName()

std::string lsst::afw::image::MaskedImageFitsReader::getFileName ( ) const
inline

Return the name of the file this reader targets.

Definition at line 230 of file MaskedImageFitsReader.h.

230{ return _imageReader.getFileName(); }
std::string getFileName() const
Return the name of the file this reader targets.

◆ operator=() [1/2]

MaskedImageFitsReader & lsst::afw::image::MaskedImageFitsReader::operator= ( MaskedImageFitsReader && )
delete

◆ operator=() [2/2]

MaskedImageFitsReader & lsst::afw::image::MaskedImageFitsReader::operator= ( MaskedImageFitsReader const & )
delete

◆ read()

template<typename ImagePixelT , typename MaskPixelT , typename VariancePixelT >
template MaskedImage< std::uint64_t, MaskPixel, VariancePixel > lsst::afw::image::MaskedImageFitsReader::read ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool conformMasks = false,
bool needAllHdus = false,
bool allowUnsafe = false )

Read the full MaskedImage.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
conformMasksIf True, conform the global mask dict to match this file.
needAllHdusIf True, refuse to read the image if the mask or variance plane is not present (the image plane is always required).
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read (for the image plane). This defaults to the type of the on-disk image.

Definition at line 170 of file MaskedImageFitsReader.cc.

173 {
174 // When reading a standard Masked Image, we expect four HDUs:
175 // * The primary (HDU 0) is empty;
176 // * The first extension (HDU 1) contains the image data;
177 // * The second extension (HDU 2) contains mask data;
178 // * The third extension (HDU 3) contains the variance.
179 //
180 // If the image HDU is unreadable, we will throw.
181 //
182 // If the user has specified a non-default HDU, we load image data from
183 // that HDU, but do not attempt to load mask/variance data; rather, log a
184 // warning and return (blank) defaults.
185 //
186 // If the mask and/or variance is unreadable, we log a warning and return
187 // (blank) defaults.
188
189 LOG_LOGGER _log = LOG_GET("lsst.afw.image.MaskedImageFitsReader");
190
191 enum class Hdu { Primary = 0, Image, Mask, Variance };
192
193 // If the user has requested a non-default HDU and we require all HDUs, we fail.
194 if (needAllHdus && _imageReader.getHdu() > static_cast<int>(Hdu::Image)) {
195 throw LSST_EXCEPT(fits::FitsError, "Cannot read all HDUs starting from non-default");
196 }
197
198 auto image = std::make_shared<Image<ImagePixelT>>(_imageReader.read<ImagePixelT>(bbox, origin,
199 allowUnsafe));
202
203 // only read other planes if they're in their normal HDUs
204 if (_imageReader.getHdu() == static_cast<int>(Hdu::Image)) {
205 // Do not even try if we are missing the HDU
206 if (_maskReader._fitsFile) {
207 try {
208 mask = std::make_shared<Mask<MaskPixelT>>(
209 _maskReader.read<MaskPixelT>(bbox, origin, conformMasks, allowUnsafe)
210 );
211 } catch (fits::FitsError& e) {
212 if (needAllHdus) {
213 LSST_EXCEPT_ADD(e, "Reading Mask");
214 throw e;
215 }
216 LOGL_WARN(_log, "Mask unreadable (%s); using default", e.what());
217 // By resetting the status we are able to read the next HDU (the variance).
218 _maskReader._fitsFile->status = 0;
219 }
220 } else if (needAllHdus) {
221 throw LSST_EXCEPT(pex::exceptions::NotFoundError, "No mask extensions found");
222 }
223 if (_varianceReader._fitsFile) {
224 try {
225 variance = std::make_shared<Image<VariancePixelT>>(
226 _varianceReader.read<VariancePixelT>(bbox, origin, allowUnsafe)
227 );
228 } catch (fits::FitsError& e) {
229 if (needAllHdus) {
230 LSST_EXCEPT_ADD(e, "Reading Variance");
231 throw e;
232 }
233 LOGL_WARN(_log, "Variance unreadable (%s); using default", e.what());
234 // By resetting the status we are able to read the next HDU (the variance).
235 _varianceReader._fitsFile->status = 0;
236 }
237 } else if (needAllHdus) {
238 throw LSST_EXCEPT(pex::exceptions::NotFoundError, "No variance extensions found");
239 }
240 }
241 return MaskedImage<ImagePixelT, MaskPixelT, VariancePixelT>(image, mask, variance);
242}
AmpInfoBoxKey bbox
Definition Amplifier.cc:117
#define LSST_EXCEPT_ADD(e, m)
Add the current location and a message to an existing exception before rethrowing it.
Definition Exception.h:54
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
afw::table::Key< afw::table::Array< MaskPixelT > > mask
afw::table::Key< afw::table::Array< VariancePixelT > > variance
#define LOGL_WARN(logger, message...)
Log a warn-level message using a varargs/printf style interface.
Definition Log.h:547
#define LOG_GET(logger)
Returns a Log object associated with logger.
Definition Log.h:75
#define LOG_LOGGER
Definition Log.h:714
int getHdu() const noexcept
Return the HDU this reader targets.
Image< PixelT > read(lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool allowUnsafe=false)
Read the Image.
Mask< PixelT > read(lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT, bool conformMasks=false, bool allowUnsafe=false)
Read the Mask.

◆ readBBox()

lsst::geom::Box2I lsst::afw::image::MaskedImageFitsReader::readBBox ( ImageOrigin origin = PARENT)

Read the bounding box of the on-disk image.

Parameters
originCoordinate system convention for the returned box. If LOCAL, the returned box will always have a minimum of (0, 0).

Definition at line 72 of file MaskedImageFitsReader.cc.

72 {
73 return _imageReader.readBBox(origin);
74}
lsst::geom::Box2I readBBox(ImageOrigin origin=PARENT)
Read the bounding box of the on-disk image.

◆ readImage()

template<typename ImagePixelT >
template Image< std::uint64_t > lsst::afw::image::MaskedImageFitsReader::readImage ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool allowUnsafe = false )

Read the image plane.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read. This defaults to the type of the on-disk image.

Definition at line 131 of file MaskedImageFitsReader.cc.

132 {
133 return _imageReader.read<ImagePixelT>(bbox, origin, allowUnsafe);
134}

◆ readImageArray()

template<typename ImagePixelT >
template ndarray::Array< std::uint64_t, 2, 2 > lsst::afw::image::MaskedImageFitsReader::readImageArray ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool allowUnsafe = false )

Read the image plane.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read. This defaults to the type of the on-disk image.

Definition at line 137 of file MaskedImageFitsReader.cc.

139 {
140 return _imageReader.readArray<ImagePixelT>(bbox, origin, allowUnsafe);
141}
ndarray::Array< T, 2, 2 > readArray(lsst::geom::Box2I const &bbox, ImageOrigin origin=PARENT, bool allowUnsafe=false)
Read the image's data array.

◆ readImageDType()

std::string lsst::afw::image::MaskedImageFitsReader::readImageDType ( ) const

Read a string describing the pixel type of the on-disk image plane.

Returns
A string of the form [u](int|float)<bits> (e.g. "uint16", "float64").

Definition at line 66 of file MaskedImageFitsReader.cc.

66{ return _imageReader.readDType(); }
std::string readDType() const
Read a string describing the pixel type of the on-disk image.

◆ readImageMetadata()

std::shared_ptr< daf::base::PropertyList > lsst::afw::image::MaskedImageFitsReader::readImageMetadata ( )

Read the FITS header of one of the HDUs.

Definition at line 106 of file MaskedImageFitsReader.cc.

106 {
107 if (!_imageMetadata) {
108 _imageMetadata = _imageReader.readMetadata();
109 checkExtType(_imageReader, _imageMetadata, "IMAGE");
110 }
111 return _imageMetadata;
112}
std::shared_ptr< daf::base::PropertyList > readMetadata()
Read the image's FITS header.

◆ readMask()

template<typename MaskPixelT >
template Mask< MaskPixel > lsst::afw::image::MaskedImageFitsReader::readMask ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool conformMasks = false,
bool allowUnsafe = false )

Read the mask plane.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
conformMasksIf True, conform the global mask dict to match this file.
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read. This defaults to the type of the on-disk image.

Definition at line 144 of file MaskedImageFitsReader.cc.

145 {
146 return _maskReader.read<MaskPixelT>(bbox, origin, conformMasks, allowUnsafe);
147}

◆ readMaskArray()

template<typename MaskPixelT >
template ndarray::Array< MaskPixel, 2, 2 > lsst::afw::image::MaskedImageFitsReader::readMaskArray ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool allowUnsafe = false )

Read the mask plane.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read. This defaults to the type of the on-disk image.

Definition at line 150 of file MaskedImageFitsReader.cc.

152 {
153 return _maskReader.readArray<MaskPixelT>(bbox, origin, allowUnsafe);
154}

◆ readMaskDType()

std::string lsst::afw::image::MaskedImageFitsReader::readMaskDType ( ) const

Read a string describing the pixel type of the on-disk image plane.

Returns
A string of the form [u](int|float)<bits> (e.g. "uint16", "float64").

Definition at line 68 of file MaskedImageFitsReader.cc.

68{ return _maskReader.readDType(); }

◆ readMaskMetadata()

std::shared_ptr< daf::base::PropertyList > lsst::afw::image::MaskedImageFitsReader::readMaskMetadata ( )

Read the FITS header of one of the HDUs.

Definition at line 114 of file MaskedImageFitsReader.cc.

114 {
115 if (!_maskMetadata) {
116 _maskReader.readMetadata();
117 checkExtType(_maskReader, _maskMetadata, "MASK");
118 }
119 return _maskMetadata;
120}

◆ readPrimaryMetadata()

std::shared_ptr< daf::base::PropertyList > lsst::afw::image::MaskedImageFitsReader::readPrimaryMetadata ( )

Read the FITS header of one of the HDUs.

Definition at line 100 of file MaskedImageFitsReader.cc.

100 {
101 auto fitsFile = _imageReader._fitsFile;
102 fits::HduMoveGuard guard(*fitsFile, 0);
103 return fits::readMetadata(*fitsFile, /*strip=*/true);
104}
std::shared_ptr< daf::base::PropertyList > readMetadata(std::string const &fileName, int hdu=DEFAULT_HDU, bool strip=false)
Read FITS header.
Definition fits.cc:1689

◆ readVariance()

template<typename VariancePixelT >
template Image< VariancePixel > lsst::afw::image::MaskedImageFitsReader::readVariance ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool allowUnsafe = false )

Read the variance plane.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read. This defaults to the type of the on-disk image.

Definition at line 157 of file MaskedImageFitsReader.cc.

158 {
159 return _varianceReader.read<VariancePixelT>(bbox, origin, allowUnsafe);
160}

◆ readVarianceArray()

template<typename VariancePixelT >
template ndarray::Array< VariancePixel, 2, 2 > lsst::afw::image::MaskedImageFitsReader::readVarianceArray ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT,
bool allowUnsafe = false )

Read the variance plane.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to read the whole image.
originCoordinate system convention for the given box.
allowUnsafePermit reading into the requested pixel type even when on-disk values may overflow or truncate.

In Python, this templated method is wrapped with an additional dtype argument to provide the type to read. This defaults to the type of the on-disk image.

Definition at line 163 of file MaskedImageFitsReader.cc.

165 {
166 return _varianceReader.readArray<VariancePixelT>(bbox, origin, allowUnsafe);
167}

◆ readVarianceDType()

std::string lsst::afw::image::MaskedImageFitsReader::readVarianceDType ( ) const

Read a string describing the pixel type of the on-disk image plane.

Returns
A string of the form [u](int|float)<bits> (e.g. "uint16", "float64").

Definition at line 70 of file MaskedImageFitsReader.cc.

70{ return _varianceReader.readDType(); }

◆ readVarianceMetadata()

std::shared_ptr< daf::base::PropertyList > lsst::afw::image::MaskedImageFitsReader::readVarianceMetadata ( )

Read the FITS header of one of the HDUs.

Definition at line 122 of file MaskedImageFitsReader.cc.

122 {
123 if (!_varianceMetadata) {
124 _varianceReader.readMetadata();
125 checkExtType(_varianceReader, _varianceMetadata, "VARIANCE");
126 }
127 return _varianceMetadata;
128}

◆ readXY0()

lsst::geom::Point2I lsst::afw::image::MaskedImageFitsReader::readXY0 ( lsst::geom::Box2I const & bbox = lsst::geom::Box2I(),
ImageOrigin origin = PARENT )

Read the image origin from the on-disk image or a subimage thereof.

Parameters
bboxA bounding box used to defined a subimage, or an empty box (default) to use the whole image.
originCoordinate system convention for the given box. Ignored if bbox is empty.

Definition at line 76 of file MaskedImageFitsReader.cc.

76 {
77 return _imageReader.readXY0(bbox, origin);
78}
lsst::geom::Point2I readXY0(lsst::geom::Box2I const &bbox=lsst::geom::Box2I(), ImageOrigin origin=PARENT)
Read the image origin from the on-disk image or a subimage thereof.

Friends And Related Symbol Documentation

◆ ExposureFitsReader

friend class ExposureFitsReader
friend

Definition at line 234 of file MaskedImageFitsReader.h.


The documentation for this class was generated from the following files: