gfa_images

Overview

This is the image data from the DESI Guide-Focus-Alignment (GFA) CCDs.

Creators

  • Guider-Focus-Alignment system
  • PlateMaker testing and simulation
    • nfssim

Users

  • gfaproc
  • internal to PlateMaker
    • nomadCenter

Contents

Image data

These data consist of a set of images, ordered by increasing petal number.

Storage and access

Through DOS

After the seqid is set, the set and get PML commands may be used to provide PlateMaker with the targets, and retrieve them back if wanted.

First, a PML connection must be established:

>>> from DOSlib.PML import dos_connection
>>> pm = dos_connection('PLATEMAKER')
>>> pm.execute('configure')
'SUCCESS'

and same sample data loaded:

>>> from PlateMaker import test_data
>>> gfa_images = test_data.gfa_images

The python represnation shall be a FITS dictionary, in which keyword/value pairs are stored directly. The image itself shall be stored as a numpy ndarray assigned to the data keyword of this dictionary:

>>> gfa_images.keys()
odict_keys(['OBSNUM', 'TILEID', 'RA', 'DEC', 'LST', 'MJD', 'DATE-OBS', 'EXPTIME', 'INSTRUME', 'OPENSHUT', 'DEVICE', 'OBSTYPE', 'OBSFRAME', 'EXPREQ', 'TIME-OBS', 'data', 'ext_name'])
>>> gfa_images['data'][1].dtype
dtype('>i4')
>>> gfa_images['data'][1].shape
(1024, 2048)

We need to set the seqid in PlateMaker to prepare it for working on a sequence:

>>> pm.execute('set', seqid=52254)
'SUCCESS'

Then we can set targets:

>>> pm.execute('set', gfa_images=gfa_images)
'SUCCESS'

and get them back (not generally useful):

>>> retrieved_gfa_images = pm.execute('get', 'gfa_images')

Preferred file representation

Name template:gfa-${SEQID}.fits
Format:FITS

All keywords appear in the primary header (HDU0), and the GFA image appears in the primary HDU as well.

Example FITS header

Images start in HDU 1, in order of petal number. (The primary HDU contains to image.)

::
>>> import astropy.io.fits as fits
>>> from PlateMaker import test_data
>>> fname = test_data.data_dir + '/gfa-52254.1.fits'
>>> for idx, hdu in enumerate(fits.open(fname)):
...     print("******** HDU " + str(idx) + " ********")
...     hdu.header 
...
******** HDU 0 ********
SIMPLE  =                    T
BITPIX  =                   16
NAXIS   =                    0
EXTEND  =                    T
OBSNUM  =                52254 / Exposure ID
TILEID  =                52254 / Tile ID
RA      = 1.80000000000000E+02 / Degrees
DEC     = 1.00000000000000E+01 / Degrees
LST     = '12:00:00.00'        / Sidereal Time (Babylonian)
MJD     = 5.82046583680556E+04 / Modified Julian Date
DATE-OBS= '2018-03-27T15:00:00' / UT Date/Time
EXPTIME = 1.00000000000000E+01
INSTRUME= 'DESI    '           / Proto or full DESI
OPENSHUT= '2018-03-27T15:00:00' / UT Date/Time
DEVICE  = 'GFA1G   '           / Device location
OBSTYPE = 'FULL    '           / Observation type
FILENAME= ''/tmp/junk.fits''
OBSFRAME=                    0
EXPREQ  = 1.00000000000000E+01 / Requested exposure time
TIME-OBS= '15:00:00"'          / UT time only
CHECKSUM= 'checksum'           / HDU checksum updated xxxx
DAASUM  = 'datasum '           / HDU checksum updated xxxx
NEXTEND =                    6 / Number of extension images
******** HDU 1 ********
XTENSION= 'IMAGE   '
BITPIX  =                   32
NAXIS   =                    2
NAXIS1  =                 2048
NAXIS2  =                 1024
PCOUNT  =                    0
GCOUNT  =                    1
EXTNAME = '3       '
******** HDU 2 ********
XTENSION= 'IMAGE   '
BITPIX  =                   32
NAXIS   =                    2
NAXIS1  =                 2048
NAXIS2  =                 1024
PCOUNT  =                    0
GCOUNT  =                    1
EXTNAME = '5       '
******** HDU 3 ********
XTENSION= 'IMAGE   '
BITPIX  =                   32
NAXIS   =                    2
NAXIS1  =                 2048
NAXIS2  =                 1024
PCOUNT  =                    0
GCOUNT  =                    1
EXTNAME = '7       '
******** HDU 4 ********
XTENSION= 'IMAGE   '
BITPIX  =                   32
NAXIS   =                    2
NAXIS1  =                 2048
NAXIS2  =                 1024
PCOUNT  =                    0
GCOUNT  =                    1
EXTNAME = '8       '
******** HDU 5 ********
XTENSION= 'IMAGE   '
BITPIX  =                   32
NAXIS   =                    2
NAXIS1  =                 2048
NAXIS2  =                 1024
PCOUNT  =                    0
GCOUNT  =                    1
EXTNAME = '0       '
******** HDU 6 ********
XTENSION= 'IMAGE   '
BITPIX  =                   32
NAXIS   =                    2
NAXIS1  =                 2048
NAXIS2  =                 1024
PCOUNT  =                    0
GCOUNT  =                    1
EXTNAME = '2       '