Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
csst-dfs
csst-dfs-api
Commits
f1c8509a
Commit
f1c8509a
authored
Mar 23, 2021
by
Wei Shoulin
Browse files
add rss
parent
dbb6c308
Changes
4
Hide whitespace changes
Inline
Side-by-side
csst_dfs_api/common/delegate.py
View file @
f1c8509a
...
...
@@ -36,12 +36,3 @@ class Delegate(object):
def
load
(
self
,
sub_module
):
return
importlib
.
import_module
(
f
"
{
API_MODULE_PREFIX
}{
self
.
mode
}
.
{
sub_module
}
"
)
@
classmethod
def
root_dir
(
self
):
mode
=
os
.
getenv
(
"CSST_DFS_API_MODE"
,
'local'
)
if
mode
==
MODE_LOCAL
:
return
os
.
getenv
(
"CSST_LOCAL_FILE_ROOT"
)
if
mode
==
MODE_CLUSTER
:
from
csst_dfs_api_cluster.common
import
config
return
config
.
filePrefix
csst_dfs_api/common/logging.py
View file @
f1c8509a
...
...
@@ -24,7 +24,7 @@ def setup_logging():
ch
.
setFormatter
(
cfmt
)
# File handler
fh
=
logging
.
handlers
.
RotatingFileHandler
(
'csst.log'
,
fh
=
logging
.
handlers
.
RotatingFileHandler
(
'csst
_dfs
.log'
,
maxBytes
=
10
*
1024
*
1024
,
backupCount
=
10
)
fh
.
setLevel
(
logging
.
INFO
)
fh
.
setFormatter
(
ffmt
)
...
...
csst_dfs_api/ifs/reffits.py
View file @
f1c8509a
...
...
@@ -25,6 +25,7 @@ class RefFitsApi(object):
obs_time = [int],
file_name = [str],
exp_time = (start, end),
ccd_num = [int],
status = [int],
ref_type = [str]
...
...
examples/ifs_rss_pipeline.py
0 → 100644
View file @
f1c8509a
import
os
import
numpy
as
np
import
pandas
as
pd
import
logging
from
astropy.io
import
fits
from
csst_dfs_api.common.logging
import
setup_logging
from
csst_dfs_api.ifs
import
FitsApi
,
RefFitsApi
,
Result0Api
,
Result1Api
setup_logging
()
log
=
logging
.
getLogger
(
'csst'
)
class
RSS
(
object
):
def
__init__
(
self
,
file_name
):
self
.
root_dir
=
os
.
getenv
(
"CSST_LOCAL_FILE_ROOT"
,
"/opt/temp/csst"
)
self
.
fitsApi
=
FitsApi
()
self
.
refFitsApi
=
RefFitsApi
()
self
.
result0Api
=
Result0Api
()
self
.
result1Api
=
Result1Api
()
try
:
self
.
raw
=
self
.
fitsApi
.
find
(
file_name
=
file_name
)
self
.
raw
=
self
.
raw
[
0
]
if
self
.
raw
else
None
log
.
info
(
"find raw fits: %s,%s"
%
(
self
.
raw
[
"id"
],
self
.
raw
[
"filename"
]))
if
self
.
raw
is
None
:
log
.
error
(
'raw %s not found'
%
(
file_name
,))
except
Exception
as
e
:
log
.
error
(
'raw %s not found'
%
(
file_name
,),
e
)
def
set_bias
(
self
,
file_name
=
None
):
try
:
self
.
bias
=
self
.
refFitsApi
.
find
(
file_name
=
file_name
,
ref_type
=
RefFitsApi
.
REF_FITS_BIAS
)
self
.
bias
=
self
.
bias
[
0
]
if
self
.
bias
else
None
log
.
info
(
"find ref bias fits: %s,%s"
%
(
self
.
bias
[
"id"
],
self
.
bias
[
"filename"
]))
if
self
.
bias
is
None
:
log
.
error
(
'bias %s not found'
%
(
file_name
,))
except
Exception
as
e
:
log
.
error
(
'bias %s not found'
%
(
file_name
,),
e
)
def
set_flat
(
self
,
file_name
=
None
):
try
:
self
.
flat
=
self
.
refFitsApi
.
find
(
file_name
=
file_name
,
ref_type
=
RefFitsApi
.
REF_FITS_FLAT
)
self
.
flat
=
self
.
flat
[
0
]
if
self
.
flat
else
None
log
.
info
(
"find ref flat fits: %s,%s"
%
(
self
.
flat
[
"id"
],
self
.
flat
[
"filename"
]))
if
self
.
flat
is
None
:
log
.
error
(
'flat %s not found'
%
(
file_name
,))
except
Exception
as
e
:
log
.
error
(
'flat %s not found'
%
(
file_name
,),
e
)
def
set_arc
(
self
,
file_name
=
None
):
try
:
self
.
arc
=
self
.
refFitsApi
.
find
(
file_name
=
file_name
,
ref_type
=
RefFitsApi
.
REF_FITS_ARC
)
self
.
arc
=
self
.
arc
[
0
]
if
self
.
arc
else
None
log
.
info
(
"find ref arc fits: %s,%s"
%
(
self
.
arc
[
"id"
],
self
.
arc
[
"filename"
]))
if
self
.
arc
is
None
:
log
.
error
(
'arc %s not found'
%
(
file_name
,))
except
Exception
as
e
:
log
.
error
(
'arc %s not found'
%
(
file_name
,),
e
)
def
set_sky
(
self
,
file_name
=
None
):
try
:
self
.
sky
=
self
.
refFitsApi
.
find
(
file_name
=
file_name
,
ref_type
=
RefFitsApi
.
REF_FITS_SKY
)
self
.
sky
=
self
.
sky
[
0
]
if
self
.
sky
else
None
log
.
info
(
"find ref sky fits: %s,%s"
%
(
self
.
sky
[
"id"
],
self
.
sky
[
"filename"
]))
if
self
.
sky
is
None
:
log
.
error
(
'sky %s not found'
%
(
file_name
,))
except
Exception
as
e
:
log
.
error
(
'sky %s not found'
%
(
file_name
,),
e
)
def
makecube
(
self
,
outfile
):
hdul_raw
=
fits
.
open
(
os
.
path
.
join
(
self
.
root_dir
,
self
.
raw
[
'file_path'
]))
hdul_arc
=
fits
.
open
(
os
.
path
.
join
(
self
.
root_dir
,
self
.
arc
[
'file_path'
]))
hdul_flat
=
fits
.
open
(
os
.
path
.
join
(
self
.
root_dir
,
self
.
flat
[
'file_path'
]))
hdul_sky
=
fits
.
open
(
os
.
path
.
join
(
self
.
root_dir
,
self
.
sky
[
'file_path'
]))
hdul_raw
.
append
(
hdul_arc
[
0
])
hdul_raw
.
append
(
hdul_flat
[
0
])
hdul_raw
.
append
(
hdul_sky
[
0
])
hdul_raw
.
writeto
(
outfile
,
overwrite
=
True
)
self
.
result0Api
.
write
(
raw_id
=
self
.
raw
[
'id'
],
file_path
=
outfile
,
proc_type
=
'default'
)
def
makecube2
(
self
,
outfile
):
refiles
=
[
self
.
raw
,
self
.
arc
,
self
.
flat
,
self
.
bias
,
self
.
sky
]
raw_segments
=
self
.
fitsApi
.
read
(
self
.
raw
[
'id'
])
arc_segments
=
self
.
refFitsApi
.
read
(
self
.
arc
[
'id'
])
flat_segments
=
self
.
refFitsApi
.
read
(
self
.
flat
[
'id'
])
sky_segments
=
self
.
refFitsApi
.
read
(
self
.
sky
[
'id'
])
hdul_raw
=
fits
.
HDUList
.
fromstring
(
b
''
.
join
(
raw_segments
))
hdul_arc
=
fits
.
HDUList
.
fromstring
(
b
''
.
join
(
arc_segments
))
hdul_flat
=
fits
.
HDUList
.
fromstring
(
b
''
.
join
(
flat_segments
))
hdul_sky
=
fits
.
HDUList
.
fromstring
(
b
''
.
join
(
sky_segments
))
hdul_raw
.
append
(
hdul_arc
[
0
])
hdul_raw
.
append
(
hdul_flat
[
0
])
hdul_raw
.
append
(
hdul_sky
[
0
])
hdul_raw
.
writeto
(
outfile
,
overwrite
=
True
)
self
.
result0Api
.
write
(
raw_id
=
self
.
raw
[
'id'
],
file_path
=
outfile
,
proc_type
=
'default'
)
if
__name__
==
'__main__'
:
rss1
=
RSS
(
'CCD1_ObsTime_300_ObsNum_1.fits'
)
# raw data
# rss1.set_bias() # currently no Bias file
rss1
.
set_flat
(
file_name
=
'Flat_flux.fits'
)
# flat file
rss1
.
set_arc
(
file_name
=
'HgAr_flux.fits'
)
# arc file
rss1
.
set_sky
(
file_name
=
'sky_noise_With_wavelength.fits'
)
# sky file
rss1
.
makecube
(
'/opt/temp/csst_ifs/rss_demo1.fits'
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment