Last changed 21 January 2004 by jeffh @ naic.edu

WAPP spectral line FITS Document

Spectral line observing the WAPP produces binary FITS files using SDFITS keywords. This document describes what FITS options are chosen and in place at this time. SDFITS defines the minimal conventional keywords. The goal here was to create a simple standard data file that is complex enough to meet our needs yet simple enough for observers to understand without a huge investment of time.

Here is the place you can get the FITS standard documents

The fits file as written has the following segments:

The details

Here is a drawing showing the file structure of a binary fits file with the varaible length array extension.

fits file format diagram

SDFITS and AO KEYWORDS

Here is one place you can find the definition of SDFITS.

The SDFITS and AO keywords as they exist today in the WAPP software are defined below. These are mostly the ones Mike Nolan uses in his interim correlator to fits data converter. I intend this as a starting point for discussion and not an imposition. The was a ridiculous requirement of AIPS++ that all entries are in double. I stopped following this. FITS readers that follow the FITS standard can read this file.

All entries are now in CAPS. At the end of the table, there is now a complete description of the state of the IFLO system. Every controlable switch (that I know about) is specified here.


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            
COMMENT   FITS (Flexible Image Transport System) format defined in Astronomy and
COMMENT   Astrophysics Supplement Series v44/p363, v44/p371, v73/p359, v73/p365.COMMENT   Contact the NASA Science Office of Standards and Technology for the   
COMMENT   FITS Definition document #100 and other FITS information.             
DATE    = '2004-01-15T13:50:58' / file creation date (YYYY-MM-DDThh:mm:ss UTC)  
TELESCOP= 'ARECIBO 305m'                                                        
HISTORY   Single-Dish FITS WAPP data, jeffh@naic.edu                            
END                                                                                       


... to 2880 byte boundary


XTENSION= 'BINTABLE'           / binary table extension
BITPIX  =                    8 / 8-bit bytes
NAXIS   =                    2 / 2-dimensional binary table
NAXIS1  =                  488 / width of table in bytes
NAXIS2  =                    2 / number of rows in table
PCOUNT  =              8013168 / file byte offset to start of heap
GCOUNT  =                    1 / one data group (required keyword)
TFIELDS =                   86 / number of fields in each row
DATE-OBS= '2004-01-15T13:50:58'/ Date and Time of File Start
ID      = 'a9999   '           / Experiment Project ID string
NMATRIX =                    1 / Required SD keyword
EXTNAME = 'SDFITS  '           / single dish fits
STIME   =                   20 / [ns] Correlator Sampling Interval
OBSMODE = 'LINE    '           / This file containes spectra
TELESCOP= 'ARECIBO 305m'       / Telescope name
SITELAT =  18.3435001 / Latitude (Geodetic, VLBI)
SITELONG= -66.7533035 / Longidude (Geodetic, VLBI)
SITEELEV=                  496 / Altitude above MSL
STARTON =                    0 / Start on 0,1, or 10 sec tick
TTYPE1  = 'DATA    '           / Field 1: Actual Data
TFORM1  = 'PE(16384)'          / Max data size
TUNIT1  = '        '           / physical unit of field
TTYPE2  = 'OBJECT  '           / Name of source observed
TFORM2  = '16A     '           /
TUNIT2  = '        '           /
TDISP2  = '16A     '           /
TTYPE3  = 'CTYPE1  '           / Axis type and Doppler Correction
TFORM3  = '8A      '           /
TUNIT3  = '        '           /
TDISP3  = '8A      '           /
TTYPE4  = 'CRVAL1  '           / Center Frequency
TFORM4  = '1D      '           /
TUNIT4  = 'Hz      '           /
TDISP4  = 'F12.1   '           /
TTYPE5  = 'CDELT1  '           / Frequency Interval
TFORM5  = '1D      '           /
TUNIT5  = 'Hz      '           /
TDISP5  = 'F8.1    '           /
TTYPE6  = 'CRPIX1  '           / Pixel of Center Frequency
TFORM6  = '1D      '           /
TUNIT6  = '        '           /
TDISP6  = 'F7.1    '           /
TTYPE7  = 'CRVAL2  '           / requested source RA
TFORM7  = '1D      '           /
TUNIT7  = 'deg     '           /
TDISP7  = 'F10.6   '           /
TTYPE8  = 'CRVAL3  '           / requested source DEC
TFORM8  = '1D      '           /
TUNIT8  = 'deg     '           /
TDISP8  = 'F11.6   '           /
TTYPE9  = 'CRVAL4  '           / Polarization (neg -> Pol, Pos -> Stokes)
TFORM9  = '1D      '           /
TUNIT9  = '        '           /
TDISP9  = 'F3.0    '           /
TTYPE10 = 'CRVAL5  '           / hours since midnight from obsdate
TFORM10 = '1D      '           /
TUNIT10 = 'h       '           /
TDISP10 = 'F6.0    '           /
TTYPE11 = 'OBSDATE '           / yyyymmdd start of this obs
TFORM11 = '8A      '           /
TUNIT11 = '        '           /
TDISP11 = 'A8      '           /
TTYPE12 = 'TSYS    '           / last computed Tsys
TFORM12 = '1D      '           /
TUNIT12 = 'K       '           /
TDISP12 = 'F6.1    '           /
TTYPE13 = 'BANDWID '           / Overall Bandwidth of spectrum
TFORM13 = '1D      '           /
TUNIT13 = 'Hz      '           /
TDISP13 = 'F8.0    '           /
TTYPE14 = 'RESTFREQ'           / Rest freq at band center
TFORM14 = '1D      '           /
TUNIT14 = 'Hz      '           /
TDISP14 = 'F11.0   '           /
TTYPE15 = 'VELOCITY'           / Requested Velocity
TFORM15 = '1D      '           /
TUNIT15 = 'km/s    '           /
TDISP15 = 'F6.1    '           /
TTYPE16 = 'JD      '           / Julian Day Number at Exposure Start
TFORM16 = '1D      '           /
TUNIT16 = 'day     '           /
TDISP16 = 'F13.5   '           /
TTYPE17 = 'LST     '           / Local Mean Siderial Time
TFORM17 = '1D      '           /
TUNIT17 = 'hours   '           /
TDISP17 = 'F9.3    '           /
TTYPE18 = 'EXPOSURE'           / Exposure
TFORM18 = '1D      '           /
TUNIT18 = 's       '           /
TDISP18 = 'F7.0    '           /
TTYPE19 = 'ENC_AZIMUTH'        / Encoder Azimuth on sky (not feed)
TFORM19 = '1D      '           /
TUNIT19 = 'deg     '           /
TDISP19 = 'F7.3    '           /
TTYPE20 = 'ENC_ELEVATIO'       / Encoder Elevation
TFORM20 = '1D      '           /
TUNIT20 = 'deg     '           /
TDISP20 = 'F6.3    '           /
TTYPE21 = 'ENC_ALTEL'          / Encoder Elevation of other Carriage House
TFORM21 = '1D      '           /
TUNIT21 = 'deg     '           /
TDISP21 = 'F6.3    '           /
TTYPE22 = 'OFF_RA  '           / Ra offset applied at req_time
TFORM22 = '1D      '           /
TUNIT22 = 'deg     '           /
TDISP22 = 'F13.5   '           /
TTYPE23 = 'OFF_DEC '           / Dec offset applied at req_time
TFORM23 = '1D      '           /
TUNIT23 = 'deg     '           /
TDISP23 = 'F13.5   '           /
TTYPE24 = 'OFF_CS  '           / Coordinate system of offs
TFORM24 = '8A      '           /
TUNIT24 = '        '           /
TDISP24 = 'A8      '           /
TTYPE25 = 'OFF_TIME'           / seconds from midnight ast
TFORM25 = '1D      '           /
TUNIT25 = 's       '           /
TDISP25 = 'F13.5   '           /
TTYPE26 = 'RATE_RA '           / rate of change of ra
TFORM26 = '1D      '           /
TUNIT26 = 'deg/sec '           /
TDISP26 = 'F13.5   '           /
TTYPE27 = 'RATE_DEC'           / rate of change of dec
TFORM27 = '1D      '           /
TUNIT27 = 'deg/sec '           /
TDISP27 = 'F13.5   '           /
TTYPE28 = 'RATE_CS '           / Coordinate system of rates
TFORM28 = '8A      '           /
TUNIT28 = '        '           /
TDISP28 = 'A8      '           /
TTYPE29 = 'RATE_DUR'           / How long has rate been applied
TFORM29 = '1D      '           /
TUNIT29 = 's       '           /
TDISP29 = 'F13.5   '           /
TTYPE30 = 'RATE_TIME'          / from midnight ast
TFORM30 = '1D      '           /
TUNIT30 = 's       '           /
TDISP30 = 'seconds '           /
TTYPE31 = 'CUR_TOL '           / computed great circle tolerance
TFORM31 = '1D      '           /
TUNIT31 = 's       '           /
TDISP31 = 'F13.5   '           /
TTYPE32 = 'REQ_TOL '           / requested tolerance
TFORM32 = '1D      '           /
TUNIT32 = 's       '           /
TDISP32 = 'F13.5   '           /
TTYPE33 = 'RAJ     '           / Ra J2000 back computed from az,za
TFORM33 = '1D      '           /
TUNIT33 = 'deg     '           /
TDISP33 = 'F13.5   '           /
TTYPE34 = 'DECJ    '           / Dec J2000 back computed from az, za
TFORM34 = '1D      '           /
TUNIT34 = 'deg     '           /
TDISP34 = 'F13.5   '           /
TTYPE35 = 'PATTERN_NAME'       / Name of pattern ONOFF CAL OFFON DRIFT ON OFF
TFORM35 = '8A      '           /
TUNIT35 = '        '           /
TDISP35 = '8A      '           /
TTYPE36 = 'OBS_NAME'           / Name of lowest obs ON OFF CALON CALOFF DRIFT
TFORM36 = '8A      '           /
TUNIT36 = '        '           /
TDISP36 = '8A      '           /
TTYPE37 = 'PATTERN_SCAN'       / unique number for pattern YDDDnnnnn
TFORM37 = '1J      '           /
TUNIT37 = '        '           /
TDISP37 = 'J9      '           /
TTYPE38 = 'OBS_SCAN'           / unique num for low-level observation YDDDnnnnn
TFORM38 = '1J      '           /
TUNIT38 = '        '           /
TDISP38 = 'J9      '           /
TTYPE39 = 'OBS_NUM '           / sequential observation number of obs_scans
TFORM39 = '1J      '           /
TUNIT39 = '        '           /
TDISP39 = 'J8      '           /
TTYPE40 = 'OBS_TOT '           / total number of obs_nums
TFORM40 = '1J      '           /
TUNIT40 = '        '           /
TDISP40 = 'J8      '           /
TTYPE41 = 'ENC_TIME'           / Time when enc_AZ and enc_ZA measured
TFORM41 = '1J      '           /
TUNIT41 = 'msec    '           /
TDISP41 = 'J8      '           /
TTYPE42 = 'LAGS_IN '           / number of Lags - same as bytes of data/4
TFORM42 = '1J      '           /
TUNIT42 = '        '           /
TDISP42 = 'F6.0    '           /
TTYPE43 = 'CORRMODE'           / Correlator Mode
TFORM43 = '24A     '           /
TUNIT43 = '        '           /
TDISP43 = 'A8      '           /
TTYPE44 = 'CALTYPE '           / Cal type
TFORM44 = '8A      '           /
TUNIT44 = '        '           /
TDISP44 = 'A8      '           /
TTYPE45 = 'FRONTEND'           / Receiver name
TFORM45 = '8A      '           /
TUNIT45 = '        '           /
TDISP45 = 'A8      '           /
TTYPE46 = 'PLAT_POWER'         / Power from platform meter
TFORM46 = '1D      '           /
TUNIT46 = '        '           /
TDISP46 = 'G10.3   '           /
TTYPE47 = 'CNTRL_POWER'        / Power from control room meter
TFORM47 = '1D      '           /
TUNIT47 = '        '           /
TDISP47 = 'G10.3   '           /
TTYPE48 = 'TOT_POWER'          / Scaled Power in zero-lag
TFORM48 = '1D      '           /
TUNIT48 = '        '           /
TDISP48 = 'F10.7   '           /
TTYPE49 = 'TCAL    '           / data
TFORM49 = '1D      '           /
TUNIT49 = 'add     '           /
TDISP49 = 'iflo    '           /
TTYPE50 = 'SYN1    '           / platform synthesizer
TFORM50 = '1D      '           /
TUNIT50 = 'Hz      '           /
TDISP50 = 'F10.7   '           /
TTYPE51 = 'SYNFRQ  '           / control room synthesizers
TFORM51 = '4D      '           /
TUNIT51 = 'Hz      '           /
TDISP51 = 'F10.7   '           /
TTYPE52 = 'NIFS    '           / number of ifs in this observation
TFORM52 = '1B      '           /
TUNIT52 = '        '           /
TDISP52 = 'B1      '           /
TTYPE53 = 'IFVAL   '           / which polarization, 0-1 or 0-3 for stokes
TFORM53 = '1B      '           /
TUNIT53 = '        '           /
TDISP53 = 'B1      '           /
TTYPE54 = 'ATTN_COR'           / Correlator attenuator 0-15
TFORM54 = '1B      '           /
TUNIT54 = '        '           /
TDISP54 = 'B1      '           /
TTYPE55 = 'FLIP    '           /  True if spectrum flipped
TFORM55 = '1B      '           /
TUNIT55 = '        '           /
TDISP55 = 'B1      '           /
TTYPE56 = 'WAPPNO  '           / WAPP number 0-3 or 0-7 for ALFA
TFORM56 = '1B      '           /
TUNIT56 = '        '           /
TDISP56 = 'B1      '           /
TTYPE57 = 'MASTER  '           / 0 greg 1 carriage house
TFORM57 = '1B      '           /
TUNIT57 = '        '           /
TDISP57 = 'B1      '           /
TTYPE58 = 'ONSOURCE'           /  if onsource at enc_time
TFORM58 = '1B      '           /
TUNIT58 = '        '           /
TDISP58 = 'B1      '           /
TTYPE59 = 'BLANKING'           /  Blanking turned on
TFORM59 = '1B      '           /
TUNIT59 = '        '           /
TDISP59 = 'B1      '           /
TTYPE60 = 'LBWHYB  '           / LBandWide Hybrid is in (for circular pol)
TFORM60 = '1B      '           /
TUNIT60 = '        '           /
TDISP60 = 'B1      '           /
TTYPE61 = 'SHCL    '           / true if receiver shutter closed
TFORM61 = '1B      '           /
TUNIT61 = '        '           /
TDISP61 = 'B1      '           /
TTYPE62 = 'SBSHCL  '           / true if Sband receiver shutter closed
TFORM62 = '1B      '           /
TUNIT62 = '        '           /
TDISP62 = 'B1      '           /
TTYPE63 = 'RFNUM   '           / platform position of the receiver selectror
TFORM63 = '1B      '           /
TUNIT63 = '        '           /
TDISP63 = 'B1      '           /
TTYPE64 = 'ZMNORMAL'           / platform transfer switch to reverse channels, t
TFORM64 = '1B      '           /
TUNIT64 = '        '           /
TDISP64 = 'B1      '           /
TTYPE65 = 'RFATTN  '           / platform attenuator position
TFORM65 = '2B      '           /
TUNIT65 = '        '           /
TDISP65 = 'B1      '           /
TTYPE66 = 'IFNUM   '           / platform if selector, 1/300 2/750, 3/1500, 4/10
TFORM66 = '1B      '           /
TUNIT66 = '        '           /
TDISP66 = 'B1      '           /
TTYPE67 = 'IFATTN  '           / platform IF attenuator positions
TFORM67 = '2B      '           /
TUNIT67 = '        '           /
TDISP67 = 'B1      '           /
TTYPE68 = 'FIBER   '           / true if platform fiber is chosen (always the caTFORM68 = '1B      '           /
TUNIT68 = '        '           /
TDISP68 = 'B1      '           /
TTYPE69 = 'AC2SW   '           / platform ac power to various instruments and ot
TFORM69 = '1B      '           /
TUNIT69 = '        '           /
TDISP69 = 'B1      '           /
TTYPE70 = 'PHBSIG  '           / platform converter combiner signal phase adjust
TFORM70 = '1B      '           /
TUNIT70 = '        '           /
TDISP70 = 'B1      '           /
TTYPE71 = 'HYBRID  '           / platform converter combiner hybrid
TFORM71 = '1B      '           /
TUNIT71 = '        '           /
TDISP71 = 'B1      '           /
TTYPE72 = 'PHBLO   '           / settings
TFORM72 = '1B      '           /
TUNIT72 = 'control '           /
TDISP72 = 'room    '           /
TTYPE73 = 'XFNORMAL'           / control room transfer switch true = deflt
TFORM73 = '1B      '           /
TUNIT73 = '        '           /
TDISP73 = 'B1      '           /
TTYPE74 = 'NOISE   '           / control room noise on
TFORM74 = '1B      '           /
TUNIT74 = '        '           /
TDISP74 = 'B1      '           /
TTYPE75 = 'GAIN    '           / gain of control room amps
TFORM75 = '2B      '           /
TUNIT75 = '        '           /
TDISP75 = 'B1      '           /
TTYPE76 = 'INPFRQ  '           / control room input distributor position
TFORM76 = '1B      '           /
TUNIT76 = '        '           /
TDISP76 = 'B1      '           /
TTYPE77 = 'MIXER   '           / control room mixer source switches
TFORM77 = '4B      '           /
TUNIT77 = '        '           /
TDISP77 = 'B1      '           /
TTYPE78 = 'VLBAINP '           / control room vlba input switch position
TFORM78 = '1B      '           /
TUNIT78 = '        '           /
TDISP78 = 'B1      '           /
TTYPE79 = 'AMPINP  '           / control room amplifier input source switches
TFORM79 = '4B      '           /
TUNIT79 = '        '           /
TDISP79 = 'B1      '           /
TTYPE80 = 'EXTINP  '           / control room external input selector switches
TFORM80 = '4B      '           /
TUNIT80 = '        '           /
TDISP80 = 'B1      '           /
TTYPE81 = 'SYNDEST '           / control room synthesizer destinations
TFORM81 = '4B      '           /
TUNIT81 = '        '           /
TDISP81 = 'B1      '           /
TTYPE82 = 'CALSRC  '           / control room cal source bit
TFORM82 = '1B      '           /
TUNIT82 = '        '           /
TDISP82 = 'B1      '           /
TTYPE83 = 'VIS30MHZ'           / control room greg 1 ch 0
TFORM83 = '1B      '           /
TUNIT83 = '        '           /
TDISP83 = 'B1      '           /
TTYPE84 = 'PWRMET  '           / control room power meter input switch
TFORM84 = '1B      '           /
TUNIT84 = '        '           /
TDISP84 = 'B1      '           /
TTYPE85 = 'BLANK430'           / control room 430 blanking on
TFORM85 = '1B      '           /
TUNIT85 = '        '           /
TDISP85 = 'B1      '           /
TTYPE86 = 'FILL    '           / fill
TFORM86 = '7B      '           /
TUNIT86 = '        '           /
TDISP86 = 'B1      '           /
THEAP   =              7997760 / byte off to strt of heap from btable strt
END