LSSTApplications  16.0-10-g0ee56ad+5,16.0-11-ga33d1f2+5,16.0-12-g3ef5c14+3,16.0-12-g71e5ef5+18,16.0-12-gbdf3636+3,16.0-13-g118c103+3,16.0-13-g8f68b0a+3,16.0-15-gbf5c1cb+4,16.0-16-gfd17674+3,16.0-17-g7c01f5c+3,16.0-18-g0a50484+1,16.0-20-ga20f992+8,16.0-21-g0e05fd4+6,16.0-21-g15e2d33+4,16.0-22-g62d8060+4,16.0-22-g847a80f+4,16.0-25-gf00d9b8+1,16.0-28-g3990c221+4,16.0-3-gf928089+3,16.0-32-g88a4f23+5,16.0-34-gd7987ad+3,16.0-37-gc7333cb+2,16.0-4-g10fc685+2,16.0-4-g18f3627+26,16.0-4-g5f3a788+26,16.0-5-gaf5c3d7+4,16.0-5-gcc1f4bb+1,16.0-6-g3b92700+4,16.0-6-g4412fcd+3,16.0-6-g7235603+4,16.0-69-g2562ce1b+2,16.0-8-g14ebd58+4,16.0-8-g2df868b+1,16.0-8-g4cec79c+6,16.0-8-gadf6c7a+1,16.0-8-gfc7ad86,16.0-82-g59ec2a54a+1,16.0-9-g5400cdc+2,16.0-9-ge6233d7+5,master-g2880f2d8cf+3,v17.0.rc1
LSSTDataManagementBasePackage
Namespaces | Classes | Functions | Variables
lsst::afw::fits Namespace Reference

Namespaces

 compression
 
 detail
 
 fitsContinued
 
 fitsLib
 
 pickleFits
 

Classes

struct  Bzero
 Scaling zero-point, set according to pixel type. More...
 
struct  Bzero< std::uint64_t >
 
struct  Bzero< T, typename std::enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed >::type >
 
class  Fits
 A simple struct that combines the two arguments that must be passed to most cfitsio routines and contains thin and/or templated wrappers around common cfitsio routines. More...
 
class  FitsError
 An exception thrown when problems are found when reading or writing FITS files. More...
 
class  FitsTypeError
 An exception thrown when a FITS file has the wrong type. More...
 
class  HduMoveGuard
 RAII scoped guard for moving the HDU in a Fits object. More...
 
class  HeaderIterationFunctor
 Base class for polymorphic functors used to iterator over FITS key headers. More...
 
struct  ImageCompressionOptions
 Options for tile compression of image pixels. More...
 
struct  ImageScale
 Scale to apply to image. More...
 
class  ImageScalingOptions
 Options for scaling image pixels. More...
 
struct  ImageWriteOptions
 Options for writing an image to FITS. More...
 
class  MemFileManager
 Lifetime-management for memory that goes into FITS memory files. More...
 

Functions

std::string makeErrorMessage (std::string const &fileName="", int status=0, std::string const &msg="")
 Return an error message reflecting FITS I/O errors. More...
 
std::string makeErrorMessage (std::string const &fileName, int status, boost::format const &msg)
 
std::string makeErrorMessage (void *fptr, int status=0, std::string const &msg="")
 Return an error message reflecting FITS I/O errors. More...
 
std::string makeErrorMessage (void *fptr, int status, boost::format const &msg)
 
std::string makeLimitedFitsHeader (lsst::daf::base::PropertySet const &metadata, std::set< std::string > const &excludeNames={})
 Format a PropertySet into an FITS header string in a simplistic fashion. More...
 
template<typename T >
int getBitPix ()
 Return the cfitsio integer BITPIX code for the given data type. More...
 
template<typename T , int N, int C>
ndarray::Array< T const, N, N > const makeContiguousArray (ndarray::Array< T, N, C > const &array)
 Construct a contiguous ndarray. More...
 
std::shared_ptr< daf::base::PropertyListcombineMetadata (std::shared_ptr< const daf::base::PropertyList > first, std::shared_ptr< const daf::base::PropertyList > second)
 Combine two sets of metadata in a FITS-appropriate fashion. More...
 
std::shared_ptr< daf::base::PropertyListreadMetadata (std::string const &fileName, int hdu=DEFAULT_HDU, bool strip=false)
 Read FITS header. More...
 
std::shared_ptr< daf::base::PropertyListreadMetadata (fits::MemFileManager &manager, int hdu=DEFAULT_HDU, bool strip=false)
 Read FITS header. More...
 
std::shared_ptr< daf::base::PropertyListreadMetadata (fits::Fits &fitsfile, bool strip=false)
 Read FITS header. More...
 
void setAllowImageCompression (bool allow)
 
bool getAllowImageCompression ()
 
ImageCompressionOptions::CompressionAlgorithm compressionAlgorithmFromString (std::string const &name)
 Interpret compression algorithm expressed in string. More...
 
std::string compressionAlgorithmToString (ImageCompressionOptions::CompressionAlgorithm algorithm)
 Provide string version of compression algorithm. More...
 
ImageCompressionOptions::CompressionAlgorithm compressionAlgorithmFromCfitsio (int cfitsio)
 Convert compression algorithm from cfitsio to ImageCompressionOptions::CompressionAlgorithm. More...
 
int compressionAlgorithmToCfitsio (ImageCompressionOptions::CompressionAlgorithm algorithm)
 Convert ImageCompressionOptions::CompressionAlgorithm to cfitsio. More...
 
ImageScalingOptions::ScalingAlgorithm scalingAlgorithmFromString (std::string const &name)
 Interpret scaling algorithm expressed in string. More...
 
std::string scalingAlgorithmToString (ImageScalingOptions::ScalingAlgorithm algorithm)
 Provide string version of compression algorithm. More...
 
template ImageScale ImageScalingOptions::determine< std::uint8_t, 2 > (ndarray::Array< std::uint8_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::uint8_t > (ndarray::Array< std::uint8_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::uint8_t, 2, 2 > ImageScale::fromFits< std::uint8_t > (ndarray::Array< std::uint8_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< std::uint16_t, 2 > (ndarray::Array< std::uint16_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::uint16_t > (ndarray::Array< std::uint16_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::uint16_t, 2, 2 > ImageScale::fromFits< std::uint16_t > (ndarray::Array< std::uint16_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< std::int16_t, 2 > (ndarray::Array< std::int16_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::int16_t > (ndarray::Array< std::int16_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::int16_t, 2, 2 > ImageScale::fromFits< std::int16_t > (ndarray::Array< std::int16_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< std::uint32_t, 2 > (ndarray::Array< std::uint32_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::uint32_t > (ndarray::Array< std::uint32_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::uint32_t, 2, 2 > ImageScale::fromFits< std::uint32_t > (ndarray::Array< std::uint32_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< std::int32_t, 2 > (ndarray::Array< std::int32_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::int32_t > (ndarray::Array< std::int32_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::int32_t, 2, 2 > ImageScale::fromFits< std::int32_t > (ndarray::Array< std::int32_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< std::uint64_t, 2 > (ndarray::Array< std::uint64_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::uint64_t > (ndarray::Array< std::uint64_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::uint64_t, 2, 2 > ImageScale::fromFits< std::uint64_t > (ndarray::Array< std::uint64_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< std::int64_t, 2 > (ndarray::Array< std::int64_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< std::int64_t > (ndarray::Array< std::int64_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< std::int64_t, 2, 2 > ImageScale::fromFits< std::int64_t > (ndarray::Array< std::int64_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< boost::float32_t, 2 > (ndarray::Array< boost::float32_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< boost::float32_t > (ndarray::Array< boost::float32_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< boost::float32_t, 2, 2 > ImageScale::fromFits< boost::float32_t > (ndarray::Array< boost::float32_t, 2, 2 > const &) const
 
template ImageScale ImageScalingOptions::determine< boost::float64_t, 2 > (ndarray::Array< boost::float64_t const, 2, 2 > const &image, ndarray::Array< bool, 2, 2 > const &mask) const
 
template std::shared_ptr< detail::PixelArrayBaseImageScale::toFits< boost::float64_t > (ndarray::Array< boost::float64_t const, 2, 2 > const &, bool, bool, ndarray::Array< long, 1 > const &, int) const
 
template ndarray::Array< boost::float64_t, 2, 2 > ImageScale::fromFits< boost::float64_t > (ndarray::Array< boost::float64_t, 2, 2 > const &) const
 

Variables

const int DEFAULT_HDU = INT_MIN
 Specify that the default HDU should be read. More...
 

Function Documentation

◆ combineMetadata()

std::shared_ptr< daf::base::PropertyList > lsst::afw::fits::combineMetadata ( std::shared_ptr< const daf::base::PropertyList first,
std::shared_ptr< const daf::base::PropertyList second 
)

Combine two sets of metadata in a FITS-appropriate fashion.

"COMMENT" and "HISTORY" entries:

  • If of type std::string then the values in second are appended to values in first
  • If not of type std::string then they are silently ignored

All other entries:

  • Values in second override values in first (regardless of type)
  • Only scalars are copied; if a vector is found, only the last value is copied
Parameters
[in]firstThe first set of metadata to combine
[in]secondThe second set of metadata to combine
Returns
The combined metadata. Item names have the following order:
  • names in first, omitting all names except "COMMENT" and "HISTORY" that appear in second
  • names in second, omitting "COMMENT" and "HISTORY" if valid versions appear in first

Definition at line 1521 of file fits.cc.

1523  {
1524  auto combined = std::make_shared<daf::base::PropertyList>();
1525  bool const asScalar = true;
1526  for (auto const &name : first->getOrderedNames()) {
1527  auto const iscv = isCommentIsValid(*first, name);
1528  if (iscv.isComment) {
1529  if (iscv.isValid) {
1530  combined->add<std::string>(name, first->getArray<std::string>(name));
1531  }
1532  } else {
1533  combined->copy(name, first, name, asScalar);
1534  }
1535  }
1536  for (auto const &name : second->getOrderedNames()) {
1537  auto const iscv = isCommentIsValid(*second, name);
1538  if (iscv.isComment) {
1539  if (iscv.isValid) {
1540  combined->add<std::string>(name, second->getArray<std::string>(name));
1541  }
1542  } else {
1543  // `copy` will replace an item, even if has a different type, so no need to call `remove`
1544  combined->copy(name, second, name, asScalar);
1545  }
1546  }
1547  return combined;
1548 }
STL class.

◆ compressionAlgorithmFromCfitsio()

ImageCompressionOptions::CompressionAlgorithm lsst::afw::fits::compressionAlgorithmFromCfitsio ( int  cfitsio)

Convert compression algorithm from cfitsio to ImageCompressionOptions::CompressionAlgorithm.

Definition at line 50 of file fitsCompression.cc.

50  {
51  switch (cfitsio) {
52  case 0:
53  return ImageCompressionOptions::NONE;
54  case RICE_1:
55  return ImageCompressionOptions::RICE;
56  case GZIP_1:
57  return ImageCompressionOptions::GZIP;
58  case GZIP_2:
59  return ImageCompressionOptions::GZIP_SHUFFLE;
60  case PLIO_1:
61  return ImageCompressionOptions::PLIO;
62  case HCOMPRESS_1:
63  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError,
64  "Unsupported compression algorithm: HCOMPRESS_1");
65  default:
67  os << "Unrecognized cfitsio compression: " << cfitsio;
68  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, os.str());
69  }
70 }
T str(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
std::ostream * os
Definition: Schema.cc:746

◆ compressionAlgorithmFromString()

ImageCompressionOptions::CompressionAlgorithm lsst::afw::fits::compressionAlgorithmFromString ( std::string const &  name)

Interpret compression algorithm expressed in string.

Definition at line 20 of file fitsCompression.cc.

20  {
21  if (name == "NONE") return ImageCompressionOptions::NONE;
22  if (name == "GZIP") return ImageCompressionOptions::GZIP;
23  if (name == "GZIP_SHUFFLE") return ImageCompressionOptions::GZIP_SHUFFLE;
24  if (name == "RICE") return ImageCompressionOptions::RICE;
25  if (name == "HCOMPRESS")
26  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, "HCOMPRESS is unsupported");
27  if (name == "PLIO") return ImageCompressionOptions::PLIO;
28  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, "Unrecognised compression algorithm: " + name);
29 }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ compressionAlgorithmToCfitsio()

int lsst::afw::fits::compressionAlgorithmToCfitsio ( ImageCompressionOptions::CompressionAlgorithm  algorithm)

Convert ImageCompressionOptions::CompressionAlgorithm to cfitsio.

Definition at line 72 of file fitsCompression.cc.

72  {
73  switch (algorithm) {
74  case ImageCompressionOptions::NONE:
75  return 0;
76  case ImageCompressionOptions::GZIP:
77  return GZIP_1;
78  case ImageCompressionOptions::GZIP_SHUFFLE:
79  return GZIP_2;
80  case ImageCompressionOptions::RICE:
81  return RICE_1;
82  case ImageCompressionOptions::PLIO:
83  return PLIO_1;
84  default:
86  os << "Unrecognized compression algorithm: " << algorithm;
87  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, os.str());
88  }
89 }
T str(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
std::ostream * os
Definition: Schema.cc:746

◆ compressionAlgorithmToString()

std::string lsst::afw::fits::compressionAlgorithmToString ( ImageCompressionOptions::CompressionAlgorithm  algorithm)

Provide string version of compression algorithm.

Definition at line 31 of file fitsCompression.cc.

31  {
32  switch (algorithm) {
33  case ImageCompressionOptions::NONE:
34  return "NONE";
35  case ImageCompressionOptions::GZIP:
36  return "GZIP";
37  case ImageCompressionOptions::GZIP_SHUFFLE:
38  return "GZIP_SHUFFLE";
39  case ImageCompressionOptions::RICE:
40  return "RICE";
41  case ImageCompressionOptions::PLIO:
42  return "PLIO";
43  default:
45  os << "Unrecognized compression algorithm: " << algorithm;
46  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, os.str());
47  }
48 }
T str(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
std::ostream * os
Definition: Schema.cc:746

◆ getAllowImageCompression()

bool lsst::afw::fits::getAllowImageCompression ( )

Definition at line 1441 of file fits.cc.

1441 { return allowImageCompression; }

◆ getBitPix()

template<typename T >
int lsst::afw::fits::getBitPix ( )

Return the cfitsio integer BITPIX code for the given data type.

Definition at line 469 of file fits.cc.

469  {
470  return FitsBitPix<T>::CONSTANT;
471 }

◆ ImageScale::fromFits< boost::float32_t >()

template ndarray::Array< boost::float32_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< boost::float32_t > ( ndarray::Array< boost::float32_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< boost::float64_t >()

template ndarray::Array< boost::float64_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< boost::float64_t > ( ndarray::Array< boost::float64_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::int16_t >()

template ndarray::Array< std::int16_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::int16_t > ( ndarray::Array< std::int16_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::int32_t >()

template ndarray::Array< std::int32_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::int32_t > ( ndarray::Array< std::int32_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::int64_t >()

template ndarray::Array< std::int64_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::int64_t > ( ndarray::Array< std::int64_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::uint16_t >()

template ndarray::Array< std::uint16_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::uint16_t > ( ndarray::Array< std::uint16_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::uint32_t >()

template ndarray::Array< std::uint32_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::uint32_t > ( ndarray::Array< std::uint32_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::uint64_t >()

template ndarray::Array< std::uint64_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::uint64_t > ( ndarray::Array< std::uint64_t, 2, 2 > const &  ) const

◆ ImageScale::fromFits< std::uint8_t >()

template ndarray::Array< std::uint8_t , 2, 2> lsst::afw::fits::ImageScale::fromFits< std::uint8_t > ( ndarray::Array< std::uint8_t, 2, 2 > const &  ) const

◆ ImageScale::toFits< boost::float32_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< boost::float32_t > ( ndarray::Array< boost::float32_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< boost::float64_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< boost::float64_t > ( ndarray::Array< boost::float64_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::int16_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::int16_t > ( ndarray::Array< std::int16_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::int32_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::int32_t > ( ndarray::Array< std::int32_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::int64_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::int64_t > ( ndarray::Array< std::int64_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::uint16_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::uint16_t > ( ndarray::Array< std::uint16_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::uint32_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::uint32_t > ( ndarray::Array< std::uint32_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::uint64_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::uint64_t > ( ndarray::Array< std::uint64_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScale::toFits< std::uint8_t >()

template std::shared_ptr<detail::PixelArrayBase> lsst::afw::fits::ImageScale::toFits< std::uint8_t > ( ndarray::Array< std::uint8_t const, 2, 2 > const &  ,
bool  ,
bool  ,
ndarray::Array< long, 1 > const &  ,
int   
) const

◆ ImageScalingOptions::determine< boost::float32_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< boost::float32_t, 2 > ( ndarray::Array< boost::float32_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< boost::float64_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< boost::float64_t, 2 > ( ndarray::Array< boost::float64_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::int16_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::int16_t, 2 > ( ndarray::Array< std::int16_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::int32_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::int32_t, 2 > ( ndarray::Array< std::int32_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::int64_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::int64_t, 2 > ( ndarray::Array< std::int64_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::uint16_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::uint16_t, 2 > ( ndarray::Array< std::uint16_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::uint32_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::uint32_t, 2 > ( ndarray::Array< std::uint32_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::uint64_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::uint64_t, 2 > ( ndarray::Array< std::uint64_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ ImageScalingOptions::determine< std::uint8_t, 2 >()

template ImageScale lsst::afw::fits::ImageScalingOptions::determine< std::uint8_t, 2 > ( ndarray::Array< std::uint8_t const, 2, 2 > const &  image,
ndarray::Array< bool, 2, 2 > const &  mask 
) const

◆ makeContiguousArray()

template<typename T , int N, int C>
ndarray::Array<T const, N, N> const lsst::afw::fits::makeContiguousArray ( ndarray::Array< T, N, C > const &  array)

Construct a contiguous ndarray.

A deep copy is only performed if the array is not already contiguous.

Definition at line 207 of file fits.h.

207  {
208  ndarray::Array<T const, N, N> contiguous = ndarray::dynamic_dimension_cast<N>(array);
209  if (contiguous.empty()) contiguous = ndarray::copy(array);
210  return contiguous;
211 }

◆ makeErrorMessage() [1/4]

std::string lsst::afw::fits::makeErrorMessage ( std::string const &  fileName = "",
int  status = 0,
std::string const &  msg = "" 
)

Return an error message reflecting FITS I/O errors.

Parameters
[in]fileNameFITS filename to be included in the error message.
[in]statusThe last status value returned by the cfitsio library; if nonzero, the error message will include a description from cfitsio.
[in]msgAn additional custom message to include.

Definition at line 405 of file fits.cc.

405  {
407  os << "cfitsio error";
408  if (fileName != "") {
409  os << " (" << fileName << ")";
410  }
411  if (status != 0) {
412  char fitsErrMsg[FLEN_ERRMSG];
413  fits_get_errstatus(status, fitsErrMsg);
414  os << ": " << fitsErrMsg << " (" << status << ")";
415  }
416  if (msg != "") {
417  os << " : " << msg;
418  }
419  os << "\ncfitsio error stack:\n";
420  char cfitsioMsg[FLEN_ERRMSG];
421  while (fits_read_errmsg(cfitsioMsg) != 0) {
422  os << " " << cfitsioMsg << "\n";
423  }
424  return os.str();
425 }
T str(T... args)
std::ostream * os
Definition: Schema.cc:746

◆ makeErrorMessage() [2/4]

std::string lsst::afw::fits::makeErrorMessage ( std::string const &  fileName,
int  status,
boost::format const &  msg 
)
inline

Definition at line 64 of file fits.h.

64  {
65  return makeErrorMessage(fileName, status, msg.str());
66 }
std::string makeErrorMessage(void *fptr, int status, boost::format const &msg)
Definition: fits.h:78

◆ makeErrorMessage() [3/4]

std::string lsst::afw::fits::makeErrorMessage ( void *  fptr,
int  status = 0,
std::string const &  msg = "" 
)

Return an error message reflecting FITS I/O errors.

Parameters
[in]fptrA cfitsio fitsfile pointer to be inspected for a filename. Passed as void* to avoid including fitsio.h in the header file.
[in]statusThe last status value returned by the cfitsio library; if nonzero, the error message will include a description from cfitsio.
[in]msgAn additional custom message to include.

Definition at line 427 of file fits.cc.

427  {
428  std::string fileName = "";
429  fitsfile *fd = reinterpret_cast<fitsfile *>(fptr);
430  if (fd != 0 && fd->Fptr != 0 && fd->Fptr->filename != 0) {
431  fileName = fd->Fptr->filename;
432  }
433  return makeErrorMessage(fileName, status, msg);
434 }
STL class.
std::string makeErrorMessage(std::string const &fileName="", int status=0, std::string const &msg="")
Return an error message reflecting FITS I/O errors.
Definition: fits.cc:405

◆ makeErrorMessage() [4/4]

std::string lsst::afw::fits::makeErrorMessage ( void *  fptr,
int  status,
boost::format const &  msg 
)
inline

Definition at line 78 of file fits.h.

78  {
79  return makeErrorMessage(fptr, status, msg.str());
80 }
std::string makeErrorMessage(void *fptr, int status, boost::format const &msg)
Definition: fits.h:78

◆ makeLimitedFitsHeader()

std::string lsst::afw::fits::makeLimitedFitsHeader ( lsst::daf::base::PropertySet const &  metadata,
std::set< std::string > const &  excludeNames = {} 
)

Format a PropertySet into an FITS header string in a simplistic fashion.

This function is designed to format data for creating a WCS. As such, it is quite limited:

  • It skips entries whose name is longer than 8 characters, since none are used for FITS-WCS
  • It skips string entries if the fully formatted string is longer than 80 characters
  • It skips entries with types it cannot handle (e.g. long, long long)
  • For entries that have array data, it only writes the final value, since that is the value that should be used by code that reads FITS headers.
  • It makes no attempt to insure that required entries, such as SIMPLE, are present.
Parameters
[in]metadataMetadata to format; if this is a PropertyList then the order of items is preserved
[in]excludeNamesNames of entries to exclude from the returned header string
Returns
a FITS header string (exactly 80 characters per entry, no line terminators)

Definition at line 436 of file fits.cc.

437  {
438  daf::base::PropertyList const *pl = dynamic_cast<daf::base::PropertyList const *>(&metadata);
439  std::vector<std::string> allParamNames;
440  if (pl) {
441  allParamNames = pl->getOrderedNames();
442  } else {
443  allParamNames = metadata.paramNames(false);
444  }
445  std::vector<std::string> desiredParamNames;
446  for (auto const &name : allParamNames) {
447  if (excludeNames.count(name) == 0) {
448  desiredParamNames.push_back(name);
449  }
450  }
451  return makeLimitedFitsHeaderImpl(desiredParamNames, metadata);
452 }
T push_back(T... args)
T count(T... args)

◆ readMetadata() [1/3]

std::shared_ptr< daf::base::PropertyList > lsst::afw::fits::readMetadata ( std::string const &  fileName,
int  hdu = DEFAULT_HDU,
bool  strip = false 
)

Read FITS header.

Includes support for the INHERIT convention: if 'INHERIT = T' is in the header, the PHU will be read as well, and nominated HDU will override any duplicated values.

Parameters
fileNamethe file whose header will be read
hduthe HDU to read (0-indexed; 0 is the Primary HDU).
stripif true, common FITS keys that usually have non-metadata intepretations (e.g. NAXIS, BITPIX) will be ignored.

Definition at line 1550 of file fits.cc.

1550  {
1551  fits::Fits fp(fileName, "r", fits::Fits::AUTO_CLOSE | fits::Fits::AUTO_CHECK);
1552  fp.setHdu(hdu);
1553  return readMetadata(fp, strip);
1554 }
bool strip
Definition: fits.cc:831
std::shared_ptr< daf::base::PropertyList > readMetadata(std::string const &fileName, int hdu=DEFAULT_HDU, bool strip=false)
Read FITS header.
Definition: fits.cc:1550

◆ readMetadata() [2/3]

std::shared_ptr< daf::base::PropertyList > lsst::afw::fits::readMetadata ( fits::MemFileManager manager,
int  hdu = DEFAULT_HDU,
bool  strip = false 
)

Read FITS header.

Includes support for the INHERIT convention: if 'INHERIT = T' is in the header, the PHU will be read as well, and nominated HDU will override any duplicated values.

Parameters
managerthe in-memory file whose header will be read
hduthe HDU to read (0-indexed; 0 is the Primary HDU).
stripif true, common FITS keys that usually have non-metadata intepretations (e.g. NAXIS, BITPIX) will be ignored.

Definition at line 1556 of file fits.cc.

1556  {
1557  fits::Fits fp(manager, "r", fits::Fits::AUTO_CLOSE | fits::Fits::AUTO_CHECK);
1558  fp.setHdu(hdu);
1559  return readMetadata(fp, strip);
1560 }
bool strip
Definition: fits.cc:831
std::shared_ptr< daf::base::PropertyList > readMetadata(std::string const &fileName, int hdu=DEFAULT_HDU, bool strip=false)
Read FITS header.
Definition: fits.cc:1550

◆ readMetadata() [3/3]

std::shared_ptr< daf::base::PropertyList > lsst::afw::fits::readMetadata ( fits::Fits fitsfile,
bool  strip = false 
)

Read FITS header.

Includes support for the INHERIT convention: if 'INHERIT = T' is in the header, the PHU will be read as well, and nominated HDU will override any duplicated values.

Parameters
fitsfilethe file and HDU to be read
stripif true, common FITS keys that usually have non-metadata intepretations (e.g. NAXIS, BITPIX) will be ignored.

Definition at line 1562 of file fits.cc.

1562  {
1563  auto metadata = std::make_shared<lsst::daf::base::PropertyList>();
1564  fitsfile.readMetadata(*metadata, strip);
1565  // if INHERIT=T, we want to also include header entries from the primary HDU
1566  int oldHdu = fitsfile.getHdu();
1567  if (oldHdu != 0 && metadata->exists("INHERIT")) {
1568  bool inherit = false;
1569  if (metadata->typeOf("INHERIT") == typeid(std::string)) {
1570  inherit = (metadata->get<std::string>("INHERIT") == "T");
1571  } else {
1572  inherit = metadata->get<bool>("INHERIT");
1573  }
1574  if (strip) metadata->remove("INHERIT");
1575  if (inherit) {
1576  HduMoveGuard guard(fitsfile, 0);
1577  // Combine the metadata from the primary HDU with the metadata from the specified HDU,
1578  // with non-comment values from the specified HDU superseding those in the primary HDU
1579  // and comments from the specified HDU appended to comments from the primary HDU
1580  auto primaryHduMetadata = std::make_shared<daf::base::PropertyList>();
1581  fitsfile.readMetadata(*primaryHduMetadata, strip);
1582  metadata = combineMetadata(primaryHduMetadata, metadata);
1583  } else {
1584  // Purge invalid values
1585  auto const emptyMetadata = std::make_shared<lsst::daf::base::PropertyList>();
1586  metadata = combineMetadata(metadata, emptyMetadata);
1587  }
1588  }
1589  return metadata;
1590 }
std::shared_ptr< daf::base::PropertyList > combineMetadata(std::shared_ptr< const daf::base::PropertyList > first, std::shared_ptr< const daf::base::PropertyList > second)
Combine two sets of metadata in a FITS-appropriate fashion.
Definition: fits.cc:1521
STL class.
bool strip
Definition: fits.cc:831

◆ scalingAlgorithmFromString()

ImageScalingOptions::ScalingAlgorithm lsst::afw::fits::scalingAlgorithmFromString ( std::string const &  name)

Interpret scaling algorithm expressed in string.

Definition at line 99 of file fitsCompression.cc.

99  {
100  if (name == "NONE") return ImageScalingOptions::NONE;
101  if (name == "RANGE") return ImageScalingOptions::RANGE;
102  if (name == "STDEV_POSITIVE") return ImageScalingOptions::STDEV_POSITIVE;
103  if (name == "STDEV_NEGATIVE") return ImageScalingOptions::STDEV_NEGATIVE;
104  if (name == "STDEV_BOTH") return ImageScalingOptions::STDEV_BOTH;
105  if (name == "MANUAL") return ImageScalingOptions::MANUAL;
106  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, "Unrecognized scaling algorithm: " + name);
107 }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ scalingAlgorithmToString()

std::string lsst::afw::fits::scalingAlgorithmToString ( ImageScalingOptions::ScalingAlgorithm  algorithm)

Provide string version of compression algorithm.

Definition at line 109 of file fitsCompression.cc.

109  {
110  switch (algorithm) {
111  case ImageScalingOptions::NONE:
112  return "NONE";
113  case ImageScalingOptions::RANGE:
114  return "RANGE";
115  case ImageScalingOptions::STDEV_POSITIVE:
116  return "STDEV_POSITIVE";
117  case ImageScalingOptions::STDEV_NEGATIVE:
118  return "STDEV_NEGATIVE";
119  case ImageScalingOptions::STDEV_BOTH:
120  return "STDEV_BOTH";
121  case ImageScalingOptions::MANUAL:
122  return "MANUAL";
123  default:
125  os << "Unrecognized scaling algorithm: " << algorithm;
126  throw LSST_EXCEPT(pex::exceptions::InvalidParameterError, os.str());
127  }
128 }
T str(T... args)
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
std::ostream * os
Definition: Schema.cc:746

◆ setAllowImageCompression()

void lsst::afw::fits::setAllowImageCompression ( bool  allow)

Definition at line 1439 of file fits.cc.

1439 { allowImageCompression = allow; }

Variable Documentation

◆ DEFAULT_HDU

const int lsst::afw::fits::DEFAULT_HDU = INT_MIN

Specify that the default HDU should be read.

This special HDU number indicates that the first extension should be used if the primary HDU is empty (i.e., has NAXIS=0) and the Primary HDU is the current.

Definition at line 18 of file fitsDefaults.h.