CaltechOpticalObservatories / NGPS

NGPS Software
3 stars 0 forks source link

FITS headers missing keywords #160

Closed astronomerdave closed 1 month ago

astronomerdave commented 1 month ago

any mechanism position and status focus is broken at the moment

all actuator physical units

astronomerdave commented 1 month ago

@cfremling @chazshapiro I believe they are all present now, but could stand to be checked.

Example header below.

# HDU 0 in dh_0014.fits:
SIMPLE  =                    T / file does conform to FITS standard             
BITPIX  =                   16 / 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 is defined in 'Astronomy
COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H 
BZERO   =                32768 / offset data range to that of unsigned short    
BSCALE  =                    1 / default scaling factor                         
EXPTIME =                30000 / exposure time in msec                          
FITSNAME= '/data/20241022/dh_0014.fits' / this filename                         
GIT_HASH= '        '           / software git hash                              
INSTRUME= 'NGPS    '           / name of instrument                             
OBSLAT  =         33.353498586 / Observatory latitude                           
OBSLON  =         -116.8583299 / Observatory longitude                          
RADESYSA= 'ICRS    '                                                            
SHUTTEN =                    T / shutter was enabled                            
SW_BUILD= '        '           / software build date                            
TELESCOP= 'P200    '           / name of telescope                              
AZIMUTH =                 25.6 / TCS reported azimuth                           
CALCOVER= 'open    '           / calib cover state                              
CALDOOR = 'close   '           / calib door state                               
CASANGLE=                   0. / TCS reported Cassegrain angle in deg           
DEC     = '        '           / requested Declination in J2000                 
DECOFFS =                   0. / offset Declination                             
DOMEAZ  =                  25. / TCS reported dome azimuth                      
DOMESHUT= 'closed  '           / dome shutters                                  
HA      = 'W00:00:00.0'        / hour angle                                     
LAMPBLUC=                    F / is blue Xe continuum lamp on                   
LAMPFEAR=                    F / is FeAr lamp on                                
LAMPREDC=                    F / is red continuum lamp on                       
LAMPTHAR=                    T / is ThAr lamp on                                
MODBLBYP= 'off 0.5 1000'       / Blue bypass modulator pow dut per              
MODBLCON= 'off 0.5 1000'       / Blue continuum modulator pow dut per           
MODFEAR = 'off 0.5 1000'       / FeAr lamp modulator pow dut per                
MODRDBYP= 'off 0.5 1000'       / Red bypass modulator pow dut per               
MODRDCON= 'off 0.5 1000'       / Red continuum modulator pow dut per            
MODTHAR = 'off 0.5 1000'       / ThAr lamp modulator pow dut per                
RA      = '        '           / requested Right Ascension in J2000             
RAOFFS  =                   0. / offset Right Ascension                         
SLITO   =                   0. / slit offset in arcsec                          
SLITPOSA=           2.29999828 / slit actuator A position in mm                 
SLITPOSB=           2.29999828 / slit actuator B position in mm                 
SLITW   =           58.5579567 / slit width in arcsec                           
TARGET  = '        '           / target name                                    
TELDEC  = ' +00:00:00.000'     / TCS reported Declination                       
TELFOCUS=                36.71 / TCS reported telescope focus position in mm    
TELRA   = ' +00:00:00.000'     / TCS reported Right Ascension                   
ZENANGLE=                 30.1 / TCS reported Zenith angle                      
AIRMASS =                   1. / average of AIRMASS0 and AIRMASS1               
AIRMASS0=                   1. / airmass at start of exposure                   
AIRMASS1=                   1. / airmass at end of exposure                     
EXPSTART= '2024-10-22T06:25:30.438' / exposure start time                       
MJD     =       60605.26753979 / average of MJD0 and MJD1                       
MJD0    =       60605.26736618 / exposure start time (modified Julian Date)     
MJD1    =       60605.26771341 / exposure stop time (modified Julian Date)      
SHUTTIME=            30000.422 / actual shutter open time in msec               
DATE    = '2024-10-22T06:27:20.399' / FITS file write time                      
CHECKSUM= 'Ua7YaR7WVX7WaX7W'   / HDU checksum updated 2024-10-22T06:27:20       
DATASUM = '         0'         / data unit checksum updated 2024-10-22T06:27:20 

# HDU 1 in dh_0014.fits:
XTENSION= 'IMAGE   '           / IMAGE extension                                
BITPIX  =                   16 / number of bits per data pixel                  
NAXIS   =                    2 / number of data axes                            
NAXIS1  =                 4214 / length of data axis 1                          
NAXIS2  =                 1220 / length of data axis 2                          
PCOUNT  =                    0                                                  
GCOUNT  =                    1                                                  
BZERO   =                32768 / offset data range to that of unsigned short    
BSCALE  =                    1 / default scaling factor                         
EXTNAME = 'I       '                                                            
HDUVERS =                    1                                                  
AMP_ID  = 'U2      '           / readout amplifier                              
BIASSEC = '[4214:4314,1:1420]' / overscan section                               
BINSPAT =                    1 / binning in spatial direction                   
BINSPEC =                    1 / binning in spectral direction                  
CCDSEC  = '[1:4214,1:1220]'    / physical format of CCD                         
CCD_ID  = 'sg2     '           / CCD identifier parse                           
CDELT1A =                 0.69 / Dispersion in Angstrom/pixel                   
CRPIX1  =                    0                                                  
CRPIX1A =                  101                                                  
CRPIX2  =                    0                                                  
CRPIX2A =                    1                                                  
CRVAL1  =                    0                                                  
CRVAL1A =                7560. / Reference value in Angstrom                    
CRVAL2  =                    0                                                  
DATASEC = '[1:4214,1:1220]'    / section containing the CCD data                
DEV_ID  =                    0 / detector controller PCI device ID              
FIRMWARE= '/home/developer/Software/DSP/lod/sg2_20240315.lod'                   
FIRM_MD5= '0e44baf48f39149ba8f1daedad15bae1' / MD5 checksum of firmware         
FT      =                    F / frame transfer used                            
IMG_COLS=                 4214 / image cols                                     
IMG_ROWS=                 1220 / image rows                                     
LTV1    =                  100                                                  
LTV2    =                    0                                                  
OS_COLS =                  100 / overscan cols                                  
OS_ROWS =                  200 / overscan rows                                  
SKIPCOLS=                    0 / skipped cols                                   
SKIPROWS=                    0 / skipped rows                                   
SPEC_ID = 'I       '           / spectrograph channel                           
CDELT2A =                 0.25 / Spatial scale in arcsec/pixel                  
CRVAL2A =                   0. / Reference value in arcsec                      
CUNIT1A = 'Angstrom'                                                            
CUNIT2A = 'arcsec  '                                                            
HIERARCH SPECTPART = 'WHOLE   '                                                 
WCSAXES =                    2                                                  
WCSNAME = 'DISPLAY '                                                            
WCSNAMEA= 'SPECTRUM'                                                            
CCDTEMP =         145.04600525 / I CCD temperature in Kelvin                    
FLXPIS  =          99.99689484 / I flexure piston axis 1 (Z) in um              
FLXSPA  =           0.21923828 / I flexure spatial axis 3 (Y) in um             
FLXSPE  =           0.36151123 / I flexure spectral axis 2 (X) in um            
FOCUS   =           4.94999981 / science camera I focus position in mm          

# HDU 2 in dh_0014.fits:
XTENSION= 'IMAGE   '           / IMAGE extension                                
BITPIX  =                   16 / number of bits per data pixel                  
NAXIS   =                    2 / number of data axes                            
NAXIS1  =                 4214 / length of data axis 1                          
NAXIS2  =                 1220 / length of data axis 2                          
PCOUNT  =                    0                                                  
GCOUNT  =                    1                                                  
BZERO   =                32768 / offset data range to that of unsigned short    
BSCALE  =                    1 / default scaling factor                         
EXTNAME = 'R       '                                                            
HDUVERS =                    1                                                  
AMP_ID  = 'U1      '           / readout amplifier                              
BIASSEC = '[4214:4314,1:1420]' / overscan section                               
BINSPAT =                    1 / binning in spatial direction                   
BINSPEC =                    1 / binning in spectral direction                  
CCDSEC  = '[1:4214,1:1220]'    / physical format of CCD                         
CCD_ID  = 'engg    '           / CCD identifier parse                           
CDELT1A =                 0.57 / Dispersion in Angstrom/pixel                   
CRPIX1  =                    0                                                  
CRPIX1A =                  101                                                  
CRPIX2  =                    0                                                  
CRPIX2A =                  201                                                  
CRVAL1  =                    0                                                  
CRVAL1A =                5610. / Reference value in Angstrom                    
CRVAL2  =                 1240                                                  
DATASEC = '[1:4214,1:1220]'    / section containing the CCD data                
DEV_ID  =                    1 / detector controller PCI device ID              
FIRMWARE= '/home/developer/Software/DSP/lod/engg_20240315.lod'                  
FIRM_MD5= '598df36a3edbef10f99b255047e98d08' / MD5 checksum of firmware         
FT      =                    F / frame transfer used                            
IMG_COLS=                 4214 / image cols                                     
IMG_ROWS=                 1220 / image rows                                     
LTV1    =                  100                                                  
LTV2    =                  200                                                  
OS_COLS =                  100 / overscan cols                                  
OS_ROWS =                  200 / overscan rows                                  
SKIPCOLS=                    0 / skipped cols                                   
SKIPROWS=                    0 / skipped rows                                   
SPEC_ID = 'R       '           / spectrograph channel                           
CDELT2A =                 0.25 / Spatial scale in arcsec/pixel                  
CRVAL2A =                   0. / Reference value in arcsec                      
CUNIT1A = 'Angstrom'                                                            
CUNIT2A = 'arcsec  '                                                            
HIERARCH SPECTPART = 'WHOLE   '                                                 
WCSAXES =                    2                                                  
WCSNAME = 'DISPLAY '                                                            
WCSNAMEA= 'SPECTRUM'                           
cfremling commented 1 month ago

@cfremling @chazshapiro I believe they are all present now, but could stand to be checked. I think we should consider a separate keyword for image type, e.g. IMGTYPE this to give the simplest possible way to determine if an image is , flat, arc, std, science, bias. I guess we were planning to use TARGNAME for this purpose but let's say I want to immediately know if a new file is a science image, then this new keyword would allow 1 simple logic check, as opposed to checking that TARGNAME is not a part of a long list of different possibilities

astronomerdave commented 1 month ago

Where do I get that information and/or how do I determine the IMGTYPE to set that keyword?

chazshapiro commented 1 month ago

Calibration images will presumably have TARGET = "CAL_xxxx" so there's only 1 string to search for

astronomerdave commented 1 month ago

That implies only two image types, those with CAL and those without, but Christoffer suggests several types.

chazshapiro commented 1 month ago

There will be CAL_BIAS, CAL_FLAT, CAL_DARK, etc.

but let's say I want to immediately know if a new file is a science image, then this new keyword would allow 1 simple logic check, as opposed to checking that TARGNAME is not a part of a long list of different possibilities

He will only have to check for "CAL_"

astronomerdave commented 1 month ago

In that case, I can just as easily parse those strings from the target name and set the IMGTYPE. But if we're requiring the user to remember to use a special target name (how would they even know that in the first place?) then it would probably be better to have an initial database column for IMGTYPE. At least that would signify, "oh, I can select an image type" rather than know the secret handshake.

chazshapiro commented 1 month ago

If we’re going to have an IMGTYPE column I’m not sure why we have the CAL_ code. That’s there to tell the OTM that missing TCS info is ok. It could just look for the SCIENCE type. The code was our original solution. Also I thought the general users were not initiating their own calibration sets.

PS. Adding a column to the targets db is a PITA for the java.

-- Dr. Charles Shapiro (he/him) Advanced Detectors, Systems, & Nanoscience NASA Jet Propulsion Laboratory


From: David Hale @.> Sent: Tuesday, October 22, 2024 2:57:58 PM To: CaltechOpticalObservatories/NGPS @.> Cc: Shapiro, Charles A (US 389E) @.>; Mention @.> Subject: [EXTERNAL] Re: [CaltechOpticalObservatories/NGPS] FITS headers missing keywords (Issue #160)

In that case, I can just as easily parse those strings from the target name and set the IMGTYPE. But if we're requiring the user to remember to use a special target name (how would they even know that in the first place?) then it would probably be better to have an initial database column for IMGTYPE. At least that would signify, "oh, I can select an image type" rather than know the secret handshake.

— Reply to this email directly, view it on GitHubhttps://urldefense.us/v3/__https://github.com/CaltechOpticalObservatories/NGPS/issues/160*issuecomment-2430390868__;Iw!!PvBDto6Hs4WbVuu7!OnmJNjyJF4w7rqQI8wRQ2q8h9OZalY1u09t4Zjzo4R0zXXZhRo3zgprzhKoMBbhduSe9l-0Z6mvqpleISqSuWLxNkTApgcKftyI$, or unsubscribehttps://urldefense.us/v3/__https://github.com/notifications/unsubscribe-auth/ACE4SRIRVGBF76OF2DJRIQLZ43C6NAVCNFSM6AAAAABQEG2SQOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZQGM4TAOBWHA__;!!PvBDto6Hs4WbVuu7!OnmJNjyJF4w7rqQI8wRQ2q8h9OZalY1u09t4Zjzo4R0zXXZhRo3zgprzhKoMBbhduSe9l-0Z6mvqpleISqSuWLxNkTApoWMEzP0$. You are receiving this because you were mentioned.Message ID: @.***>

astronomerdave commented 1 month ago

I know that was our original solution, and I'm now questioning that decision. Talking with Dekany today, he tells me it is entirely plausible to expect an astronomer will want to start up the instrument themselves and take calibrations, etc.

chazshapiro commented 1 month ago

Sounds like the calibration design requirements need to be redone before moving ahead.

-- Dr. Charles Shapiro (he/him) Advanced Detectors, Systems, & Nanoscience NASA Jet Propulsion Laboratory


From: David Hale @.> Sent: Tuesday, October 22, 2024 3:17:37 PM To: CaltechOpticalObservatories/NGPS @.> Cc: Shapiro, Charles A (US 389E) @.>; Mention @.> Subject: [EXTERNAL] Re: [CaltechOpticalObservatories/NGPS] FITS headers missing keywords (Issue #160)

I know that was our original solution, and I'm now questioning that decision. Talking with Dekany today, he tells me it is entirely plausible to expect an astronomer will want to start up the instrument themselves and take calibrations, etc.

— Reply to this email directly, view it on GitHubhttps://urldefense.us/v3/__https://github.com/CaltechOpticalObservatories/NGPS/issues/160*issuecomment-2430420123__;Iw!!PvBDto6Hs4WbVuu7!NRfgSDjUE3FMAzCyFG0WeUhIGlAyrc9cjlfvhl9KpeYft_A86x48-JfoeAWPRrxhrzxmW_RRlc1kVi5cnr_CVpSaJzvUKCo3G58$, or unsubscribehttps://urldefense.us/v3/__https://github.com/notifications/unsubscribe-auth/ACE4SRMEXJBBTBLJCZ7U6WTZ43FIDAVCNFSM6AAAAABQEG2SQOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZQGQZDAMJSGM__;!!PvBDto6Hs4WbVuu7!NRfgSDjUE3FMAzCyFG0WeUhIGlAyrc9cjlfvhl9KpeYft_A86x48-JfoeAWPRrxhrzxmW_RRlc1kVi5cnr_CVpSaJzvU4kppPGQ$. You are receiving this because you were mentioned.Message ID: @.***>

astronomerdave commented 1 month ago

Closing this now because the bug aspect is resolved and the only remaining keyword seems like it won't be resolved before commissioning, and may be entitled to its own issue.