Next: Once FITS Always FITS
Up: BINTABLE Mode
Previous: Known keywords
Contents
Index
Most of the keywords described above can be used as column names. The
value contained in the column prevails on the value contained in the
Keyword. This can be useful if you need to store spectra with different
lengths in your table: You can use a column named MAXIS1 containing
the number of channels for each spectrum of the table (the trailing bytes
requiered to fill the DATA column will be ignored then).
Here is the list of authorized column names which can also be keywords:
DATAMAX, DATAMIN, MAXISi, CRVALi, CRPIXi,
CDELTi, BEAMEFF, FORWEFF or ETAFSS, GAINIMAG,
MH2O, PRESSURE, TOUTSIDE, AZIMUTH, ELEVATIO,
DATE-OBS or DATE_OBS
, DATE-RED or DATE_RED
or
DATE, SCAN or SCAN-NUM or SCAN_NUM
, SUBSCAN,
LST, UT or UTC, TAU-ATM or TAU_ATM
, TELESCOP, OBSTIME or EXPOSURE, TSYS, EPOCH or
EQUINOX, OBJECT, IMAGFREQ, LINE, RESTFREQ,
VELOCITY, VELDEF, VELO-LSR or VLSR, VELO-OBS
or VELO-TOP, VELO-HEL, VELO-EAR or VELO-GEO, DELTAV or DELTAVEL.
The following names are exclusively used for columns because their value
(your data) can not be factorized
- MATRIX or SPECTRUM or SERIES or DATA
- The spectra intensities.
Unit: [K]. This is the only mandatory column. Indeed, why would we make a
FITS file without any spectrum? This column must also be unique, i.e.
only one data column per binary table. The number of elements of this
column, specified in TFORM, depends on the way you want to store
your data (Fixed or Variable Length Arrays). More explanations are
available below
- WAVE
- Frequency of each channel. Unit: [Hz]. This column is
optional. If it is present, the spectra is considered as ``irregularly
sampled'': each channel has its own frequency and the frequency axis
description; In other words, the RESTFREQ, CDELTi, CRVALi) keyword are not used at all even when present. MAXISi
is still used, since it gives the number of channels. If this column is
absent, then the frequency axis will be described in the usual way.
Both the SPECTRUM and WAVE columns must have the same number of
elements to obtain a meaningful result. Those columns may either be filled
with
- Fixed Length Arrays
- This may be the easiest way to store the data
but it may waste a lot of space if you have spectra with different number
of channels. The steps are:
- Description of the data column.
- First, chose a precision: E for single precision floating point
number (4 bytes), D for double precision floating point number (8
bytes).
- Second, browse your collection of spectra to find the one with
the highest number of channels (for example, 1793).
- Now you can give TFORMi the value 1793E:
TTYPE17 = 'SPECTRUM'
TFORM17 = '1793E '
- Description of the number-of-channel column. If your collection of
spectra contains spectra with different sizes, then you must specify
the number of channels of each spectrum. To do that, you have to use a
column MAXISi. i corresponds to the number of your
frequency/wavelength/velocity axis: usually 1.
TTYPE1 = 'MAXIS1 '
TFORM1 = '1J '
The values stored in this column will override the value given to the
keyword MAXIS1 at the beginning of the bintable header. If all
your spectra have the same number of channels, then you don't need a
MAXISi column. But make sure the MAXISi keyword at the
beginning of the bintable header has the correct value, which is the
number of channels of your spectra.
- Description of the reference channel. You may like to chose
the middle of your spectra to be the reference for frequencies. If you
have spectra with different sizes, then the reference channels may be
different for each spectrum. To override the value of the CRPIX1
keyword, you must use a CRPIX1 column.
TTYPE18 = 'CRPIX1 '
TFORM18 = '1E '
If your reference channel is always the first one, you can forget about
this column and give the value 1 to the CRPIX1 keyword.
- Filling the olumns. When it comes to fill the column with the data,
make sure you are always storing 1793 (for example) elements. If you
are to store a spectrum with only 512 channels, then store those 512
elements and pad with 1281 zeroes (single or double precision zeroes,
not bytes). You can see here the waste of space when you have a
significant amount of spectra much smaller that the widest one.
- Variable Length Arrays
- To save space and avoid filling half of your
data columns with padding zeroes, you can use the Variable Length Array
format described in the FITS standard (Definition of the Flexible Image
Transport System, version 2.1b, section 8.3.5).
The idea is not to store the data directly in the bintable records, but
in the heap area located after the bintable. In the SPECTRUM or
WAVE column, you will find an Array Descriptor which basically
consists in a pointer to a location in this heap area (an offset), and a
number of elements to read. By doing this, no padding is required any
longer. The FITS standart defines two kinds of Array Descriptors: P (two
32bits unsigned integers values) and Q (two 64 bits unsigned integers
values). CLASS only handles P.
You will not need a MAXIS1 column in this case, since the number of
channels is written in the SPECTUM column. You may still need a
CRPIX1 column to define your reference channels.
Next: Once FITS Always FITS
Up: BINTABLE Mode
Previous: Known keywords
Contents
Index
Gildas manager
2014-07-01