Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
L1 pipeline
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Analyze
Contributor analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Metis scientific pipeline
L1 pipeline
Compare revisions
f0ee5a1c90fe478bf88a3b5b72b9ad9e0fe030d0 to 0beeb91ccb96b1d69c896ffdc1feec6e9e1340c0
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
metis-scientific-pipeline/l1-pipeline
Select target project
No results found
0beeb91ccb96b1d69c896ffdc1feec6e9e1340c0
Select Git revision
Branches
master
Tags
Version-3.0.0
Version-3.1.0
Version-3.1.1
Version-3.1.2
Version-3.2.0
Version-3.2.1
Version-3.3.0
8 results
Swap
Target
metis-scientific-pipeline/l1-pipeline
Select target project
metis-scientific-pipeline/l1-pipeline
1 result
f0ee5a1c90fe478bf88a3b5b72b9ad9e0fe030d0
Select Git revision
Branches
master
Tags
Version-3.0.0
Version-3.1.0
Version-3.1.1
Version-3.1.2
Version-3.2.0
Version-3.2.1
Version-3.3.0
8 results
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source
2
Minor improvements and optimizations
· da65e35e
Roberto Susino
authored
Feb 14, 2024
da65e35e
Fix headers in FITS extensions
· 0beeb91c
Roberto Susino
authored
Feb 14, 2024
0beeb91c
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
fix_fits_header.pro
+1
-1
1 addition, 1 deletion
fix_fits_header.pro
metis_l1_prep.pro
+100
-41
100 additions, 41 deletions
metis_l1_prep.pro
with
101 additions
and
42 deletions
fix_fits_header.pro
View file @
0beeb91c
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
(
'/ '
,
'/ '
)
...
...
This diff is collapsed.
Click to expand it.
metis_l1_prep.pro
View file @
0beeb91c
...
...
@@ -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
sav
e
;
write
the
fits
fil
e
fits_add_checksum
,
primary_header
,
data
mwrfits
,
data
,
out_file_name
,
primary_header
,
/
no_comment
,
/
create
,
/
silent
...
...
@@ -527,35 +533,87 @@ pro metis_l1_prep
journal
,
'Fits file created:'
journal
,
' file name = '
+
out_file_name
base_header
=
primary_header
sxdelpar
,
base_header
,
'SIMPLE'
sxdelpar
,
base_header
,
'EXTEND'
sxdelpar
,
base_header
,
'COMMENT'
sxdelpar
,
base_header
,
'HISTORY'
;
if
applicable
,
save
the
data
binary
-
table
extension
as
it
is
if
isa
(
data_bin_table
)
then
begin
if
datatype
lt
9
then
fits_add_checksum
,
data_extension_header
,
data_bin_table
mwrfits
,
data_bin_table
,
out_file_name
,
data_extension_header
,
/
no_comment
,
/
silent
extension_header
=
base_header
sxdelpar
,
extension_header
,
'BSCALE'
sxdelpar
,
extension_header
,
'BZERO'
sxdelpar
,
extension_header
,
'BUNIT'
sxdelpar
,
extension_header
,
'BTYPE'
sxdelpar
,
extension_header
,
'BLANK'
sxdelpar
,
extension_header
,
'DATAMIN'
sxdelpar
,
extension_header
,
'DATAMAX'
fxaddpar
,
extension_header
,
'XTENSION'
,
'BINTABLE'
,
'binary table extension'
,
before
=
'BITPIX'
fxaddpar
,
extension_header
,
'NAXIS'
,
2
,
'number of data axes'
fxaddpar
,
extension_header
,
'NAXIS1'
,
0
,
'length of dimension 1'
,
after
=
'NAXIS'
fxaddpar
,
extension_header
,
'NAXIS2'
,
0
,
'length of dimension 2'
,
after
=
'NAXIS1'
fxaddpar
,
extension_header
,
'PCOUNT'
,
0
,
'parameter count'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'GCOUNT'
,
1
,
'group count'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'TFIELDS'
,
0
,
'number of columns in table'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'EXTNAME'
,
fxpar
(
data_extension_header
,
'EXTNAME'
),
'extension name'
,
before
=
'LONGSTRN'
;
add
the
extension
to
the
fits
file
mwrfits
,
data_bin_table
,
out_file_name
,
extension_header
,
/
no_comment
,
/
silent
endif
;
save
the
quality
matrix
if
datatype
le
6
and
isa
(
quality_matrix
)
then
begin
quality_matrix_header
=
!
null
fxaddpar
,
quality_matrix_header
,
'PCOUNT'
,
0
,
'parameter count'
fxaddpar
,
quality_matrix_header
,
'GCOUNT'
,
1
,
'group count'
fxaddpar
,
quality_matrix_header
,
'EXTNAME'
,
'Quality matrix'
,
'extension name'
fits_add_checksum
,
quality_matrix_header
,
quality_matrix
mwrfits
,
quality_matrix
,
out_file_name
,
quality_matrix_header
,
/
no_comment
,
/
silent
extension_header
=
base_header
sxdelpar
,
extension_header
,
'BLANK'
fxaddpar
,
extension_header
,
'XTENSION'
,
'IMAGE'
,
'image extension'
,
before
=
'BITPIX'
fxaddpar
,
extension_header
,
'PCOUNT'
,
0
,
'parameter count'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'GCOUNT'
,
1
,
'group count'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'EXTNAME'
,
'Quality matrix'
,
'extension name'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'BTYPE'
,
'Pixel quality'
fxaddpar
,
extension_header
,
'BUNIT'
,
'None'
fxaddpar
,
extension_header
,
'DATAMIN'
,
min
(
quality_matrix
,
/
nan
)
fxaddpar
,
extension_header
,
'DATAMAX'
,
max
(
quality_matrix
,
/
nan
)
fxaddpar
,
extension_header
,
'COMMENT'
,
'Quality matrix values:'
fxaddpar
,
extension_header
,
'COMMENT'
,
' NaN = saturated or null L0 pixel counts'
fxaddpar
,
extension_header
,
'COMMENT'
,
' 0 = unreliable pixel value'
fxaddpar
,
extension_header
,
'COMMENT'
,
' 1 = good pixel'
;
add
the
extension
to
the
fits
file
fits_add_checksum
,
extension_header
,
quality_matrix
mwrfits
,
quality_matrix
,
out_file_name
,
extension_header
,
/
no_comment
,
/
silent
journal
,
'Quality-matrix extension correctly added.'
endif
;
build
the
telemetry
extension
hk_extension_header
=
!
null
fxaddpar
,
hk_extension_header
,
'PCOUNT'
,
0
,
'parameter count'
fxaddpar
,
hk_extension_header
,
'GCOUNT'
,
1
,
'group count'
fxaddpar
,
hk_extension_header
,
'EXTNAME'
,
'House-keeping'
,
'extension name'
hk_bin_table
=
make_bin_table
(
hk_table
)
mwrfits
,
hk_bin_table
,
out_file_name
,
hk_extension_header
,
/
no_comment
,
/
silent
extension_header
=
base_header
sxdelpar
,
extension_header
,
'BSCALE'
sxdelpar
,
extension_header
,
'BZERO'
sxdelpar
,
extension_header
,
'BUNIT'
sxdelpar
,
extension_header
,
'BTYPE'
sxdelpar
,
extension_header
,
'BLANK'
sxdelpar
,
extension_header
,
'DATAMIN'
sxdelpar
,
extension_header
,
'DATAMAX'
fxaddpar
,
extension_header
,
'XTENSION'
,
'BINTABLE'
,
'binary table extension'
,
before
=
'BITPIX'
fxaddpar
,
extension_header
,
'NAXIS'
,
2
,
'number of data axes'
fxaddpar
,
extension_header
,
'NAXIS1'
,
0
,
'length of dimension 1'
,
after
=
'NAXIS'
fxaddpar
,
extension_header
,
'NAXIS2'
,
0
,
'length of dimension 2'
,
after
=
'NAXIS1'
fxaddpar
,
extension_header
,
'PCOUNT'
,
0
,
'parameter count'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'GCOUNT'
,
1
,
'group count'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'TFIELDS'
,
0
,
'number of columns in table'
,
before
=
'LONGSTRN'
fxaddpar
,
extension_header
,
'EXTNAME'
,
'House-keeping'
,
'extension name'
,
before
=
'LONGSTRN'
;
add
the
extension
to
the
fits
file
mwrfits
,
hk_bin_table
,
out_file_name
,
extension_header
,
/
no_comment
,
/
silent
journal
,
'HK binary-table extension correctly added.'
...
...
@@ -586,5 +644,6 @@ pro metis_l1_prep
journal
,
'Exiting without errors.'
journal
exit
,
status
=
0
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.