RPFITS is the data-recording format used since the mid-1980s within the Australia Telescope National Facility (ATNF).
RPFITS is used to record synthesis visibility data obtained from the Australia Telescope Compact Array (ATCA) at Narrabri, NSW. It is also used for single-dish spectral line data obtained from Parkes and Mopra, including Parkes multibeam data.
While RPFITS superficially resembles random group FITS it differs in the following important respects:
GCOUNT
header parameter, which is meant to record the
number of random groups, is normally set to zero because, as a streaming
format, there is no way of knowing the ultimate length of the data when
the header is written.
'SIMPLE ='
rather than
'XTENSION='
. Moreover, while so-called "RPFITS
tables" are mostly implemented using a private convention as a
contiguous set of keyrecords at the end of the header, the flag (FG)
table is written after the data in a header that begins with the string
'TABLE FG'
.
These differences make RPFITS incompatible with standard FITS software such as FITSIO and FTOOLS and, in particular, precludes the use of fv, a powerful GUI-based FITS browser/editor. However, a translator, rp2sdfits, is available that converts RPFITS single-dish data to SDFITS format that is based on standard FITS binary tables. rp2sdfits is available as part of the livedata/gridzilla package.
The Fortran library distributed here contains routines for reading and writing
RPFITS files. A header file, RPFITS.h
, is provided to facilitate
usage by C and C++ applications. Also included is rpfhdr, a utility
for viewing RPFITS headers (it also works for standard FITS), and rpfex
for extracting selected scans from an RPFITS file.
In addition to the source code distribution kit, the following RPFITS binary distributions are available:
Libraries and binary utilities for 64-bit linux (x86_64) systems compiled on a machine running Debian 8.11 "jessie" using gfortran/gcc 4.9.2.
Libraries and binary utilities for
Apple Macs compiled on a machine running Darwin 15.6.0 (MacOSX
10.14) using gfortran 8.2.0 (Homebrew). The binaries provided are for the x86_64
architecture only, which should be compatible with most newer Macs -- the
MACHTYPE
environment variable should be set to x86_64
on login (ignore the output of the arch command).
Note that each binary distribution kit contains a GNU makefile that supplies architecture-specific definitions for the template GNU makefile supplied with the source code kit. For the linux64 version there is an option to create a shared library. Use "make sharedlib" to create it. This and related targets can be found in the file Makefile.shared.
linux (32bit) binaries are no longer provided as of version 2.25
Solaris 2.9 binaries are no longer provided as of version 2.24.
Mac (i386) binaries are no longer provided as of version 2.22.
Mac (ppc) binaries are no longer provided as of version 2.18.
DEC alpha binaries are no longer provided as of version 2.5.
SunOS 4.1.3 binaries are no longer provided as of version 2.5.
SGI binaries are no longer provided as of version 2.2.
Dates in the version 2 RPFITS header are in the new standard year-2000-compatible format which is not readable by the version 1 RPFITS reader. Version 1 dates are, however, backwards compatible with the version 2 reader.
Data has been written at the Australia Telescope Compact Array (ATCA) in the new format since 1998/10/06. Similarly for the Parkes telescope.
Version 2.25 (2018/10/26): Small change in the source code to fix issue identified by gfortran8 and some makefile changes to do with shared libraries
Version 2.24 (2017/01/17): The only change in this release is the addition of the CSIRO Open Source Software License Agreement, so the code can be distributed and packaged freely.
Version 2.23 (2011/03/29): Persuant to the previous two changes,
rpfits_tables.f
was modified to read and write SX
(extended source) tables. These are a slightly modified form of
SU
tables that allow for 1000 or more sources. The older
SU
tables are still written if there are fewer than 1000 sources
so this change is only significant for
CABB
data.
As this change entails an extension of the RPFITS format itself, the version number recorded in the RPFITS header has been incremented to 2.12.
Version 2.22 (2011/03/24): Persuant to the previous change, in
RPFITSOUT
, increased MAX_HEADER
from 650 to 2240
to allow for the larger number of sources (mosaic pointings) and IFs. This
change should not affect most users.
Version 2.21 (2010/12/08): Increased the maximum number of IFs handled,
MAX_IF
in rpfits.inc
and RPFITS.h
,
from 16 to 48, and the maximum number of sources (mosaic pointings),
MAX_SU
, from 500 to 2048 for
CABB. Also increased the maximum number of antennas,
ANT_MAX
, from 15 to 16.
Version 2.20 (2010/06/10): Added a -d option to rpfex to dissect the file - each of the selected scans is written to a separate output file.
The darwin_x86 architecture is now simply darwin (as darwin_ppc is no longer supported).
Version 2.19 (2008/10/27): Ensure that non-negative source RAs are written by
RPFITSOUT
and read by RPFITSIN
. Such were written
for ATCA mosaic data with pointing centres straddling RA = 0h, causing
problems for Miriad task GPSCAL
.
Version 2.18 (2008/09/11): Fortran STOP
statements were removed
from the "table"-reading routines used by RPFITSIN
and replaced
with an error return mechanism. The STOP
statements caused
livedata to crash on a corrupted input file.
Error message handling in RPFITSIN
was generalized to provide
control over what LUN
to write to (default 6), or to disable
output altogether. In either case the message is passed out via
COMMON
, refer to the prologue comments in rpferr.f
.
Application programs should now have much better control over message logging.
darwin_ppc binaries are no longer provided.
Version 2.17 (2007/07/16): When assigning a Fortran logical unit number, check whether it may already be in use by non-RPFITS code.
Version 2.16 (2007/01/30): RPFITS.h
was modified for better
conformance with C and C++ usage. There were no changes to the RPFITS library
itself (being written in Fortran it does not use RPFITS.h
).
In particular the declaration of subroutine arguments as global variables has
been removed to avoid multiple definitions if RPFITS.h
is
included in two or more library modules. The MaxNChan
and
MaxNPol
enums that were used to dimension the vis[]
and weight[]
arrays have also been removed - C and C++ code
should allocate memory as required based on parameters read from the RPFITS
header. These two changes will probably necessitate changes to C or C++
application code that uses RPFITS.h
. A function prototype has
also been added for RPFITSOUT
together with a number of lesser
changes.
According to the
online manpage for freopen
(cf. the COMPATIBILITY section),
Darwin supports large files natively; it does not have freopen64
or fseeko64
but freopen
and fseeko
should suffice to read files >2GiB. rpfhdr and rpfex
were modified accordingly and binaries are now supplied.
Version 2.15 (2006/10/26): replaced usage of the non-standard
TIME
and GMTIME
Fortran intrinsics (which are not
supported by gfortran) with a wrapper on the corresponding unix
system C-library functions, time(2)
and gmtime(3)
.
The darwin architecture has now been split into darwin_ppc and darwin_x86.
Version 2.14 (2006/08/01): rpfhdr and rpfex now support
large files. Also added comments to the linux GNUmakefile
indicating options to use for the gfortran compiler (no changes to
the RPFITS library itself).
Version 2.13 (2006/07/11): Renamed the INDEX COMMON
to
IOSTAT
to avoid a conflict with the intrinsic function of the
same name; gfortran objected to this violation of the Fortran 77
standard. The distribution kit now also includes rpfex, a utility
for extracting selected scans from an RPFITS file.
Version 2.13.1 (2006/07/17): Added support for building on Mac OS X systems (darwin architecture).
Version 2.12 (2006/07/07): The distribution kit now includes the rpfhdr utility (no changes to the RPFITS library itself).
Version 2.11 (2006/07/06): RPFITSIN
now extracts the
BUNIT
and OBSTYPE
keyvalues into new
CHARACTER*16
variables of the same name in the NAMES
COMMON
, and RPFITSOUT
now sets the BUNIT
keyrecord to the value supplied via this COMMON
.
Version 2.10 (2006/07/04): Changed the CARD
mechanism in
RPFITSIN
so that only the first eight characters are tested and
all blanks are significant (i.e. the "FITS" keyword). Previously 12
characters were tested with trailing blanks ignored, and the whole header
keyrecord then replaced the particular CARD
variable. However,
since these 12 characters might have included a portion of the keyvalue the
test was thereby changed.
Version 2.9 (2006/06/20): Increased the maximum number of IFs supported from 8 to 16 for the MOPS correlator.
Version 2.8 (2004/08/25): RPFITSIN
checks for corrupted "data
format" values stored as the eleventh random parameter.
Version 2.7 (2004/07/01) accounts for DATE-OBS
in the form
DD/MM/YYYY. This is only known to have happened once, at the ATCA on
18/11/1998 when the date format was changed from DD/MM/YY to YYYY-MM-DD. Also
fixed a bug in decoding datsys
from the DATE-OBS
header keyrecord.
Version 2.6 (2004/06/10) increases the input file name length in
RPFITSIN
from 80 to 256 characters. It also includes
RPFITS.h
which defines global enums and structs for RPFITS usage
in C and C++ code.
Version 2.5 (2003/11/03) fills SU_PRA(K)
and
SU_PDEC(K)
in the DOUBLES COMMON
.
Version 2.4 (2001/06/04) fixes the floating point conversion problem on linux
systems similar to that of version 2.2 but arising in a different context. It
sporadically affected the random parameters, in particular the MJD (UTC) was
occasionally found to be in error by 0.5 day. The problem affected both
RPFITSOUT
and RPFITSIN
.
Version 2.3 (2001/05/31) fixes a problem with logical unit number handling that restricted the number of files that could be processed to 100. This affected livedata which runs continuously at Parkes processing hundreds of RPFITS files in succession. However, it is unlikely to be of general concern.
Version 2.2 (2001/02/09) differs from 2.1 mainly in fixing a problem with RPFITSOUT on linux systems. The conversion from the native IEEE little-endian floating point to output VAX floating was found to introduce errors of order 2-17 in certain circumstances. Specifically, this occurred for values where the VAX floating representation happened to correspond to a "signalling NaN" when interpreted as an IEEE value. The signalling NaN was implicitly converted to a "quiet NaN" through floating point assignment by flipping one bit. The code was rewritten to avoid such assignments.
The problem manifested itself when integration times of 9.5s or 10.5s (instead of 10.0s) were computed as a result of subtracting two moderately large, closely separated UTs.
Version 2.1 (2000/06/14) is the first versioned release of the RPFITS library.
RPFITS is maintained by
Mark.Wieringa at csiro.au
Last Modified: 2017/01/17