|
LSST Applications g070148d5b3+33e5256705,g0d53e28543+25c8b88941,g0da5cf3356+2dd1178308,g1081da9e2a+62d12e78cb,g17e5ecfddb+7e422d6136,g1c76d35bf8+ede3a706f7,g295839609d+225697d880,g2e2c1a68ba+cc1f6f037e,g2ffcdf413f+853cd4dcde,g38293774b4+62d12e78cb,g3b44f30a73+d953f1ac34,g48ccf36440+885b902d19,g4b2f1765b6+7dedbde6d2,g5320a0a9f6+0c5d6105b6,g56b687f8c9+ede3a706f7,g5c4744a4d9+ef6ac23297,g5ffd174ac0+0c5d6105b6,g6075d09f38+66af417445,g667d525e37+2ced63db88,g670421136f+2ced63db88,g71f27ac40c+2ced63db88,g774830318a+463cbe8d1f,g7876bc68e5+1d137996f1,g7985c39107+62d12e78cb,g7fdac2220c+0fd8241c05,g96f01af41f+368e6903a7,g9ca82378b8+2ced63db88,g9d27549199+ef6ac23297,gabe93b2c52+e3573e3735,gb065e2a02a+3dfbe639da,gbc3249ced9+0c5d6105b6,gbec6a3398f+0c5d6105b6,gc9534b9d65+35b9f25267,gd01420fc67+0c5d6105b6,geee7ff78d7+a14128c129,gf63283c776+ede3a706f7,gfed783d017+0c5d6105b6,w.2022.47
LSST Data Management Base Package
|
Reading Images, Masks, and MaskedImages from FITS files is achieved via their constructors that take a string, e.g.
fileName gives the name of the file to be written (but see Reading and writing MaskedImages).hdu is FITS jargon for the Header Data Unit; the 1-indexed offset of the desired block of data in the file. As a special favour, "0" is intepreted as the first HDU, and if it's empty, the next is read instead.metadata is basically the contents of the FITS header (n.b. it's read automatically if you call Exposure::Exposure(fileName)).bbox is supplied, only that part of the file is read (n.b. in this case the image's origin is set correctly, cf. Image::getXY0).Writing to FITS files is done via a method, e.g. Image::writeFits (but once more, you should peruse Reading and writing MaskedImages).
MaskedImages are a bit more complicated, as there are three pieces of data to read or write, the image, the mask, and the variance. What's more, LSST changed its mind about how to do this in the early summer of 2009.
The old convention was to write three separate FITS files, so a call to MaskedImage::writeFits("foo") would result in three files, foo_img.fits, foo_msk.fits, and foo_var.fits. The new convention is that, if the filename looks like a complete FITS file, the data should be written to a single Multi Extension Fits (MEF) file. I.e.
MaskedImage::writeFits("foo.fits") writes the single MEF file, foo.fits MaskedImage::writeFits("foo") still writes three files, foo_{img,msk,var}.fits, unless you explictly set writeMef in which case a single file, foo, will be written.In both cases, the FITS HDUs are identified with the EXTTYPE keyword; the possible values are IMAGE, MASK, and VARIANCE. If the EXTTYPE keyword is present in the file, it must have the expected value or lsst::pex::exceptions::InvalidParameterException is thrown.
The corresponding constructors obeyed and obey the same conventions, so
MaskedImage::MaskedImage("foo") reads foo_{img,msk,var}.fits if foo_img.fits exists, otherwise it reads foo MaskedImage::MaskedImage("foo.fits") reads foo.fits MaskedImage from a FITS file which does not have MASK and/or VARIANCE HDUs will succeed unless the requireAllHdus argument is true; the missing data will be replaced with 0s.MaskedImage from a non-default HDU in a MEF will not read MASK or VARIANCE data; again, they will be replaced with 0s.If you specify the mode in e.g. Image::writeFits to a (or ab), the desired data will be appended to the file. For Images and Masks this adds a single HDU, while for a MaskedImage it adds 3.
You can read the HDU of your desires by passing an hdu to the constructor.
MaskedImage to a FITS file, but not possible to read it back from a non-default HDU.