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

Minor improvements and optimizations

parent a7656a07
No related branches found
No related tags found
No related merge requests found
pro fix_fits_header, filename pro fix_fits_header, filename
fits_info, filename, n_ext = n_ext, /silent fits_info, filename, n_ext = n_ext, /silent
for ext = 0, n_ext do begin 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 for k = 0, n_elements(header) - 1 do begin
while header[k].matches('\/ +') do begin while header[k].matches('\/ +') do begin
header[k] = header[k].replace('/ ', '/ ') header[k] = header[k].replace('/ ', '/ ')
endwhile endwhile
endfor endfor
fits_add_checksum, header, data
modfits, filename, 0, header, exten_no = ext modfits, filename, 0, header, exten_no = ext
endfor endfor
end end
\ No newline at end of file
...@@ -121,6 +121,14 @@ pro metis_l2_prep_uv ...@@ -121,6 +121,14 @@ pro metis_l2_prep_uv
end end
endcase endcase
; make rotations and compute absolute error
if not ref_detector then data = metis_rectify(data, 'UV')
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'UV')
if not ref_detector then error = metis_rectify(error, 'UV')
error_matrix = data * sqrt(error)
; definitions for the primary header ; definitions for the primary header
; version of the fits file ; version of the fits file
...@@ -145,6 +153,8 @@ pro metis_l2_prep_uv ...@@ -145,6 +153,8 @@ pro metis_l2_prep_uv
fxaddpar, primary_header, 'VERS_SW', input.sw_version fxaddpar, primary_header, 'VERS_SW', input.sw_version
fxaddpar, primary_header, 'VERS_CAL', cal_pack.version fxaddpar, primary_header, 'VERS_CAL', cal_pack.version
fxaddpar, primary_header, 'VERSION', version fxaddpar, primary_header, 'VERSION', version
fxaddpar, primary_header, 'OBJECT', 'Sun'
fxaddpar, primary_header, 'TARGET', 'Corona'
fxaddpar, primary_header, 'BTYPE', btype fxaddpar, primary_header, 'BTYPE', btype
fxaddpar, primary_header, 'BUNIT', bunit fxaddpar, primary_header, 'BUNIT', bunit
fxaddpar, primary_header, 'DATAMIN', min(data, /nan) fxaddpar, primary_header, 'DATAMIN', min(data, /nan)
...@@ -197,20 +207,19 @@ pro metis_l2_prep_uv ...@@ -197,20 +207,19 @@ pro metis_l2_prep_uv
fxaddpar, primary_header, 'HISTORY', history[k] fxaddpar, primary_header, 'HISTORY', history[k]
fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date
if not ref_detector then data = metis_rectify(data, 'UV') ; write the fits file
fits_add_checksum, primary_header, float(data) fits_add_checksum, primary_header, float(data)
mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent
journal, 'Fits file created:' journal, 'Fits file created:'
journal, ' file name = ' + file_basename(out_file_name) journal, ' file name = ' + file_basename(out_file_name)
; add the extension with the quality matrix ; quality matrix
base_header = primary_header base_header = primary_header
sxdelpar, base_header, 'SIMPLE' sxdelpar, base_header, 'SIMPLE'
sxdelpar, base_header, 'EXTEND' sxdelpar, base_header, 'EXTEND'
sxdelpar, base_header, 'DATASUM'
sxdelpar, base_header, 'CHECKSUM'
sxdelpar, base_header, 'COMMENT' sxdelpar, base_header, 'COMMENT'
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
...@@ -227,16 +236,16 @@ pro metis_l2_prep_uv ...@@ -227,16 +236,16 @@ pro metis_l2_prep_uv
fxaddpar, extension_header, 'COMMENT', ' NaN = saturated or null L0 pixel counts' fxaddpar, extension_header, 'COMMENT', ' NaN = saturated or null L0 pixel counts'
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'UV')
; add the extension to the fits file
fits_add_checksum, extension_header, float(quality_matrix) fits_add_checksum, extension_header, float(quality_matrix)
mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
; add the extension with the error matrix ; error matrix
if not ref_detector then error = metis_rectify(error, 'UV')
error_matrix = data * sqrt(error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX' fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
...@@ -246,6 +255,8 @@ pro metis_l2_prep_uv ...@@ -246,6 +255,8 @@ pro metis_l2_prep_uv
fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan) fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan)
fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan) fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan)
; add the extension to the fits file
fits_add_checksum, extension_header, float(error_matrix) fits_add_checksum, extension_header, float(error_matrix)
mwrfits, float(error_matrix), out_file_name, extension_header, /no_comment, /silent mwrfits, float(error_matrix), out_file_name, extension_header, /no_comment, /silent
......
...@@ -137,6 +137,14 @@ pro metis_l2_prep_vl_generic ...@@ -137,6 +137,14 @@ pro metis_l2_prep_vl_generic
end end
endcase endcase
; make rotations and compute absolute error
if not ref_detector then data = metis_rectify(data, 'VL')
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'VL')
if not ref_detector then error = metis_rectify(error, 'VL')
error_matrix = data * sqrt(error)
; definitions for the primary header ; definitions for the primary header
; version of the fits file ; version of the fits file
...@@ -160,6 +168,8 @@ pro metis_l2_prep_vl_generic ...@@ -160,6 +168,8 @@ pro metis_l2_prep_vl_generic
fxaddpar, primary_header, 'VERS_SW', input.sw_version fxaddpar, primary_header, 'VERS_SW', input.sw_version
fxaddpar, primary_header, 'VERS_CAL', cal_pack.version fxaddpar, primary_header, 'VERS_CAL', cal_pack.version
fxaddpar, primary_header, 'VERSION', version fxaddpar, primary_header, 'VERSION', version
fxaddpar, primary_header, 'OBJECT', 'Sun'
fxaddpar, primary_header, 'TARGET', 'Corona'
fxaddpar, primary_header, 'BTYPE', btype fxaddpar, primary_header, 'BTYPE', btype
fxaddpar, primary_header, 'BUNIT', bunit fxaddpar, primary_header, 'BUNIT', bunit
fxaddpar, primary_header, 'DATAMIN', min(data, /nan) fxaddpar, primary_header, 'DATAMIN', min(data, /nan)
...@@ -232,22 +242,19 @@ pro metis_l2_prep_vl_generic ...@@ -232,22 +242,19 @@ pro metis_l2_prep_vl_generic
fxaddpar, primary_header, 'HISTORY', history[k] fxaddpar, primary_header, 'HISTORY', history[k]
fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date fxaddpar, primary_header, 'HISTORY', 'L2 FITS file created on ' + date
; add checksum and datasum to the fits header ; write the fits file
if not ref_detector then data = metis_rectify(data, 'VL')
fits_add_checksum, primary_header, float(data) fits_add_checksum, primary_header, float(data)
mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent mwrfits, float(data), out_file_name, primary_header, /no_comment, /create, /silent
journal, 'Fits file created:' journal, 'Fits file created:'
journal, ' file name = ' + file_basename(out_file_name) journal, ' file name = ' + file_basename(out_file_name)
; add the extension with the quality matrix ; quality matrix
base_header = primary_header base_header = primary_header
sxdelpar, base_header, 'SIMPLE' sxdelpar, base_header, 'SIMPLE'
sxdelpar, base_header, 'EXTEND' sxdelpar, base_header, 'EXTEND'
sxdelpar, base_header, 'DATASUM'
sxdelpar, base_header, 'CHECKSUM'
sxdelpar, base_header, 'COMMENT' sxdelpar, base_header, 'COMMENT'
sxdelpar, base_header, 'HISTORY' sxdelpar, base_header, 'HISTORY'
...@@ -264,16 +271,16 @@ pro metis_l2_prep_vl_generic ...@@ -264,16 +271,16 @@ pro metis_l2_prep_vl_generic
fxaddpar, extension_header, 'COMMENT', ' NaN = saturated or null L0 pixel counts' fxaddpar, extension_header, 'COMMENT', ' NaN = saturated or null L0 pixel counts'
fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value' fxaddpar, extension_header, 'COMMENT', ' 0 = unreliable pixel value'
fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel' fxaddpar, extension_header, 'COMMENT', ' 1 = good pixel'
if not ref_detector then quality_matrix = metis_rectify(quality_matrix, 'VL')
; add the extension to the fits file
fits_add_checksum, extension_header, float(quality_matrix) fits_add_checksum, extension_header, float(quality_matrix)
mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent mwrfits, float(quality_matrix), out_file_name, extension_header, /no_comment, /silent
journal, 'Quality-matrix extension correctly added.' journal, 'Quality-matrix extension correctly added.'
; add the extension with the error matrix ; error matrix
if not ref_detector then error = metis_rectify(error, 'VL')
error_matrix = data * sqrt(error)
extension_header = base_header extension_header = base_header
fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX' fxaddpar, extension_header, 'XTENSION', 'IMAGE', 'image extension', before = 'BITPIX'
fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN' fxaddpar, extension_header, 'PCOUNT', 0, 'parameter count', before = 'LONGSTRN'
...@@ -282,6 +289,9 @@ pro metis_l2_prep_vl_generic ...@@ -282,6 +289,9 @@ pro metis_l2_prep_vl_generic
fxaddpar, extension_header, 'BTYPE', 'Absolute error' fxaddpar, extension_header, 'BTYPE', 'Absolute error'
fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan) fxaddpar, extension_header, 'DATAMIN', min(error_matrix, /nan)
fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan) fxaddpar, extension_header, 'DATAMAX', max(error_matrix, /nan)
; add the extension to the fits file
fits_add_checksum, extension_header, float(error_matrix) fits_add_checksum, extension_header, float(error_matrix)
mwrfits, float(error_matrix), out_file_name, extension_header, /no_comment, /silent mwrfits, float(error_matrix), out_file_name, extension_header, /no_comment, /silent
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment