Structure#

Current fits header#

$ clu
lvmcam expose -r 00h42m44s -d 41d16m09s -K 10 -f 1800 0.5 3 sci.agw
00:37:43.916 lvmcam >
00:37:47.262 lvmcam : {
    "PATH": {
        "0": "/home/mgjeon/lvmcam/python/lvmcam/assets/lvm/sci/agw/20211203/lvm.sci.agw-00000001.fits",
        "1": "/home/mgjeon/lvmcam/python/lvmcam/assets/lvm/sci/agw/20211203/lvm.sci.agw-00000002.fits",
        "2": "/home/mgjeon/lvmcam/python/lvmcam/assets/lvm/sci/agw/20211203/lvm.sci.agw-00000003.fits"
    }
}

The current headers of fits file are as follows.

SIMPLE  =                    T / conforms to FITS standard
BITPIX  =                   16 / array data type
NAXIS   =                    3 / number of array dimensions
NAXIS1  =                 1600
NAXIS2  =                 1100
NAXIS3  =                    1
EXTEND  =                    T
BSCALE  =                    1
BZERO   =                32768
CAMNAME = 'sci.agw '           / Camera name
CAMUID  =             19283193 / Camera UID
IMAGETYP= 'object  '           / The image type of the file
EXPTIME =                  0.5 / Exposure time of single integration [s]
DATE-OBS= '2021-12-03T00:38:23.151' / Date (in TIMESYS) the exposure started
PXFORMAT= 'Mono16  '           / Pixel format
FULLFRAM= '1608x1104'          / Full Frame
ROI     = '1600x1100 at 0,0'   / ROI
FRAMSIZE=              3520000 / Frame size (Bytes)
FRAMRATE=    3.392067663337556 / Frame rate (Hz)
EXPTIME =   0.5000019999999999 / Exposure time (seconds)
GAINCONV= 'LCG     '           / Gain Conv.
GAMMAENA=                    F / Gamma Enable
GAMMAVAL=       0.800048828125 / Gamma Value
ACQUIMOD= 'SingleFrame'        / Acquisition mode
FRMRATBD= '(min=1.0, max=3.3953648380635064)' / Framerate bounds
EXPTIMBD= '(min=14.0, max=30000003.0)' / Exp. time bounds
GAINBD  = '(min=0.0, max=47.994294033026364)' / Gain bounds
VOLTAGE =        9.75341796875 / Power Supply Voltage (V)
CURRENT =        0.28271484375 / Power Supply Current (A)
POWER   =     1.46920382976532 / Total Dissiapted Power (W)
CAMTEMP =               33.375 / Camera Temperature (C)
CUNIT1  = 'deg     '           / WCS units along axis 1
CUNIT2  = 'deg     '           / WCS units along axis 2
CTYPE1  = 'RA---TAN'           / WCS type axis 1
CTYPE2  = 'DEC--TAN'           / WCS type axis 2
CRVAL1  =    10.68333333333333 / [deg] RA at reference pixel
CRVAL2  =    41.26916666666666 / [deg] DEC at reference pixel
CD1_1   = -9.7981553605101E-05 / [deg/px] WCS matrix diagonal
CD2_2   = 9.79815536051017E-05 / [deg/px] WCS matrix diagonal
CD1_2   = -0.00026920210605309 / [deg/px] WCS matrix outer diagonal
CD2_1   = -0.00026920210605309 / [deg/px] WCS matrix outer diagonal
CHECKSUM= '9HDAHH969HCAEH95'   / HDU checksum updated 2021-12-03T09:37:47
DATASUM = '916223505'          / data unit checksum updated 2021-12-03T09:37:47
END

The above headers are created by different sources such as sdss/basecam, sdss/araviscam, and sdss/LVM_FLIR_Software.

Current rule of fits file name#

The rule is filepath/dirname/basename.

$ clu
lvmcam expose -r 00h42m44s -d 41d16m09s -K 10 -f 1800 0.5 3 sci.agw
00:37:43.916 lvmcam >
00:37:47.262 lvmcam : {
    "PATH": {
        "0": "/home/mgjeon/lvmcam/python/lvmcam/assets/lvm/sci/agw/20211203/lvm.sci.agw-00000001.fits",
        "1": "/home/mgjeon/lvmcam/python/lvmcam/assets/lvm/sci/agw/20211203/lvm.sci.agw-00000002.fits",
        "2": "/home/mgjeon/lvmcam/python/lvmcam/assets/lvm/sci/agw/20211203/lvm.sci.agw-00000003.fits"
    }
}
# cameras.yaml
cameras:
  sci.agw:
    name: "sci.agw"
    ...
    path:
          basename: "lvm.{camera.name}-{num:08d}.fits"
          dirname: "lvm/sci/agw/{date.strftime('%Y%m%d')}"
          filepath: "python/lvmcam/assets"

About files#

Cameras setting file is lvmcam/python/lvmcam/etc/cameras.yaml.

Default file path where images are saved is lvmcam/python/lvmcam/assets/....

Sequence diagram of lvmcam#

_images/lvmcam_sequence_diagram.png

Development#

For developing lvmcam, you can start lvmcam by typing commands below.

Debug mode

$ lvmcam start --debug

Normal mode

$ lvmcam start
$ lvmcam stop

If you want to build lvmcam docker package, use following command.

$ poetry run container_build --no-cache

If you want to make lvmcam document page, use following commands.

$ cd docs/sphinx/
$ pip install -r requirements.txt
$ make html