Skip to content
Snippets Groups Projects
Commit da65e35e authored by Roberto Susino's avatar Roberto Susino
Browse files

Minor improvements and optimizations

parent c37f3cf9
No related branches found
No related tags found
No related merge requests found
pro fix_fits_header, filename
fits_info, filename, n_ext = n_ext, /silent
for ext = 0, n_ext do begin
data = readfits(filename, header, exten_no = ext, /silent)
data = readfits(filename, header, exten_no = ext, /noscale, /silent)
for k = 0, n_elements(header) - 1 do begin
while header[k].matches('\/ +') do begin
header[k] = header[k].replace('/ ', '/ ')
......
......@@ -68,7 +68,8 @@ pro metis_l1_prep
; if the data product is a light curve or a pcu-event list, read the data binary hk_table
if datatype gt 6 then data_bin_table = mrdfits(input.file_name, 1, data_extension_header, /silent) else data_bin_table = !null
if datatype gt 6 then $
data_bin_table = mrdfits(input.file_name, 1, data_extension_header, /silent) else data_bin_table = !null
; if the data product is an accumulation matrix, look for the accumulation vector extension and read it if it exists
......@@ -297,6 +298,20 @@ pro metis_l1_prep
; adjust the primary header (it is almost the same for all data product types)
; remove redundant and misleading keywords
sxdelpar, primary_header, 'WIDTH'
sxdelpar, primary_header, 'HEIGHT'
sxdelpar, primary_header, 'X_SIZE'
sxdelpar, primary_header, 'Y_SIZE'
sxdelpar, primary_header, 'Z_SIZE'
sxdelpar, primary_header, 'P_BANDS'
sxdelpar, primary_header, 'N_BANDS'
sxdelpar, primary_header, 'ORIG_X'
sxdelpar, primary_header, 'ORIG_Y'
; update the other keywords
fxaddpar, primary_header, 'FILENAME', file_name
fxaddpar, primary_header, 'PARENT', file_basename(input.file_name), 'name of the parent file', before = 'APID'
fxaddpar, primary_header, 'DATE', date, 'date and time of FITS file creation', before = 'OBT_BEG'
......@@ -315,7 +330,7 @@ pro metis_l1_prep
fxaddpar, primary_header, 'OBSRVTRY', 'Solar Orbiter', 'satellite name', before = 'INSTRUME'
fxaddpar, primary_header, 'TELESCOP', telescope, 'telescope that took the measurement', before = 'INSTRUME'
fxaddpar, primary_header, 'DETECTOR', detector, 'subunit/sensor', before = 'DATAMIN'
fxaddpar, primary_header, 'OBJECT', 'TBD', 'the use of the keyword OBJECT is [TBD]', before = 'DATAMIN'
fxaddpar, primary_header, 'OBJECT', 'Sun', 'the use of the keyword OBJECT is [TBD]', before = 'DATAMIN'
fxaddpar, primary_header, 'OBS_MODE', planning_data.obs_mode, 'observation mode', before = 'DATAMIN'
fxaddpar, primary_header, 'OBS_TYPE', obs_type, 'encoded version of OBS_MODE', before = 'DATAMIN'
fxaddpar, primary_header, 'FILTER', filter, 'filter used to acquire this image', before = 'DATAMIN'
......@@ -329,7 +344,7 @@ pro metis_l1_prep
fxaddpar, primary_header, 'SOOPNAME', planning_data.soop_name, 'name of the SOOP that the data belong to', before = 'DATAMIN'
fxaddpar, primary_header, 'SOOPTYPE', sooptype, 'campaign ID(s) that the data belong to', before = 'DATAMIN'
fxaddpar, primary_header, 'OBS_ID', planning_data.obs_id, 'unique ID of the individual observation', before = 'DATAMIN'
fxaddpar, primary_header, 'TARGET', 'TBD', 'type of target from planning', before = 'DATAMIN'
fxaddpar, primary_header, 'TARGET', 'Corona', 'type of target from planning', before = 'DATAMIN'
fxaddpar, primary_header, 'BSCALE', 1, 'ratio of physical to array value at 0 offset', before = 'DATAMIN'
fxaddpar, primary_header, 'BZERO', 0, 'physical value for the array value 0', before = 'DATAMIN'
fxaddpar, primary_header, 'BTYPE', metis_datatype[datatype], 'science data object type', before = 'DATAMIN'
......@@ -412,7 +427,7 @@ pro metis_l1_prep
if empty_params eq !null then empty_params = ''
; replace with text keyword values
; replace with user-friendly keyword values
key = fxpar(primary_header, 'MEASKIND', count = count)
if count gt 0 then begin
......@@ -467,31 +482,24 @@ pro metis_l1_prep
if datatype le 6 then begin
wcs = metis_wcs(header, cal_pack, ref_detector = ref_detector)
foreach element, wcs do fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE'
foreach element, wcs do $
fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE'
endif
; append solar keywords
ephemeris = solo_get_ephemeris(header, cal_pack)
foreach element, ephemeris do fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE'
fxaddpar, primary_header, 'HISTORY', 'WCS and solar ephemeris:'
fxaddpar, primary_header, 'HISTORY', ' SKD version = ' + kernel_version
; remove redundant and misleading keywords
sxdelpar, primary_header, 'WIDTH'
sxdelpar, primary_header, 'HEIGHT'
sxdelpar, primary_header, 'X_SIZE'
sxdelpar, primary_header, 'Y_SIZE'
sxdelpar, primary_header, 'Z_SIZE'
sxdelpar, primary_header, 'P_BANDS'
sxdelpar, primary_header, 'N_BANDS'
sxdelpar, primary_header, 'ORIG_X'
sxdelpar, primary_header, 'ORIG_Y'
foreach element, ephemeris do $
fxaddpar, primary_header, element.name, element.value, element.comment, before = 'DATATYPE'
; modify keywords for file history
history = header.history
sxdelpar, primary_header, 'HISTORY'
for k = 1, n_elements(history) - 1 do $
fxaddpar, primary_header, 'HISTORY', history[k]
fxaddpar, primary_header, 'HISTORY', 'WCS and solar ephemeris:'
fxaddpar, primary_header, 'HISTORY', ' SKD version = ' + kernel_version
fxaddpar, primary_header, 'HISTORY', 'L1 FITS file created on ' + date
; modify keywords for comments
......@@ -512,14 +520,12 @@ pro metis_l1_prep
fxaddpar, primary_header, 'COMMENT', comment[k]
endif
; rectify the image if requested
; make rotations if necessary
if not ref_detector then begin
data = metis_rectify(data, filter)
quality_matrix = metis_rectify(quality_matrix, filter)
endif
if not ref_detector then data = metis_rectify(data, filter)
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, filter)
; add checksum and datasum to the fits header and save
; write the fits file
fits_add_checksum, primary_header, data
mwrfits, data, out_file_name, primary_header, /no_comment, /create, /silent
......@@ -586,5 +592,6 @@ pro metis_l1_prep
journal, 'Exiting without errors.'
journal
exit, status = 0
end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment