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
Tags Version-3.2.0
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.
Finish editing this message first!
Please register or to comment