Skip to main content

Come analyze HEASARC, IRSA, and MAST data in the cloud! The Fornax Initiative is now welcoming all interested beta users.

Why use the CFITSIO Library?

There are many reasons why CFITSIO is the most widely used FITS interface library.

  • 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 Doug Mink's more extensive WCS library (but has no linkage dependencies on the WCS library)
  • 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:
    • 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.