Why use the CFITSIO Library?

There are many reasons to use CFITSIO:

  • CFITSIO is the result of many man-years of development with major contributions from external projects such as the data centers for INTEGRAL (ISDC), XMM, and Chandra space missions.
  • Provides 100% complete support for the FITS Standard, including:
    • all FITS datatypes, including bit, byte, logical, and complex
    • both signed and unsigned integer support
    • vector columns
    • variable length vector columns
    • null values in images and table columns
  • Supports many proposed FITS conventions that are widely used but not yet standard, including:
    • CHECKSUM keyword convention
    • CONTINUED long string value keywords (longer than 68 characters)
    • ESO HIERARCH convention for keyword names longer than 8 characters
    • Hierarchical Grouping convention (used by INTEGRAL)
    • Keyword units convention (in square brackets in the comment field)
    • 64-bit long-integer datatypes in FITS images and tables.
  • C++, Fortran, Perl, and Tcl wrappers are available for calling CFITSIO from other languages
  • The subroutine interface is based on an abstract data model concept which hides the low level FITS format details from users.
  • The CFITSIO data access routines are simple and intuitive. The basic interface is defined in only 15 pages of the CFITSIO Quick Start Guide.
  • A dozen simple yet powerful example programs are provided to illustrate how to use CFITSIO.
  • Supports creating new files based on ASCII template file (from the ISDC)
  • Supports implicit datatype conversion when reading or writing FITS data
  • CFITSIO uses plug-in I/O drivers (developed at the ISDC) which makes it easy to to support a variety of physical file formats, including:
    • IRAF images (code provided by Doug Mink)
    • raw binary data files
    • FTP, HTTP, and ROOT file access (code provided by ISDC)
    • externally compressed files (.gz, .Z, and .zip)
    • files piped on 'stdin' or 'stdout'
    • 'Tile Compressed' images which are actually stored in binary tables
    • files in shared memory segments (code provide by ISDC)
    • files is core memory (widely used in real-time data acquisition)
  • Has a simple set of self-contained WCS routines, plus has routines to cleanly interface with other extensive WCS library (but has no linkage dependency on other WCS libraries)
  • The high performance lexical parser (designed by Uwe Lammers) allows completely general table filtering and is as fast as compiled C code.
  • The parser supports filtering of tables by region files and GTI files.
  • CFITSIO's Virtual File syntax supports many features, including:
    • performing on-the-fly arithmetic on the value of image pixels
    • extracting subimages from larger images
    • modifying or creating table columns on the fly
    • creating images by binning table columns
  • The I/O speed has been highly optimized and is largely limited only by the speed of the underlying physical device; Sustained I/O data rates of more than 40MB/s are possible on current generation magnetic disks.
  • Has modest memory requirements; FITS files sizes are not limited by the amount of available memory.
  • Supports the 'large file' specification and can read and write FITS files up to 6 terabytes in size.
  • Extensive error reporting is built into the interface, which aids both developers and end users in debugging problems.
  • CFITSIO can be built on nearly every Unix platform with the usual './configure' and 'make' procedure. It supports 64-bit architectures.
  • A binary .dll library is available for Windows platforms.