NOTICE:

This Legacy journal article was published in Volume 1, May 1992, and has not been updated since publication. Please use the search facility above to find regularly-updated information about this topic elsewhere on the HEASARC site.

FITSIO and other FITS-related activities

at the HEASARC

William Pence

HEASARC


The HEASARC has begun a strong program of FITS[1]-related activities which forms a central component in its plans to develop an archive for data from past, present, and future high-energy astrophysics missions. Our current activities can be divided into several categories:

  • developing a software interface for reading or writing FITS format data files
  • designing and promoting FITS format standards for high energy data products
  • converting existing archival data into FITS format
  • distributing FITS data products on CD-ROM
  • modifying HEASARC supported software packages to directly read or write FITS format data files
  • developing general utility software to manipulate FITS files

FITSIO - a software interface for reading and writing FITS files

Since many of the HEASARC projects and activities involve dealing with data in FITS format, it is important to have a simple and efficient way to read and write FITS files. As the FITS formats have become more complicated over the years, especially with the introduction of the new binary table extension, it has become more difficult and time-consuming to write software to read or write them. So, rather than having to devote considerable effort in developing software for each particular new FITS file that came along, it was preferable in the long run to write a general subroutine interface package which could handle any type of FITS file. For this reason I wrote the FITSIO subroutine package; version 2.0 of this was publicly released in May 1991, and the latest version 3.2 was released in March 1992.

FITSIO is a machine-independent Fortran-77 subroutine interface for reading or writing data files in the FITS format. This package was written to provide an easy-to-use interface for accessing FITS files which insulates the programmer from having to deal with the complicated formatting details in the FITS file. The FITSIO package contains about 15,000 lines of ANSI-standard Fortran-77 code, most of which is machine independent; however, a small set of machine-specific subroutines are also provided for most popular computers including VAX/VMS, DECstations, Sun workstations, IBM PC's, and IBM mainframes. It supports all the commonly-used types of FITS files, including 'random grouped' data, and ASCII and binary table extensions. One of the main features of FITSIO is that it provides random access I/O capabilities which allow users to read or write information in the FITS file in any desired order. However, because of this, the package is oriented to FITS files on magnetic disk and does not support magnetic tape devices. Subroutines are provided in the FITSIO package to perform all the required types of operations on FITS files, such as: open and close files, read, write, modify, or delete header keyword values, and read or write any element of the associated data array or table. The package also contains extensive error checking to help verify that the file has a valid FITS format.

The FITSIO software is freely available from the HEASARC via either anonymous ftp or the DECNET COPY command. To copy the files using ftp, type the following command at the computer operating system prompt:

ftp tetra.gsfc.nasa.gov

or

ftp 128.183.8.77

Then type the following responses (comments appear in brackets and should not be typed on the command line):

ftp> user anonymous 
Password:  		[type your name as the password] 
ftp> cd pub/fitsio3	[to move to the fitsio (Version 3) subdirectory] 
ftp> ls			[to see a list of available files]
ftp> get read.me 	[contains latest information about FITSIO] 
ftp> get fitsio.doc	[complete user documentation for FITSIO]
ftp> get ...		[continue getting any other desired files]
ftp> quit		[close the ftp connection and exit]
Alternatively, the FITSIO files may be copied over the SPAN network from the following directory:

NDADSA::HEASARC:[EXOSAT.XANADU.FITSIO.VERSION3]
or
15761::HEASARC:[EXOSAT.XANADU.FITSIO.VERSION3]

Any questions, bug reports, or suggested enhancements related to the FITSIO package should be sent to the author:

pence@tetra.gsfc.nasa.gov

Development of FITS Format Standards for High Energy Data Products

One of the goals of the HEASARC is to design and promote uniform format standards for different types of high energy data files in order to make it easier for both users and data analysis software to deal with data from different sources. This is an ambitious goal and it may be difficult to reach a consensus among the high energy community on standard formats. Nonetheless, the HEASARC is approaching this problem from two directions: in a top-down approach we are defining guidelines for the FITS format of various general classes of data files, such as event lists, spectra, or light curves, and in a bottom up approach we are designing formats for specific data files which adhere to and illustrate the general guidelines.

Currently we are still developing the general guidelines, and drafts of these will be circulated for comments in a future addition of this journal as well as via other available mechanisms such as the WGAS electronic mail distribution service and the alt.sci.astro.fits news group. For now, though, we can present two specific FITS file examples, one for a spectrum and one for a light curve, which are listed at the end of this article. Both of these files were generated from a observation using the Solid State Spectrometer on the Einstein (HEAO-2) Observatory. The format of the spectral file consists of a primary array containing the response matrix, followed by a binary table extension containing the observed flux, error estimates and other quantities for each detector channel. The light curve file has an empty primary array (NAXIS =0) and a binary table extension containing the observed flux rate tabulated at different times. These examples are presented here both to stimulate discussion (we would like to hear from anyone who has comments about the file formats or on our choice of keyword or column names) and to encourage others who are in the process of designing their own file formats to adopt similar formats.

Conversion of Existing Archival Data into FITS Format

The HEASARC currently has available many gigabytes of high-energy data from past X-ray and gamma-ray missions, however, almost all of these data exist in mission-specific and computer-specific formats which make it difficult for archival researchers to effectively use the data. One of the long term plans of the HEASARC is to gradually convert these data sets into FITS format to make them more accessible.

As the first step in this process, we have now completed converting the following data products into FITS format:

  • all the Solid-State-Spectrometer observations taken during the lifetime of the Einstein observatory.
  • all the Monitor Proportional Counter (MPC) observations coinciding with the SSS observations
  • all the observations made with the Focal Plane Crystal Spectrometer (FPCS) on Einstein

We plan to continue this program of converting data from other missions into FITS format as time and resources permit. The order in which we process the files will be influenced to a certain extent by community interest, so if there is a particular high energy data set you would like to see available in FITS format, please let us know.

Distribution of FITS data products on CD-ROMs

CD-ROMs provide a convenient and inexpensive medium for distributing data sets to users, and the HEASARC plans to issue many of the FITS data sets that it produces on this medium. The first CD-ROM will be available in May 1992 and will contain all the data sets described in the previous section. The contents of future CD-ROMs has not yet been determined, but new issues will be released at 6 - 12 month intervals.

Modification of Analysis Packages to Directly Read or Write FITS Format Data Files

In parallel with the above efforts to convert data files to FITS format, the HEASARC is also modifying its analysis software to be able to directly read the FITS format files. The XIMAGE image analysis and the XSPEC spectral analysis packages have already been converted. The XRONOS (timing analysis) package will be converted in the near future. Notice that this extends the use of FITS format files beyond the traditional role of merely exchanging data between different software environments. With the advent of the FITSIO software, it is now practical to directly use FITS as an internal data analysis format. One advantage of this approach is that it is only necessary to archive and maintain a single format of each file, which can then be directly read on any machine without any intermediate format conversion step.

FTOOLS - A General Package of Software to Manipulate FITS Files

As the final component of the HEASARC FITS plans, the HEASARC is undertaking a major software development project to produce a generic set of software utilities to manipulate FITS files. Each utility task will be designed to perform one simple task, such as extracting specified columns or rows from a FITS table, sorting the elements in a column, or printing the contents of a FITS file. For readers familiar with the STSDAS software package, this set of FITS utilities will be analogous to the TTOOLS set of tasks except that it will operate on FITS files instead of SDAS tables and hence it is called the FTOOLS package. This package will form the core of the HEASARC software system for reducing and analyzing data files in FITS format.

One of the main requirements on the FTOOLS software package is that it must be compatible with IRAF (the widely used data analysis package developed at NOAO) yet it must also run without any IRAF dependencies in order that the HEASARC can support both IRAF and non-IRAF users. The way this has been done is illustrated in Figure 1. First, the main body of all the FTOOLS code is written in strict ANSI standard Fortran-77 so that it is easily portable. Secondly, all the interfaces to the user (or command language) and to data files are isolated through a standard set of subroutine calls. All input and output to data files is done either to FITS files using the machine-independent FITSIO subroutine interface, or in a few cases, to simple ASCII-format text files. The interface to the user, to obtain input parameters and to return results, is based on the Fortran-77 Interface for IRAF developed at the Space Telescope Institute. As with all IRAF tasks, this interface uses an ASCII-format parameter file as the basis of all user I/O, and for interprocess communication.

The difference between making an IRAF version of the FTOOLS tasks or a stand-alone (non-IRAF) version is basically a matter of linking to the appropriate interface library. As shown on the left side of Figure 1, the FTOOLS Fortran code is linked with the IRAF Fortran-77 library to create an IRAF version. The resulting task is then 100% IRAF compatible and can be fully integrated in a script with any other IRAF task. Alternatively, to create a stand-alone version of the task, the same FTOOLS Fortran code is linked to a different interface library, as shown on the right hand side of the figure. We are currently using a prototype version of this library, which was developed at the SAO by Eric Mandel and John Roll, but expect that the full version will be available by the time this newsletter is published. The stand-alone version of the task can then simply be run from the native computer operating system prompt (one does not have to start up the IRAF CL which is needed for IRAF tasks) yet it has the same look and feel of an IRAF task in that it prompts the user for input parameters just as an IRAF task does and it provides all the usual parameter range checking and command line parsing features as in IRAF. In both cases, the tasks talk to the identical IRAF format parameter file.

The first build of the FTOOLS tasks was recently completed, and it successfully demonstrated that the tasks could be run in both the IRAF and the non-IRAF environments. Consequently, this same software development approach is now being adopted for other projects within the HEASARC. Work on more of the FTOOLS tasks is continuing, and a first release of the FTOOLS software will be made in mid 1992.

figure 1

FITS file example: SSS spectrum header

 SIMPLE  =                    T / file does conform to FITS standard
 BITPIX  =                  -32 / number of bits per data pixel
 NAXIS   =                    0 / number of data axes
 EXTEND  =                    T / FITS dataset may contain extensions
 
 CONTENT = 'SPECTRUM'           / file contains spectrum
 DATE    = '20/12/91'           / date this FITS file was created (dd/mm/yy)
 ORIGIN  = 'HEASARC/GSFC'       / organization which created this file
 TELESCOP= 'EINSTEIN'           / also known as HEAO-2
 INSTRUME= 'SSS     '           / Solid State Spectrometer
 OBJECT  = 'X0535+262'          / observed object
 RA      =           83.9458313 / right acension of target (decimal degrees)
 DEC     =           26.2886105 / declination of the target (decimal degrees)
 EQUINOX =               1950.0 / equinox of celestial coord. system
 DATE-OBS= '25/03/79'           / date observations were made (dd/mm/yy)
 TIME-OBS= '17:38:16'           / time observations were made (hh:mm:ss)
 DATE-END= '25/03/79'           / date observations ended (dd/mm/yy)
 TIME-END= '19:46:34'           / time observations ended (hh:mm:ss)

END ========================================== *** No Primary Array *** ========================================== XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / 8-bit bytes NAXIS = 2 / 2-dimensional binary table NAXIS1 = 12 / width of table in bytes NAXIS2 = 128 / number of rows in table PCOUNT = 0 / size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 4 / number of fields in each row TTYPE1 = 'CHANNEL ' / detector channel number TFORM1 = 'I ' / data format of the field: 2-byte INTEGER TTYPE2 = 'RATE ' / observed event count rate TFORM2 = 'E ' / data format of the field: 4-byte REAL TUNIT2 = 'COUNTS/S' / physical unit of field TTYPE3 = 'STAT_ERR_RATE' / statistical rms error on the count rate TFORM3 = 'E ' / data format of the field: 4-byte REAL TUNIT3 = 'COUNTS/S' / physical unit of field TTYPE4 = 'DQF ' / data quality flag TFORM4 = 'I ' / data format of the field: 2-byte INTEGER EXTNAME = 'SPECTRUM' / name of this binary table extension TELESCOP= 'EINSTEIN' / also known as HEAO-2 INSTRUME= 'SSS ' / Solid State Spectrometer OBJECT = 'X0535+262' / observed object RA = 83.9458313 / right acension of target (decimal degrees) DEC = 26.2886105 / declination of the target (decimal degrees) EQUINOX = 1950.0 / equinox of celestial coord. system DATE-OBS= '25/03/79' / date observations were made (dd/mm/yy) TIME-OBS= '17:38:16' / time observations were made (hh:mm:ss) DATE-END= '25/03/79' / date observations ended (dd/mm/yy) TIME-END= '19:46:34' / time observations ended (hh:mm:ss) STRTTIME= -24301304 / obs. start time (seconds from 01/01/80) STOPTIME= -24293606 / obs. stop time (seconds from 01/01/80) EXPOSURE= 3358.7199707 / integration time (seconds) MEANEPOC= 449.7778320 / mean obs time (decimal day of year 1978) MAJORFRM= 1830 / major frame start time MINORFRM= 120 / minor frame start time NEXPOSE = 5 / total number of exposures EXPOS1 = 1761.2799072 / length of exposure (seconds) EXPOS2 = 1597.4399414 / length of exposure (seconds) EXPOS3 = 0.0000000 / length of exposure (seconds) EXPOS4 = 0.0000000 / length of exposure (seconds) EXPOS5 = 0.0000000 / length of exposure (seconds) MEPOC1 = 449.7460938 / mean epoch of exposure (day of 1978) MEPOC2 = 449.8129883 / mean epoch of exposure (day of 1978) MEPOC3 = 449.0000000 / mean epoch of exposure (day of 1978) MEPOC4 = 449.0000000 / mean epoch of exposure (day of 1978) MEPOC5 = 449.0000000 / mean epoch of exposure (day of 1978) EFFAREA = 180.00 / on-source detector area (cm**2) BACKSCAL= 1.000 / background scale factor CORRSCAL= 0.000 / correction scale factor JCGPARM = 110.00000 / background prediction parameter DEADTIME= 4030000.0 / dead time parameter MEAN_ICE= 1.40 / mean water ice coating on detector BACKFILE= 'a053526.bk' / background FITS file for this object RESPFILE= 'a053526.rs' / response FITS file for this object CORRFILE= 'a053526.cr' / correction FITS file for this object COMMENT This table summarizes an X-ray spectrum observed with the Solid COMMENT State Spectrometer on the EINSTEIN (HEAO-2) satellite. For each COMMENT of the 128 detector channels the table lists the following values: COMMENT COMMENT CHANNEL detector channel number (1-128) COMMENT RATE observed photon count rate before background subtraction COMMENT STAT_ERR_RATE statistical rms error of the count RATE COMMENT DQF data quality flag (0=bad, 1=good) COMMENT COMMENT The first 14 channels and the last 20 channels out of the 128 SSS COMMENT detector channels did not produce any useful data, therefore the COMMENT corresponding quantities for these channels are all set equal to COMMENT an IEEE NaN value (all bits set to 1). HISTORY Input PHA spectrum file = SA053526.PHA END FITS file example: SSS light curve header SIMPLE = T / file does conform to FITS standard BITPIX = 8 / number of bits per data pixel NAXIS = 0 / number of data axes EXTEND = T / FITS dataset may contain extensions CONTENT = 'RATEFILE' / file contains rate data ORIGIN = 'HEASARC/GSFC' / High Energy Astrophys. Sci. Arch. Res. Center DATE = '19/12/91' / file creation date (dd/mm/yy) TELESCOP= 'Einstein' / mission name (also known as HEAO-2) INSTRUME= 'SSS ' / Solid-State Spectrometer OBJECT = 'X0535+262' / name of observed object RA = 83.945831 / R.A. of object (deg) DEC = 26.288610 / Declination of object (deg) EQUINOX = 1950.0 / equinox of celestial coord. system DATE-OBS= '25/03/79' / UT date of sequence start (DD/MM/YY) TIME-OBS= '17:38:18' / UT time of sequence start (hh:mm:ss) DATE-END= '25/03/79' / UT date of sequence end (DD/MM/YY) TIME-END= '19:46:39' / UT time of sequence end (hh:mm:ss) END ========================================== *** No Primary Array *** ========================================== XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / 8-bit bytes NAXIS = 2 / 2-dimensional binary table NAXIS1 = 10 / width of table in bytes NAXIS2 = 48 / number of rows in table PCOUNT = 0 / size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 3 / number of fields in each row TTYPE1 = 'TIME ' / time of measurement TFORM1 = 'I ' / data format of field 1: 2-byte INTEGER TUNIT1 = 's ' / physical unit of field TTYPE2 = 'RATE ' / observed event count rate TFORM2 = 'E ' / data format of field 2: 4-byte REAL TUNIT2 = 'counts/s' / physical unit of field TTYPE3 = 'STAT_ERR_RATE' / statistical rms error on the count rate TFORM3 = 'E ' / data format of field 3: 4-byte REAL TUNIT3 = 'counts/s' / physical unit of field EXTNAME = 'RATEFILE' / name of this binary table extension TSCAL1 = 8.191998291016E+01 / scaling factor for column 1 TZERO1 = -2.430134295999E+07 / scaling zero point for column 1 DATEZERO= '01/01/80' / UT date zero point of TIME column (DD/MM/YY) TIMEZERO= '00:00:00' / UT time zero point of TIME column (hh:mm:ss) BARYTIME= F / barycentric correction not applied to times DEADCORR= F / detector deadtime correction not applied TELESCOP= 'Einstein' / mission name (also known as HEAO-2) INSTRUME= 'SSS ' / Solid-State Spectrometer OBJECT = 'X0535+262' / name of observed object RA = 83.945831 / R.A. of object (deg) DEC = 26.288610 / Declination of object (deg) EQUINOX = 1950.0 / equinox of celestial coord. system DELTIME = 8.191998291016E+01 / time interval between measurements (seconds) RATEMEAN= 3.2740 / mean count rate of the observation (counts/s) RATERMS = 0.0290 / RMS error of RATEMEAN (counts/s) DATE-OBS= '25/03/79' / UT date of sequence start (DD/MM/YY) TIME-OBS= '17:38:18' / UT time of sequence start (hh:mm:ss) DATE-END= '25/03/79' / UT date of sequence end (DD/MM/YY) TIME-END= '19:46:39' / UT time of sequence end (hh:mm:ss) DATEDEFR= '23/03/79' / UT date of last instrument defrost (DD/MM/YY) TIMEDEFR= '17:16:48' / UT time of last instrument defrost (hh:mm:ss) RATEPARM= 1523 / Rate parameter value OPTORATE= 2.000 / Opto Rate parameter value MINCHAN = 20 / minimum included detector energy (PHA) channel MAXCHAN = 75 / maximum included detector energy (PHA) channel COMMENT COMMENT This table contains a time series of X-ray flux measurements COMMENT derived from observations taken with the Einstein Solid State COMMENT Spectrometer. The first column defines the midpoint in time of COMMENT the integration bin, the second column gives the measured flux COMMENT rate in counts per second, and the third column gives the COMMENT statistical RMS error on the count rate. There may be gaps in COMMENT the data due to earth occultations or other reasons. The times COMMENT given here refer to the photon arrival time at the spacecraft; COMMENT no barycentric correction has been applied. COMMENT COMMENT Note that the TIME column contains Integer*2 values which COMMENT represent the sequential bin number of the measurement. COMMENT The midpoint in time of the corresponding measurement in seconds COMMENT relative to January 1, 1980 (the zero point is defined by the COMMENT DATEZERO and TIMEZERO keywords) is given by scaling the COMMENT bin number by the TSCAL1 and TZERO1 keyword values, i.e., COMMENT Time (in seconds) = bin number * TSCAL1 + TZERO1 COMMENT HISTORY Input RBF rate file = SA053526.RBF;2 END


Next Proceed to the next article Previous Return to the previous article

Contents Select another article



HEASARC Home | Observatories | Archive | Calibration | Software | Tools | Students/Teachers/Public

Last modified: Monday, 19-Jun-2006 11:40:52 EDT