#include <MefFile.h>
Multi-Extension FITS file reader-writer.
In addition to FitsFile
's methods, this class provides HDU access and creation services.
A MefFile
can roughly be seen as a sequence of image HDUs and binary table HDUs (see What's a FITS file?). Methods to access HDUs, header units or data units all return constant references, because they are stateless views on the MefFile
object, which is the only handler modified by write operation.
At creation, a MefFile
already contains a Primary, which is empty but can be resized and filled. HDUs are accessed either directly by their index, e.g. with access()
, or by finding a {type, name, version} triplet with find()
. Although it should not be an issue for most files (even with hundreds of HDUs), the second option is much slower because it consists in reading each header unit until a match is found. Once a HDU has been accessed, the reference can be safely reused (please don't re-find an already accessed HDU). It is possible to specify the return type of access()
and find()
to best fit target usage, e.g.:
Creating extensions can be done in three ways:
BLANK
);SifFile
is better suited: it is safer and provides shortcuts.Static Public Attributes | |
static constexpr long | primaryIndex = 0 |
The index of the Primary HDU. More... | |
Public Member Functions | |
Construction | |
virtual | ~MefFile ()=default |
Destroy the object and close the file. More... | |
MefFile (const std::string &filename, FileMode permission) | |
Create a new FITS file handler with given filename and permission. More... | |
Properties | |
long | hduCount () const |
Get the number of HDUs. More... | |
std::vector< std::string > | readHduNames () |
Read the name of each HDU. More... | |
std::vector< std::pair< std::string, long > > | readHduNamesVersions () |
Read the name and version of each HDU. More... | |
Element access | |
template<class T = Hdu> | |
const T & | access (long index) |
Access the HDU at given 0-based index. More... | |
const Hdu & | operator[] (long index) |
Shortcut for access<Hdu>(long) | |
template<class T = Hdu> | |
const T & | find (const std::string &name, long version=0) |
Access the first HDU with given name, type and version. More... | |
template<class T = Hdu> | |
const T & | access (const std::string &name, long version=0) |
Access the only HDU with given name, type and version. More... | |
const ImageHdu & | primary () |
Access the Primary HDU. More... | |
template<typename THdu = Hdu> | |
HduSelector< THdu > | filter (const HduFilter &categories=HduCategory::Any) |
Get an iterable object which represents a filtered set of HDUs. More... | |
Data modifiers | |
template<typename T = unsigned char> | |
const ImageHdu & | appendImageHeader (const std::string &name="", const RecordSeq &records={}) |
Append a new image extension with empty data unit (NAXIS = 0 ). | |
template<typename T , long N = 2> | |
const ImageHdu & | appendNullImage (const std::string &name, const RecordSeq &records, const Position< N > &shape) |
Append and new image extension and fill the data unit with null values. More... | |
template<typename TRaster > | |
const ImageHdu & | appendImage (const std::string &name, const RecordSeq &records, const TRaster &raster) |
Append and write a new image extension. More... | |
template<typename... TInfos> | |
const BintableHdu & | appendBintableHeader (const std::string &name="", const RecordSeq &records={}, const TInfos &... infos) |
Append a binary table extension with empty data unit (0 rows and possibly 0 columns). | |
template<typename... TInfos> | |
const BintableHdu & | appendNullBintable (const std::string &name, const RecordSeq &records, long rowCount, const TInfos &... infos) |
Append a binary table extension and fill it with null values. More... | |
template<typename... TColumns> | |
const BintableHdu & | appendBintable (const std::string &name="", const RecordSeq &records={}, const TColumns &... columns) |
Append and write a new binary table extension. | |
template<typename TColumns , std::size_t Size = std::tuple_size<TColumns>::value> | |
const BintableHdu & | appendBintable (const std::string &name, const RecordSeq &records, const TColumns &columns) |
Append and write a new binary table extension. | |
Deprecated | |
template<class T = Hdu> | |
const T & | accessFirst (const std::string &name, long version=0) |
Deprecated alias for backward compatibility. More... | |
template<typename THdu = Hdu> | |
HduSelector< THdu > | select (const HduFilter &categories=HduCategory::Any) |
Deprecated alias for backward compatibility. More... | |
const Hdu & | initRecordExt (const std::string &name) |
Append a new Hdu (as an empty ImageHdu) with given name. More... | |
template<typename T , long N> | |
const ImageHdu & | initImageExt (const std::string &name, const Position< N > &shape) |
Append a new ImageHdu with given name and shape. More... | |
template<typename TRaster > | |
const ImageHdu & | assignImageExt (const std::string &name, const TRaster &raster) |
Append an ImageHdu with given name and data. More... | |
template<typename... TInfos> | |
const BintableHdu & | initBintableExt (const std::string &name, const TInfos &... header) |
Append a BintableHdu with given name and columns info. More... | |
template<typename... TColumns> | |
const BintableHdu & | assignBintableExt (const std::string &name, const TColumns &... columns) |
Append a BintableHdu with given name and data. More... | |
template<typename TTuple , std::size_t Size = std::tuple_size<TTuple>::value> | |
const BintableHdu & | assignBintableExt (const std::string &name, const TTuple &columns) |
Append a BintableHdu with given name and data. More... | |
Public Member Functions inherited from FitsFile | |
FitsFile (const std::string &filename, FileMode permission) | |
Create a new FITS file handler with given filename and permission. | |
virtual | ~FitsFile () |
Destroy the object and close the file. More... | |
std::string | filename () const |
Get the file name. | |
bool | isOpen () const |
Check whether the file is open. | |
void | reopen () |
Reopen the file. More... | |
void | close () |
Close the file. More... | |
void | closeAndDelete () |
Close and delete the file. | |
fitsfile * | handoverToCfitsio () |
Get CFITSIO's fitsfile* . More... | |
Additional Inherited Members | |
Related Functions inherited from FitsFile | |
bool | fileExists (const std::string &filename) |
Check whether a file exists. | |