Subject: Green Bank FITS programs

From: [email-masked]
Date: Mon, 4 Jun 1990 13:06:24 EDT

SINGLE-DISH FITS TABLES AT GREEN BANK
by F. Ghigo, June 1, 1990

INTRODUCTION
The single-dish binary tables format has been implemented for data 
from the Green Bank 140-ft telescope.  These notes describe some 
aspects of this version. Following the notes is a list of all the 
columns in the binary table, for both line and continuum cases, 
followed by the complete FITS header listings for both cases.
I heartily request comments and suggestions.  If anyone in the 
FITS community finds problems with my implementation, I would like 
to solve them before beginning to distribute data tapes in this format.

I will be happy to send a pre-release FITS tape or file to anyone 
who will use their reader on it and comment on the format.  
Likewise, I am interested in reading FITS tapes with single-dish 
binary tables from other sites, to test my reader.

KEYWORDS
The choice of keywords has been guided by the summary of the FITS 
agreement of 1 November 1989, written by H. Liszt and W. Cotton. 
The Stobie and Morgan memo of 1986 has provided keywords for most 
of the site-dependent parameters.  Occasionally, I have felt a 
need to create new keywords, for example, the three descriptive 
origin parameters, formerly DESORG(3), are now "RA-DESORG", "DEC-
DESORG", and "ANG-DESORG".  There appears to be no indication in 
the single-dish FITS literature on what to call the zenith 
distance.  P. Harrison has suggested using "ZENI", which I have 
adopted. 
In my implementation, most of the keywords occur as table column 
headings, whose names may contain more than 8 characters. Thus, as 
a column heading, "TELESCOPE" is used instead of "TELESCOP".  
Nevertheless, it is intended that these column names are uniquely 
recognizable by the first 8 characters.
I invite your close attention to the tables of column names and 
the FITS header listings given below, so that any controversy over 
choice of keywords can be worked out soon.

OBSMODE
I wish to urge that "OBSMODE" be promoted to the status of a 
standard FITS keyword, not merely a single-dish keyword.  It 
succinctly describes the type of observing being done.  It would 
be valid to label continuum interferometer data as "CONTINTR", for 
example.  

HOURLST
Although "HOURLST" has been officially sanctioned as a shared 
single-dish keyword in the Nov.89 memo of H.Liszt, the FITS 
standard seems to require that all time-like parameters be in 
units of seconds.  Would it not be more appropriate to use "TIME-
LST" instead and give the value in seconds??  Nevertheless, for 
the present implementation, I am using HOURLST with the value in 
hours.

 HIERARCHIES?
Since there is no agreement yet on hierarchies of keywords, I have 
avoided the issue, so far.  The keywords "PROJID", "OBSMODE", 
"BACKEND", and "HOURLST" appear in the table header behind the 
"HISTORY" keyword.

MORE PROMOTIONS?
Most of the keywords in the "shared keyword" category of H. 
Liszt's memo of Nov. 1989 are of general enough use that they 
should become standard (but optional) FITS keywords, not hidden 
within a hierarchy. 

AXES
In this implementation, all matrices are one-dimensional and all 
matrix axes but the first are dummy axes (i.e., MAXIS2= MAXIS3= 
...=1).  The number of axes has been kept minimal.  For line data, 
only one axis (Velocity) is described. For continuum, 2 position 
axes (usually RA and DEC) are used.  The 140-ft can scan in alt-az 
and in galactic coordinates as well, in which cases, these other 
coordinates will be the two position axes.  All other potential 
axis items, such as TIME, RECEIVER, OBS-FREQ, LAMBDA, are given as 
table columns. It seems arbitrary whether parameters like these 
should be given simply  as table columns or as dummy axes.   Are 
there any strong opinions in the FITS community on this?
Regarding the velocity axis name (VELO-LSR, etc.), what is the 
correct form for Earth-relative velocities?  I am using "VELO-
EAR".  It this generally accepted??

PIPES AND REAL-TIME OPERATION
The programs are intended to be useable in UNIX "pipes".  The 
input data file comes in on standard input, and the output file 
goes to standard output.  Tape reading or writing is done by the 
UNIX utility "dd".  The programs will be wrapped in a shell script 
which will take care of asking the user for  options, and for 
positioning the tape.
Since the FITS header usually tells the total number of rows in 
the table (NAXIS2), it is necessary to preview the input file 
before creating the header. Usually, the FITS writing program 
reads data from standard input and makes a FITS binary table on a 
scratch disk file.  At this point the total number of rows is 
known and the header can be written to standard output.  The 
binary table is next copied to standard output from the scratch 
file, thus completing the FITS file.

It was deemed useful to provide a real-time option in which the 
output was generated continuously as the standard input arrived, 
avoiding the use of an intermediate scratch file (which might be 
very large).  In this mode, a  maximum number of rows is specified 
as an input parameter to the FITS writing program.  Each table 
header specifies this maximum as the value of NAXIS2,  and the 
output file may contain a series of several binary tables, each 
preceded by a header, and each containing this maximum number of 
rows. The last table in the file may contain fewer than this 
maximum number of rows, but this is in accordance with the real-
time FITS proposal made by E. Greisen at last November's meeting.

COMPOSITION OF THE FITS TABLE
Virtually all parameters describing each scan are included as 
columns in the binary table.  This means that in many cases, the 
FITS file may be somewhat larger than necessary, because many of 
the parameters may not vary from one scan to the next.  If 
parameters that do not change are left out of the table, their 
values can be given once in the header, and no space is wasted.  
It is hard to predict which parameters might stay constant during 
a series of scans, however.  An astronomer may change observing 
modes, frequencies, etc, during a run, and wish to collect all 
scans from the run into one file.  Thus, if we put all parameters 
into the table, all possibilities are covered, at the cost of some 
decrease in efficiency of writing tapes.  Options for more 
efficient packing may be added to later versions. 

Since the binary table may contain a heterogeneous collection of 
scans, the header keywords TELESCOP, OBJECT, OBSMODE, TIME, etc., 
refer only to the first scan in the table.

The only selection done by the program is to require that all data 
in a FITS file be line data or continuum data.  No mixing of these 
two types is allowed.  The format is different for the two cases, 
with 60 columns in the table for the continuum case, and 75 for 
the line case.

IDENTIFICATION OF SCANS
For the 140-ft data, we use the scan number and the receiver 
number to identify spectrum scans, and use the scan number and 
beam (or feed) number to identify continuum scans.  In principle, 
all three (scan#, rcvr, and beam) can be used, if the front end 
were of such a nature as to require them.
In the future, we may want to export raw data, in which the 
individual integrations, or records, are included. Stobie and 
Morgan (1986) have suggested giving the record number as a 
fractional part of the scan number. (i.e., integrations 1,2, and 3 
of scan number 25 would be numbered 25.0001, 25.0002, 25.0003.)  
On the other hand, I would advocate introducing a separate table 
column, labeled "RECORD".  Are there any comments on this?

*******************************************************************
*******************************************************************
SUMMARY OF TABLE COLUMNS FOR SPECTRAL LINE DATA

   TTYPE      TFORM TUNIT    COL description  
   ---------  ----- ------  ---- ------------------------------
   MAXIS1        1I    -      1  Dimension of Velocity axis
   CRPIX1        1E    -      2  Velocity reference Pixel.
   CDELT1        1E KM/SEC    3  Velocity increment.
   CRVAL1        1E KM/SEC    4  Velocity at Reference Pixel. 
   SCAN          1E    -      5  scan number 
   RECEIVER      1I    -      6  receiver number
   OBSID         1I    -      7  observer's computer ID number
   OBSERVER     14A    -      8  observer's name
   TELESCOPE     1I    -      9  telescope designation.
   PROJID        4A    -     10  Project ID code
   OBJECT       12A    -     11  Observed object name.
   OBSMODE       8A    -     12  observing mode.
   RFOCUS        1E METERS   13  radial box focus
   ORIENT        1E DEGREES  14  box orientation
   UTJULDATE     1D DAYS     15  Julian Date of observation.
   TIME          1E SECONDS  16  UT time of observation.
   HOURLST       1E HOURS    17  LST of observation (hours).
   SAMPRAT       1E SECONDS  18  record or sample integ. time.
   SCANMODE      4A    -     19  140-ft codes [prg,typ,mode,#rx]
   CHSTART       1I    -     20  starting channel number
   EPOCH         1E YEAR     21  epoch of RA and DEC
   XREF          1E DEGREES  22  Commanded horizontal coordinate
   YREF          1E DEGREES  23  Commanded vertical coordinate
   APPRA         1E DEGREES  24  apparent RA of date
   APPDEC        1E DEGREES  25  apparent DEC of date.
   EPOCRA        1E DEGREES  26  RA at epoch
   EPOCDEC       1E DEGREES  27  DEC at epoch
   GLON          1E DEGREES  28  galactic longitude
   GLAT          1E DEGREES  29  galactic latitude
   INDX          1E DEGREES  30  indicated RA
   INDY          1E DEGREES  31  indicated DECL
   ZENI          1E DEGREES  32  Zenith Distance.  
   RA-DESORG     1E DEGREES  33  RA of Descriptive origin.
   DEC-DESORG    1E DEGREES  34  DEC of Descriptive origin.
   ANG-DESORG    1E DEGREES  35  Position Angle of Descr coords.
   COORDCD       8A    -     36  Coordinate Type Code.
   TAMBIENT      1E KELVINS  37  Ambient outside Temperature.  
   PRESSURE      1E mmHg     38  Atmospheric Pressure.  
   DEWPOINT      1E KELVINS  39  DewPoint.  
   DELTAXR       1E DEG/SEC  40  X-rate of position scanning.  
   DELTAYR       1E DEG/SEC  41  Y-rate of position scanning.  
   SCANDIR       1I   -      42  Scan direction code (+/-0,1,or2)
   OFFSCAN       1E    -     43  off scan number  
   RVSYS         1E KM/SEC   44  Velocity Correction.
   VELDEF        8A   -      45  Velocity Def. and reference.  
   L1(SYNTH)     1D   HZ     46  Synthesizer settings
   L1F1(SYNTH)   1D   HZ     47  Synthesizer settings
   L1F2(SYNTH)   1D   HZ     48  Synthesizer settings
   L2(SYNTH)     1D   HZ     49  Synthesizer settings
   L2F1(SYNTH)   1D   HZ     50  Synthesizer settings
   L2F2(SYNTH)   1D   HZ     51  Synthesizer settings
   LA            1E   HZ     52  LO settings.
   LB            1E   HZ     53  LO settings.
   LC            1E   HZ     54  LO settings.
   LD            1E   HZ     55  LO settings.
   UXPNT         1E DEGREES  56  User Pointing "fudge".
   UYPNT         1E DEGREES  57  User Pointing "fudge".
   PVLS-P1       1E DEGREES  58  box offsets
   PVLS-P2       1E DEGREES  59  box offsets
   PVLS-P3       1E DEGREES  60  box offsets
   CFFORM       18A   -      61  Center Frequency Formula.
   OBSFREQ       1D   HZ     62  Observed Frequency.
   RESTFREQ      1D   HZ     63  Rest Frequency.
   BANDWIDTH     1E   HZ     64  Receiver Bandwidth.
   TCAL          1E KELVINS  65  Calibration Temperature.  
   STSYS         1E KELVINS  66  Source System Temp.
   RTSYS         1E KELVINS  67  Reference System Temp.
   TRMS          1E KELVINS  68  Theoretical RMS temp of scan. 
   EXPOSURE      1E SECONDS  69  Effective scan integration time 
   SCANDURATION  1E SECONDS  70  Total duration of scan (secs).
   NOINT         1I    -     71  Number of integrations in scan
   TAUH2O        1E mmH2O    72  Opacity at Zenith.
   DATAMAX       1E KELVINS  73  Max value in spectrum.
   DATAMIN       1E KELVINS  74  Min value in spectrum.
   SPECTRUM   1024E KELVINS  75  Observed Spectrum.
*****************************************************************
*****************************************************************

SUMMARY OF TABLE COLUMNS FOR CONTINUUM DATA

   TTYPE      TFORM TUNIT    COL description  
   ---------  ----- ------  ---- ---------------------------------
   MAXIS1        1I    -      1  Number of points in scan.
   CTYPE1        8A    -      2  Type of matrix axis 1. 
                                  (e.g.,RA, GLON)
   CRVAL1        1E    -      3  Coordinate Value at Ref. pixel.
   CRPIX1        1E    -      4  Scan Axis reference Pixel.
   CDELT1        1E    -      5  Scan Axis increment.
   CROTA1        1E DEGREES   6  Rotation of Scan Axis.
   CTYPE2        8A    -      7  Type of matrix axis 2.
                                  (e.g., DEC, GLAT)
   CRVAL2        1E    -      8  Value at Reference Pixel. 
   SCAN          1E    -      9  scan number 
   BEAM          1I    -     10  beam or feed number
   OBSID         1I    -     11  observer's computer ID number
   OBSERVER     14A    -     12  observer's name
   TELESCOPE     1I    -     13  telescope designation.
   PROJID        4A    -     14  Project ID code
   OBJECT       12A    -     15  Observed object name.
   OBSMODE       8A    -     16  observing mode.
   RFOCUS        1E METERS   17  radial box focus
   ORIENT        1E DEGREES  18  box orientation
   UTJULDATE     1D DAYS     19  Julian date of observation.
   TIME          1E SECONDS  20  UT time of observation.
   HOURLST       1E HOURS    21  LST of observation (hours).
   EXPOSURE      1E SECONDS  22  record or sample integ. time.
   SCANMODE      4A    -     23  140-ft codes:
                                  [prg,type,mode,1st_ch]
   NFEEDS        1I    -     24  Number of Feeds.
   EPOCH         1E YEAR     25  epoch of RA and DEC
   XREF          1E DEGREES  26  Commanded horizontal coordinate
   YREF          1E DEGREES  27  Commanded vertical coordinate
   INDX          1E DEGREES  28  Indicated RA.
   INDY          1E DEGREES  29  Indicated DEC.
   APPRA         1E DEGREES  30  apparent RA of date
   APPDEC        1E DEGREES  31  apparent DEC of date.
   EPOCRA        1E DEGREES  32  RA at epoch
   EPOCDEC       1E DEGREES  33  DEC at epoch
   GLON          1E DEGREES  34  galactic longitude
   GLAT          1E DEGREES  35  galactic latitude
   ZENI          1E DEGREES  36  Zenith Distance.  
   COORDCD       8A    -     37  Coordinate Type Code.
   RA-DESORG     1E DEGREES  38  RA of Descriptive origin.
   DEC-DESORG    1E DEGREES  39  DEC of Descriptive origin.
   ANG-DESORG    1E DEGREES  40  Position Angle of Descr. coords.
   TAMBIENT      1E KELVINS  41  Ambient outside Temperature
   PRESSURE      1E mmHg     42  Atmospheric Pressure.  
   DEWPOINT      1E KELVINS  43  DewPoint.  
   DELTAXR       1E DEG/SEC  44  X-rate of position scanning.  
   DELTAYR       1E DEG/SEC  45  Y-rate of position scanning.  
   SCANDIR       1I   -      46  Scan direction code (+/-0,1,or2)
   LAMBDA        1E METERS   47  Observed Wavelength in Meters.
   UXPNT         1E DEGREES  48  RA Pointing "fudge".
   UYPNT         1E DEGREES  49  DEC Pointing "fudge".
   PVLS-P1       1E DEGREES  50  box offsets
   PVLS-P2       1E DEGREES  51  box offsets
   PVLS-P3       1E DEGREES  52  box offsets
   RHO           1E DEGREES  53  Rho (feed offset)
   THETA         1E DEGREES  54  Theta (feed position angle)
   TCAL          1E KELVINS  55  Calibration Noise Tube Temp.
   TSYS          1E KELVINS  56  System Temperature.
   CALFACTOR     1E K/V      57  Calibration Factor (K per count).
   DATAMAX       1E KELVINS  58  Max value in scan.
   DATAMIN       1E KELVINS  59  Min value in scan.
   SCANDATA   1193E KELVINS  60  Continuum Scan Data

*********************************************************************
*********************************************************************

LISTING OF HEADERS FOR SPECTRAL LINE FITS FILE
----------------------------------------------

******** Start of Header Record *********
SIMPLE  =                         T / File conforms to FITS standards (we hope)
BITPIX  =                         8 /                                          
NAXIS   =                         0 / No image data array present.             
BLOCKED =                         T / Tape block may be 1-10 times 2880 bytes. 
EXTEND  =                         T / Standard table extensions follow.        
ORIGIN  = 'NRAO-GB pgm=wfits0.9 '   / Written by Green Bank SUN or MassComp.   
DATE    = ' 1/ 6/90             '   / UT Date on which tape was written.       
COMMENT   Single dish LINE data from NRAO (Green Bank).                        
END                                                                            

******** Start of Header Record *********
XTENSION= '3DTABLE'                 / Single dish 3-D table.                   
BITPIX  =                         8 / Binary data.                             
NAXIS   =                         2 / Table is a Matrix.                       
NAXIS1  =                      1386 / Width of table in bytes.                 
NAXIS2  =                        30 / Number of entries (rows) in Table.       
PCOUNT  =                         0 / Random Parameter Count.                  
GCOUNT  =                         1 / Group Count.                             
TFIELDS =                        75 / Number of columns in each row.           
EXTNAME = 'NRAO-GB SINGLE DISH'     / Moniker of Table. (ver.1.0, 31may90)     
EXTVER  =                         1 / Version number of Table.                 
NMATRIX =                         1 / no.matrixes following SD convention.     
           / The following global keywords apply, at least, to the first scan. 
TELESCOP= 'NRAO-43M             '   / Designation of Telescope.                
OBJECT  = 'ORION K-L            '   / Name of observed object.                 
OBSERVER= 'BELL                 '   / Name of observer.                        
DATE-OBS= '21/ 2/90             '   / UT date of observation.                  
TIME    =                    58136. / UT time of observation (seconds).        
DATAMAX =                1.3317E+01 / max spectral value (K) - for whole file. 
DATAMIN =               -2.0947E+01 / min spectral value (K) - for whole file. 
HISTORY   PROJID  = 'B524       '   / Observer's Project ID                    
HISTORY   OBSMODE = 'LINEFQSW   '   / Observing mode.                          
HISTORY   BACKEND = '1024ACIV   '   / Receiver Backend name.                   
HISTORY   HOURLST =   2.091444E+01  / LST time of observation (hours).         
           / The following defines the data matrix.                            
MAXIS   = 1                         / no. axes in data matrix.                 
CTYPE1  = 'VELO-LSR             '   / Velocity Axis of matrix.                 
TFORM1  = '1I '                     /                                          
TTYPE1  = 'MAXIS1       '           / Dimension of Velocity axis               
TFORM2  = '1E '                     /                                          
TTYPE2  = 'CRPIX1       '           / Velocity reference Pixel.                
TFORM3  = '1E '                     /                                          
TTYPE3  = 'CDELT1       '           / Velocity increment.                      
TUNIT3  = 'KM/SEC       '           /                                          
TFORM4  = '1E '                     /                                          
TTYPE4  = 'CRVAL1       '           / Velocity at Reference Pixel.             
TUNIT4  = 'KM/SEC       '           /                                          
TFORM5  = '1E '                     /                                          
TTYPE5  = 'SCAN         '           / scan number (frac.part is rec num.)      
TFORM6  = '1I '                     /                                          
TTYPE6  = 'RECEIVER     '           / receiver number                          
TFORM7  = '1I '                     /                                          
TTYPE7  = 'OBSID        '           / observer's computer ID number            
TFORM8  = '14A '                    /                                          
TTYPE8  = 'OBSERVER     '           / observer's name                          
TFORM9  = '1I '                     /                                          
TTYPE9  = 'TELESCOPE    '           / telescope designation.                   
TFORM10 = '4A '                     /                                          
TTYPE10 = 'PROJID       '           / Project ID code                          
TFORM11 = '12A '                    /                                          
TTYPE11 = 'OBJECT       '           / Observed object name.                    
TFORM12 = '8A '                     /                                          
TTYPE12 = 'OBSMODE      '           / observing mode.                          
TFORM13 = '1E '                     /                                          
TTYPE13 = 'RFOCUS       '           / radial box focus                         
TUNIT13 = 'METERS       '           /                                          
TFORM14 = '1E '                     /                                          
TTYPE14 = 'ORIENT       '           / box orientation                          
TUNIT14 = 'DEGREES      '           /                                          
TFORM15 = '1D '                     /                                          
TTYPE15 = 'UTJULDATE    '           / Julian Date (frac.part is UT time).      
TUNIT15 = 'DAYS         '           /                                          
TFORM16 = '1E '                     /                                          
TTYPE16 = 'TIME         '           / UT time of observation.                  
TUNIT16 = 'SECONDS      '           /                                          
TFORM17 = '1E '                     /                                          
TTYPE17 = 'HOURLST      '           / LST of observation (hours).              
TUNIT17 = 'HOURS        '           /                                          
TFORM18 = '1E '                     /                                          
TTYPE18 = 'SAMPRAT      '           / record or sample integration time.       
TUNIT18 = 'SECONDS      '           /                                          
TFORM19 = '4A '                     /                                          
TTYPE19 = 'SCANMODE     '           / 140-ft codes [prog][type][mode][#rcvrs]  
TFORM20 = '1I '                     /                                          
TTYPE20 = 'CHSTART      '           / starting channel number                  
TFORM21 = '1E '                     /                                          
TTYPE21 = 'EPOCH        '           / epoch of RA and DEC                      
TUNIT21 = 'YEAR         '           /                                          
TFORM22 = '1E '                     /                                          
TTYPE22 = 'XREF         '           / Commanded horizontal coordinate          
TUNIT22 = 'DEGREES      '           /                                          
TFORM23 = '1E '                     /                                          
TTYPE23 = 'YREF         '           / Commanded vertical coordinate            
TUNIT23 = 'DEGREES      '           /                                          
TFORM24 = '1E '                     /                                          
TTYPE24 = 'APPRA        '           / apparent RA of date                      
TUNIT24 = 'DEGREES      '           /                                          
TFORM25 = '1E '                     /                                          
TTYPE25 = 'APPDEC       '           / apparent DEC of date.                    
TUNIT25 = 'DEGREES      '           /                                          
TFORM26 = '1E '                     /                                          
TTYPE26 = 'EPOCRA       '           / RA at epoch                              
TUNIT26 = 'DEGREES      '           /                                          
TFORM27 = '1E '                     /                                          
TTYPE27 = 'EPOCDEC      '           / DEC at epoch                             
TUNIT27 = 'DEGREES      '           /                                          
TFORM28 = '1E '                     /                                          
TTYPE28 = 'GLON         '           / galactic longitude                       
TUNIT28 = 'DEGREES      '           /                                          
TFORM29 = '1E '                     /                                          
TTYPE29 = 'GLAT         '           / galactic latitude                        
TUNIT29 = 'DEGREES      '           /                                          
TFORM30 = '1E '                     /                                          
TTYPE30 = 'INDX         '           / indicated RA                             
TUNIT30 = 'DEGREES      '           /                                          
TFORM31 = '1E '                     /                                          
TTYPE31 = 'INDY         '           / indicated DECL                           
TUNIT31 = 'DEGREES      '           /                                          
TFORM32 = '1E '                     /                                          
TTYPE32 = 'ZENI         '           / Zenith Distance.                         
TUNIT32 = 'DEGREES      '           /                                          
TFORM33 = '1E '                     /                                          
TTYPE33 = 'RA-DESORG    '           / RA of Descriptive origin.                
TUNIT33 = 'DEGREES      '           /                                          
TFORM34 = '1E '                     /                                          
TTYPE34 = 'DEC-DESORG   '           / DEC of Descriptive origin.               
TUNIT34 = 'DEGREES      '           /                                          
TFORM35 = '1E '                     /                                          
TTYPE35 = 'ANG-DESORG   '           / Position Angle of Descriptive coords.    
TUNIT35 = 'DEGREES      '           /                                          
TFORM36 = '8A '                     /                                          
TTYPE36 = 'COORDCD      '           / Coordinate Type Code.                    
TFORM37 = '1E '                     /                                          
TTYPE37 = 'TAMBIENT     '           / Ambient Temperature at the 140-ft.       
TUNIT37 = 'KELVINS      '           /                                          
TFORM38 = '1E '                     /                                          
TTYPE38 = 'PRESSURE     '           / Atmospheric Pressure.                    
TUNIT38 = 'mmHg         '           /                                          
TFORM39 = '1E '                     /                                          
TTYPE39 = 'DEWPOINT     '           / DewPoint.                                
TUNIT39 = 'KELVINS      '           /                                          
TFORM40 = '1E '                     /                                          
TTYPE40 = 'DELTAXR      '           / X-rate of position scanning.             
TUNIT40 = 'DEG/SEC      '           /                                          
TFORM41 = '1E '                     /                                          
TTYPE41 = 'DELTAYR      '           / Y-rate of position scanning.             
TUNIT41 = 'DEG/SEC      '           /                                          
TFORM42 = '1I '                     /                                          
TTYPE42 = 'SCANDIR      '           / Scan direction code (+/-0,1,or2)         
TFORM43 = '1E '                     /                                          
TTYPE43 = 'OFFSCAN      '           / off scan number                          
TFORM44 = '1E '                     /                                          
TTYPE44 = 'RVSYS        '           / Velocity Correction.                     
TUNIT44 = 'KM/SEC       '           /                                          
TFORM45 = '8A '                     /                                          
TTYPE45 = 'VELDEF       '           / Velocity Definition and reference.       
TFORM46 = '1D '                     /                                          
TTYPE46 = 'L1(SYNTH)    '           / Synthsizer settings                      
TUNIT46 = 'HZ           '           /                                          
TFORM47 = '1D '                     /                                          
TTYPE47 = 'L1F1(SYNTH)  '           / Synthsizer settings                      
TUNIT47 = 'HZ           '           /                                          
TFORM48 = '1D '                     /                                          
TTYPE48 = 'L1F2(SYNTH)  '           / Synthsizer settings                      
TUNIT48 = 'HZ           '           /                                          
TFORM49 = '1D '                     /                                          
TTYPE49 = 'L2(SYNTH)    '           / Synthsizer settings                      
TUNIT49 = 'HZ           '           /                                          
TFORM50 = '1D '                     /                                          
TTYPE50 = 'L2F1(SYNTH)  '           / Synthsizer settings                      
TUNIT50 = 'HZ           '           /                                          
TFORM51 = '1D '                     /                                          
TTYPE51 = 'L2F2(SYNTH)  '           / Synthsizer settings                      
TUNIT51 = 'HZ           '           /                                          
TFORM52 = '1E '                     /                                          
TTYPE52 = 'LA           '           / LO settings.                             
TUNIT52 = 'HZ           '           /                                          
TFORM53 = '1E '                     /                                          
TTYPE53 = 'LB           '           / LO settings.                             
TUNIT53 = 'HZ           '           /                                          
TFORM54 = '1E '                     /                                          
TTYPE54 = 'LC           '           / LO settings.                             
TUNIT54 = 'HZ           '           /                                          
TFORM55 = '1E '                     /                                          
TTYPE55 = 'LD           '           / LO settings.                             
TUNIT55 = 'HZ           '           /                                          
TFORM56 = '1E '                     /                                          
TTYPE56 = 'UXPNT        '           / Pointing correction additives.           
TUNIT56 = 'DEGREES      '           /                                          
TFORM57 = '1E '                     /                                          
TTYPE57 = 'UYPNT        '           / Pointing correction additives.           
TUNIT57 = 'DEGREES      '           /                                          
TFORM58 = '1E '                     /                                          
TTYPE58 = 'PVLS-P1      '           / box offsets                              
TUNIT58 = 'DEGREES      '           /                                          
TFORM59 = '1E '                     /                                          
TTYPE59 = 'PVLS-P2      '           / box offsets                              
TUNIT59 = 'DEGREES      '           /                                          
TFORM60 = '1E '                     /                                          
TTYPE60 = 'PVLS-P3      '           / box offsets                              
TUNIT60 = 'DEGREES      '           /                                          
TFORM61 = '18A '                    /                                          
TTYPE61 = 'CFFORM       '           / Center Frequency Formula.                
TFORM62 = '1D '                     /                                          
TTYPE62 = 'OBSFREQ      '           / Observed Frequency.                      
TUNIT62 = 'HZ           '           /                                          
TFORM63 = '1D '                     /                                          
TTYPE63 = 'RESTFREQ     '           / Rest Frequency.                          
TUNIT63 = 'HZ           '           /                                          
TFORM64 = '1E '                     /                                          
TTYPE64 = 'BANDWIDTH    '           / Receiver Bandwidth.                      
TUNIT64 = 'HZ           '           /                                          
TFORM65 = '1E '                     /                                          
TTYPE65 = 'TCAL         '           / Calibration Temperature.                 
TUNIT65 = 'KELVINS      '           /                                          
TFORM66 = '1E '                     /                                          
TTYPE66 = 'STSYS        '           / Source System Temp.                      
TUNIT66 = 'KELVINS      '           /                                          
TFORM67 = '1E '                     /                                          
TTYPE67 = 'RTSYS        '           / Reference System Temp.                   
TUNIT67 = 'KELVINS      '           /                                          
TFORM68 = '1E '                     /                                          
TTYPE68 = 'TRMS         '           / Theoretical RMS temp of scan.            
TUNIT68 = 'KELVINS      '           /                                          
TFORM69 = '1E '                     /                                          
TTYPE69 = 'EXPOSURE     '           / Effective integration time of scan.      
TUNIT69 = 'SECONDS      '           /                                          
TFORM70 = '1E '                     /                                          
TTYPE70 = 'SCANDURATION '           / Total duration of scan (secs).           
TUNIT70 = 'SECONDS      '           /                                          
TFORM71 = '1I '                     /                                          
TTYPE71 = 'NOINT        '           / Number of integrations in scan.          
TFORM72 = '1E '                     /                                          
TTYPE72 = 'TAUH2O       '           / Opacity at Zenith.                       
TUNIT72 = 'mmH2O        '           /                                          
TFORM73 = '1E '                     /                                          
TTYPE73 = 'DATAMAX      '           / Max value in spectrum.                   
TUNIT73 = 'KELVINS      '           /                                          
TFORM74 = '1E '                     /                                          
TTYPE74 = 'DATAMIN      '           / Min value in spectrum.                   
TUNIT74 = 'KELVINS      '           /                                          
TFORM75 = '256E  '                  /                                          
TTYPE75 = 'SPECTRUM     '           / Observed Spectrum.                       
TUNIT75 = 'KELVINS      '           /                                          
TMATX75 = T                         / A binary data matrix, begorrah.          
END                                                                            

*********************************************************************
*********************************************************************

LISTING OF HEADERS FOR CONTINUUM FITS FILE
----------------------------------------------

******** Start of Header Record *********
SIMPLE  =                         T / File conforms to FITS standards (we hope)
BITPIX  =                         8 /                                          
NAXIS   =                         0 / No image data array present.             
BLOCKED =                         T / Tape block may be 1-10 times 2880 bytes. 
EXTEND  =                         T / Standard table extensions follow.        
ORIGIN  = 'NRAO-GB pgm=wfits0.9 '   / Written by Green Bank SUN or MassComp.   
DATE    = ' 1/ 6/90             '   / UT Date on which tape was written.       
COMMENT   Single dish CONTINUUM data from NRAO (Green Bank).                   
END                                                                            

******** Start of Header Record *********
XTENSION= '3DTABLE'                 / Single dish 3-D table.                   
BITPIX  =                         8 / Binary data.                             
NAXIS   =                         2 / Table is a Matrix.                       
NAXIS1  =                       742 / Width of table in bytes.                 
NAXIS2  =                        22 / Number of entries (rows) in Table.       
PCOUNT  =                         0 / Random Parameter Count.                  
GCOUNT  =                         1 / Group Count.                             
TFIELDS =                        60 / Number of columns in each row.           
EXTNAME = 'NRAO-GB SINGLE DISH'     / Moniker of Table. (ver.1.0, 31may90)     
EXTVER  =                         1 / Version number of Table.                 
NMATRIX =                         1 / no.matrixes following SD convention.     
           / The following global keywords apply, at least, to the first scan. 
TELESCOP= 'NRAO-43M             '   / Designation of Telescope.                
OBJECT  = '1730-130             '   / Name of observed object.                 
OBSERVER= 'MADDEN ET AL         '   / Name of observer.                        
DATE-OBS= '19/ 4/90             '   / UT date of observation.                  
TIME    =                    25720. / UT time of observation (seconds).        
DATAMAX =                6.8040E+03 / max spectral value (K) - for whole file. 
DATAMIN =               -2.0000E+00 / min spectral value (K) - for whole file. 
HISTORY   PROJID  = 'M284       '   / Observer's Project ID                    
HISTORY   OBSMODE = 'CONTTLPW   '   / Observing mode.                          
HISTORY   BACKEND = 'STD A/D    '   / Receiver Backend name.                   
HISTORY   HOURLST =   1.563099E+01  / LST time of observation (hours).         
           / The following defines the data matrix.                            
MAXIS   = 2                         / no. data axes in matrix                  
TFORM1  = '1I '                     /                                          
TTYPE1  = 'MAXIS1       '           / Number of points in scan.                
TFORM2  = '8A '                     /                                          
TTYPE2  = 'CTYPE1       '           / Type of matrix axis 1.                   
TFORM3  = '1E '                     /                                          
TTYPE3  = 'CRVAL1       '           / Coordinate Value at Reference pixel.     
TFORM4  = '1E '                     /                                          
TTYPE4  = 'CRPIX1       '           / Scan Axis reference Pixel.               
TFORM5  = '1E '                     /                                          
TTYPE5  = 'CDELT1       '           / Scan Axis increment.                     
TFORM6  = '1E '                     /                                          
TTYPE6  = 'CROTA1       '           / Rotation of Scan Axis.                   
TUNIT6  = 'DEGREES      '           /                                          
MAXIS2   = 1                        / Number of points on axis 2.              
TFORM7  = '8A '                     /                                          
TTYPE7  = 'CTYPE2       '           / Type of matrix axis 2.                   
TFORM8  = '1E '                     /                                          
TTYPE8  = 'CRVAL2       '           / Value at Reference Pixel.                
CRPIX2   = 1.0                      / 2nd Axis reference pixel.                
TFORM9  = '1E '                     /                                          
TTYPE9  = 'SCAN         '           / scan number                              
TFORM10 = '1I '                     /                                          
TTYPE10 = 'BEAM         '           / beam or feed number                      
TFORM11 = '1I '                     /                                          
TTYPE11 = 'OBSID        '           / observer's computer ID number            
TFORM12 = '14A '                    /                                          
TTYPE12 = 'OBSERVER     '           / observer's name                          
TFORM13 = '1I '                     /                                          
TTYPE13 = 'TELESCOPE    '           / telescope designation.                   
TFORM14 = '4A '                     /                                          
TTYPE14 = 'PROJID       '           / Project ID code                          
TFORM15 = '12A '                    /                                          
TTYPE15 = 'OBJECT       '           / Observed object name.                    
TFORM16 = '8A '                     /                                          
TTYPE16 = 'OBSMODE      '           / observing mode.                          
TFORM17 = '1E '                     /                                          
TTYPE17 = 'RFOCUS       '           / radial box focus                         
TUNIT17 = 'METERS       '           /                                          
TFORM18 = '1E '                     /                                          
TTYPE18 = 'ORIENT       '           / box orientation                          
TUNIT18 = 'DEGREES      '           /                                          
TFORM19 = '1D '                     /                                          
TTYPE19 = 'UTJULDATE    '           / Julian Date (frac.part is UT time).      
TUNIT19 = 'DAYS         '           /                                          
TFORM20 = '1E '                     /                                          
TTYPE20 = 'TIME         '           / UT time of observation.                  
TUNIT20 = 'SECONDS      '           /                                          
TFORM21 = '1E '                     /                                          
TTYPE21 = 'HOURLST      '           / LST of observation (hours).              
TUNIT21 = 'HOURS        '           /                                          
TFORM22 = '1E '                     /                                          
TTYPE22 = 'EXPOSURE     '           / record or sample integration time.       
TUNIT22 = 'SECONDS      '           /                                          
TFORM23 = '4A '                     /                                          
TTYPE23 = 'SCANMODE     '           / 140-ft codes [prog][type][mode][1st_ch]  
TFORM24 = '1I '                     /                                          
TTYPE24 = 'NFEEDS       '           / Number of Feeds.                         
TFORM25 = '1E '                     /                                          
TTYPE25 = 'EPOCH        '           / epoch of RA and DEC                      
TUNIT25 = 'YEAR         '           /                                          
TFORM26 = '1E '                     /                                          
TTYPE26 = 'XREF         '           / Commanded horizontal coordinate          
TUNIT26 = 'DEGREES      '           /                                          
TFORM27 = '1E '                     /                                          
TTYPE27 = 'YREF         '           / Commanded vertical coordinate            
TUNIT27 = 'DEGREES      '           /                                          
TFORM28 = '1E '                     /                                          
TTYPE28 = 'INDX         '           / Indicated RA.                            
TUNIT28 = 'DEGREES      '           /                                          
TFORM29 = '1E '                     /                                          
TTYPE29 = 'INDY         '           / Indicated DEC.                           
TUNIT29 = 'DEGREES      '           /                                          
TFORM30 = '1E '                     /                                          
TTYPE30 = 'APPRA        '           / apparent RA of date                      
TUNIT30 = 'DEGREES      '           /                                          
TFORM31 = '1E '                     /                                          
TTYPE31 = 'APPDEC       '           / apparent DEC of date.                    
TUNIT31 = 'DEGREES      '           /                                          
TFORM32 = '1E '                     /                                          
TTYPE32 = 'EPOCRA       '           / RA at epoch                              
TUNIT32 = 'DEGREES      '           /                                          
TFORM33 = '1E '                     /                                          
TTYPE33 = 'EPOCDEC      '           / DEC at epoch                             
TUNIT33 = 'DEGREES      '           /                                          
TFORM34 = '1E '                     /                                          
TTYPE34 = 'GLON         '           / galactic longitude                       
TUNIT34 = 'DEGREES      '           /                                          
TFORM35 = '1E '                     /                                          
TTYPE35 = 'GLAT         '           / galactic latitude                        
TUNIT35 = 'DEGREES      '           /                                          
TFORM36 = '1E '                     /                                          
TTYPE36 = 'ZENI         '           / Zenith Distance.                         
TUNIT36 = 'DEGREES      '           /                                          
TFORM37 = '8A '                     /                                          
TTYPE37 = 'COORDCD      '           / Coordinate Type Code.                    
TFORM38 = '1E '                     /                                          
TTYPE38 = 'RA-DESORG    '           / RA of Descriptive origin.                
TUNIT38 = 'DEGREES      '           /                                          
TFORM39 = '1E '                     /                                          
TTYPE39 = 'DEC-DESORG   '           / DEC of Descriptive origin.               
TUNIT39 = 'DEGREES      '           /                                          
TFORM40 = '1E '                     /                                          
TTYPE40 = 'ANG-DESORG   '           / Position Angle of Descriptive coords.    
TUNIT40 = 'DEGREES      '           /                                          
TFORM41 = '1E '                     /                                          
TTYPE41 = 'TAMBIENT     '           / Ambient Temperature at the 140-ft.       
TUNIT41 = 'KELVINS      '           /                                          
TFORM42 = '1E '                     /                                          
TTYPE42 = 'PRESSURE     '           / Atmospheric Pressure.                    
TUNIT42 = 'mmHg         '           /                                          
TFORM43 = '1E '                     /                                          
TTYPE43 = 'DEWPOINT     '           / DewPoint.                                
TUNIT43 = 'KELVINS      '           /                                          
TFORM44 = '1E '                     /                                          
TTYPE44 = 'DELTAXR      '           / X-rate of position scanning.             
TUNIT44 = 'DEG/SEC      '           /                                          
TFORM45 = '1E '                     /                                          
TTYPE45 = 'DELTAYR      '           / Y-rate of position scanning.             
TUNIT45 = 'DEG/SEC      '           /                                          
TFORM46 = '1I '                     /                                          
TTYPE46 = 'SCANDIR      '           / Scan direction code (+/-0,1,or2)         
TFORM47 = '1E '                     /                                          
TTYPE47 = 'LAMBDA       '           / Observed Wavelength in Meters.           
TUNIT47 = 'METERS       '           /                                          
TFORM48 = '1E '                     /                                          
TTYPE48 = 'UXPNT        '           / RA Pointing "fudge".                     
TUNIT48 = 'DEGREES      '           /                                          
TFORM49 = '1E '                     /                                          
TTYPE49 = 'UYPNT        '           / DEC Pointing "fudge".                    
TUNIT49 = 'DEGREES      '           /                                          
TFORM50 = '1E '                     /                                          
TTYPE50 = 'PVLS-P1      '           / box offsets                              
TUNIT50 = 'DEGREES      '           /                                          
TFORM51 = '1E '                     /                                          
TTYPE51 = 'PVLS-P2      '           / box offsets                              
TUNIT51 = 'DEGREES      '           /                                          
TFORM52 = '1E '                     /                                          
TTYPE52 = 'PVLS-P3      '           / box offsets                              
TUNIT52 = 'DEGREES      '           /                                          
TFORM53 = '1E '                     /                                          
TTYPE53 = 'RHO          '           / Rho (feed offset)                        
TUNIT53 = 'DEGREES      '           /                                          
TFORM54 = '1E '                     /                                          
TTYPE54 = 'THETA        '           / Theta (feed position angle)              
TUNIT54 = 'DEGREES      '           /                                          
TFORM55 = '1E '                     /                                          
TTYPE55 = 'TCAL         '           / Calibration Noise Tube Temperature.      
TUNIT55 = 'KELVINS      '           /                                          
TFORM56 = '1E '                     /                                          
TTYPE56 = 'TSYS         '           / System Temperature.                      
TUNIT56 = 'KELVINS      '           /                                          
TFORM57 = '1E '                     /                                          
TTYPE57 = 'CALFACTOR    '           / Calibration Factor (K per count).        
TUNIT57 = 'K/V          '           /                                          
TFORM58 = '1E '                     /                                          
TTYPE58 = 'DATAMAX      '           / Max value in scan.                       
TUNIT58 = 'KELVINS      '           /                                          
TFORM59 = '1E '                     /                                          
TTYPE59 = 'DATAMIN      '           / Min value in scan.                       
TUNIT59 = 'KELVINS      '           /                                          
TFORM60 = '120E  '                  /                                          
TTYPE60 = 'SCANDATA     '           / Continuum Scan Data                      
TUNIT60 = 'KELVINS      '           /                                          
TMATX60 = T                         / A binary data matrix, begorrah.          
END

---

From: [email-masked]
Date: Mon, 4 Jun 1990 14:09:18 EDT

Frank, you're a genius.  What a breakthrough:  writing tapes that we
can read.
Thanks for your help.

---

From: [email-masked]
Date: Mon, 4 Jun 1990 14:21:36 EDT

Frank, I just skimmed the message, and I'm no expert, but perhaps you can
tell me why you decided not to stick scrupulously to SI units.  I see box
offsets in degrees, velocity offsets in Km/s, pressure in mmHg etc.  Does
this make a difference, or does the 'self-documenting' property of FITS
render this point moot?