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-sims
csst_msc_sim
Commits
df22b3b0
Commit
df22b3b0
authored
May 21, 2025
by
Fang Yuedong
Browse files
Merge branch 'master' into 'release_v3.0'
Release version v3.2.0 See merge request
!33
parents
1b4f4012
428f2c1e
Changes
70
Show whitespace changes
Inline
Side-by-side
tools/get_PSF.py
View file @
df22b3b0
...
...
@@ -79,7 +79,7 @@ for iobj in range(nobj):
if
True
:
fn
=
"psf_{:}.{:}.{:}.fits"
.
format
(
chipID
,
iobj
,
i
)
if
fn
!=
None
:
if
fn
is
not
None
:
if
os
.
path
.
exists
(
fn
):
os
.
remove
(
fn
)
hdu
=
fitsio
.
PrimaryHDU
()
...
...
tools/get_pointing.py
View file @
df22b3b0
...
...
@@ -25,6 +25,7 @@ import galsim
import
math
# from numba import jit
class
Chip
(
object
):
def
__init__
(
self
,
chipID
):
self
.
chipID
=
chipID
...
...
@@ -43,7 +44,7 @@ class Chip(object):
self
.
npix_y
=
9232
self
.
pix_scale
=
0.074
def
getTanWCS
(
self
,
ra
,
dec
,
img_rot
,
pix_scale
=
None
,
xcen
=
None
,
ycen
=
None
,
logger
=
None
):
def
getTanWCS
(
self
,
ra
,
dec
,
img_rot
,
pix_scale
=
None
,
xcen
=
None
,
ycen
=
None
,
logger
=
None
):
""" Get the WCS of the image mosaic using Gnomonic/TAN projection
Parameter:
...
...
@@ -57,11 +58,12 @@ class Chip(object):
WCS of the focal plane
"""
if
logger
is
not
None
:
logger
.
info
(
" Construct the wcs of the entire image mosaic using Gnomonic/TAN projection"
)
if
(
xcen
==
None
)
or
(
ycen
==
None
):
logger
.
info
(
" Construct the wcs of the entire image mosaic using Gnomonic/TAN projection"
)
if
(
xcen
is
None
)
or
(
ycen
is
None
):
xcen
=
self
.
cen_pix_x
ycen
=
self
.
cen_pix_y
if
pix_scale
==
None
:
if
pix_scale
is
None
:
pix_scale
=
self
.
pix_scale
# dudx = -np.cos(img_rot.rad) * pix_scale
# dudy = -np.sin(img_rot.rad) * pix_scale
...
...
@@ -78,7 +80,8 @@ class Chip(object):
# dvdx = -np.cos(img_rot.rad) * pix_scale
# dvdy = +np.sin(img_rot.rad) * pix_scale
moscen
=
galsim
.
PositionD
(
x
=
xcen
,
y
=
ycen
)
sky_center
=
galsim
.
CelestialCoord
(
ra
=
ra
*
galsim
.
degrees
,
dec
=
dec
*
galsim
.
degrees
)
sky_center
=
galsim
.
CelestialCoord
(
ra
=
ra
*
galsim
.
degrees
,
dec
=
dec
*
galsim
.
degrees
)
affine
=
galsim
.
AffineTransform
(
dudx
,
dudy
,
dvdx
,
dvdy
,
origin
=
moscen
)
WCS
=
galsim
.
TanWCS
(
affine
,
sky_center
,
units
=
galsim
.
arcsec
)
...
...
@@ -99,8 +102,6 @@ class Chip(object):
A galsim BoundsD object
"""
chipID
=
self
.
chipID
rowID
,
colID
=
self
.
getChipRowCol
(
chipID
)
...
...
@@ -125,36 +126,41 @@ class Chip(object):
return
galsim
.
PositionD
(
xcen
,
ycen
)
def
transRaDec2D
(
ra
,
dec
):
x1
=
np
.
cos
(
dec
/
57.2957795
)
*
np
.
cos
(
ra
/
57.2957795
)
;
y1
=
np
.
cos
(
dec
/
57.2957795
)
*
np
.
sin
(
ra
/
57.2957795
)
;
z1
=
np
.
sin
(
dec
/
57.2957795
)
;
x1
=
np
.
cos
(
dec
/
57.2957795
)
*
np
.
cos
(
ra
/
57.2957795
)
y1
=
np
.
cos
(
dec
/
57.2957795
)
*
np
.
sin
(
ra
/
57.2957795
)
z1
=
np
.
sin
(
dec
/
57.2957795
)
return
np
.
array
([
x1
,
y1
,
z1
])
def
getobsPA
(
ra
,
dec
):
l1
=
np
.
array
([
0
,
0
,
1
])
l1
=
np
.
array
([
0
,
0
,
1
])
l2
=
transRaDec2D
(
ra
,
dec
)
polar_ec
=
coord
.
SkyCoord
(
0
*
u
.
degree
,
90
*
u
.
degree
,
frame
=
'barycentrictrueecliptic'
)
polar_ec
=
coord
.
SkyCoord
(
0
*
u
.
degree
,
90
*
u
.
degree
,
frame
=
'barycentrictrueecliptic'
)
polar_eq
=
polar_ec
.
transform_to
(
'icrs'
)
# print(polar_eq.ra.value,polar_eq.dec.value)
polar_d
=
transRaDec2D
(
polar_eq
.
ra
.
value
,
polar_eq
.
dec
.
value
)
l1l2cross
=
np
.
cross
(
l2
,
l1
)
pdl2cross
=
np
.
cross
(
l2
,
polar_d
)
angle
=
math
.
acos
(
np
.
dot
(
l1l2cross
,
pdl2cross
)
/
(
np
.
linalg
.
norm
(
l1l2cross
)
*
np
.
linalg
.
norm
(
pdl2cross
)))
l1l2cross
=
np
.
cross
(
l2
,
l1
)
pdl2cross
=
np
.
cross
(
l2
,
polar_d
)
angle
=
math
.
acos
(
np
.
dot
(
l1l2cross
,
pdl2cross
)
/
(
np
.
linalg
.
norm
(
l1l2cross
)
*
np
.
linalg
.
norm
(
pdl2cross
)))
angle
=
(
angle
)
/
math
.
pi
*
180
angle
=
angle
+
90
if
(
ra
<
90
or
ra
>
270
):
angle
=
-
angle
if
(
ra
<
90
or
ra
>
270
):
angle
=
-
angle
return
angle
# @jit()
def
getSelectPointingList
(
center
=
[
60
,
-
40
],
radius
=
2
):
points
=
np
.
loadtxt
(
'sky.dat'
)
center
=
center
#ra dec
def
getSelectPointingList
(
center
=
[
60
,
-
40
],
radius
=
2
):
points
=
np
.
loadtxt
(
'sky.dat'
)
center
=
center
# ra dec
radius
=
radius
# degree
radii_dec
=
1
...
...
@@ -163,7 +169,8 @@ def getSelectPointingList(center = [60,-40], radius = 2):
if
radii_ra
>
180
:
radii_ra
=
180
c_eclip
=
coord
.
SkyCoord
(
points
[:,
2
]
*
u
.
degree
,
points
[:,
1
]
*
u
.
degree
,
frame
=
'barycentrictrueecliptic'
)
c_eclip
=
coord
.
SkyCoord
(
points
[:,
2
]
*
u
.
degree
,
points
[:,
1
]
*
u
.
degree
,
frame
=
'barycentrictrueecliptic'
)
c_equtor
=
c_eclip
.
transform_to
(
'icrs'
)
# print(np.min((c_equtor.ra*u.degree).value), np.max((c_equtor.ra*u.degree).value))
...
...
@@ -174,13 +181,15 @@ def getSelectPointingList(center = [60,-40], radius = 2):
ra_range_lo
=
center
[
0
]
-
radii_ra
ra_range_hi
=
center
[
0
]
+
radii_ra
if
ra_range_lo
<
0
:
ids1
=
((
c_equtor
.
ra
*
u
.
degree
).
value
<
ra_range_hi
)
|
((
c_equtor
.
ra
*
u
.
degree
).
value
>
360
+
ra_range_lo
)
if
ra_range_lo
<
0
:
ids1
=
((
c_equtor
.
ra
*
u
.
degree
).
value
<
ra_range_hi
)
|
((
c_equtor
.
ra
*
u
.
degree
).
value
>
360
+
ra_range_lo
)
elif
ra_range_hi
>
360
:
ids1
=
((
c_equtor
.
ra
*
u
.
degree
).
value
>
ra_range_lo
)
|
((
c_equtor
.
ra
*
u
.
degree
).
value
<
ra_range_hi
-
360
)
ids1
=
((
c_equtor
.
ra
*
u
.
degree
).
value
>
ra_range_lo
)
|
((
c_equtor
.
ra
*
u
.
degree
).
value
<
ra_range_hi
-
360
)
else
:
ids1
=
((
c_equtor
.
ra
*
u
.
degree
).
value
>
ra_range_lo
)
&
((
c_equtor
.
ra
*
u
.
degree
).
value
<
ra_range_hi
)
ids1
=
((
c_equtor
.
ra
*
u
.
degree
).
value
>
ra_range_lo
)
&
((
c_equtor
.
ra
*
u
.
degree
).
value
<
ra_range_hi
)
dec_range_lo
=
center
[
1
]
-
radii_dec
if
center
[
1
]
-
radii_dec
<
-
90
:
...
...
@@ -198,25 +207,24 @@ def getSelectPointingList(center = [60,-40], radius = 2):
p_result
=
np
.
zeros
([
num
,
5
])
i
=
0
for
p
,
p_
in
zip
(
points
[
ids1
][
ids3
][
ids4
],
c_equtor
[
ids1
][
ids3
][
ids4
]):
for
p
,
p_
in
zip
(
points
[
ids1
][
ids3
][
ids4
],
c_equtor
[
ids1
][
ids3
][
ids4
]):
ra
=
(
p_
.
ra
*
u
.
degree
).
value
dec
=
(
p_
.
dec
*
u
.
degree
).
value
# print(ra, dec)
lon
=
p
[
2
]
lat
=
p
[
1
]
p_result
[
i
,
0
]
=
ra
p_result
[
i
,
1
]
=
dec
p_result
[
i
,
2
]
=
lon
p_result
[
i
,
3
]
=
lat
p_result
[
i
,
4
]
=
getobsPA
(
ra
,
dec
)
+
90
p_result
[
i
,
0
]
=
ra
p_result
[
i
,
1
]
=
dec
p_result
[
i
,
2
]
=
lon
p_result
[
i
,
3
]
=
lat
p_result
[
i
,
4
]
=
getobsPA
(
ra
,
dec
)
+
90
i
=
i
+
1
return
p_result
def
findPointingbyChipID
(
chipID
=
8
,
ra
=
60.
,
dec
=
-
40.
):
def
findPointingbyChipID
(
chipID
=
8
,
ra
=
60.
,
dec
=-
40.
):
"""_summary_
Args:
...
...
@@ -228,7 +236,7 @@ def findPointingbyChipID(chipID = 8, ra = 60., dec = -40.):
_type_: [ra, dec, rotation angle]
"""
chip_center
=
[
ra
,
dec
]
p_list
=
getSelectPointingList
(
center
=
chip_center
)
p_list
=
getSelectPointingList
(
center
=
chip_center
)
pchip
=
Chip
(
chipID
)
p_num
=
p_list
.
shape
[
0
]
...
...
@@ -238,10 +246,10 @@ def findPointingbyChipID(chipID = 8, ra = 60., dec = -40.):
r_ra
=
ra
r_dec
=
dec
r_rot
=
0.
for
i
in
np
.
arange
(
0
,
p_num
,
1
):
ra_n
=
p_list
[
i
,
0
]
dec_n
=
p_list
[
i
,
1
]
rot
=
p_list
[
i
,
4
]
*
galsim
.
degrees
for
i
in
np
.
arange
(
0
,
p_num
,
1
):
ra_n
=
p_list
[
i
,
0
]
dec_n
=
p_list
[
i
,
1
]
rot
=
p_list
[
i
,
4
]
*
galsim
.
degrees
chip_wcs
=
pchip
.
getTanWCS
(
ra_n
,
dec_n
,
rot
)
c_center
=
pchip
.
getChipCenter
()
...
...
@@ -259,13 +267,12 @@ def findPointingbyChipID(chipID = 8, ra = 60., dec = -40.):
r_rot
=
rot
.
deg
if
min_d
==
max_value
:
print
(
"RA:%f,Dec:%f不在指向范围内,请于巡天规划序列比对!!!!!"
%
(
ra
,
dec
))
print
(
"RA:%f,Dec:%f不在指向范围内,请于巡天规划序列比对!!!!!"
%
(
ra
,
dec
))
return
[
r_ra
,
r_dec
,
r_rot
]
return
[
r_ra
,
r_dec
,
r_rot
]
if
__name__
==
"__main__"
:
tchip
,
tra
,
tdec
=
13
,
60.
,
-
40.
pointing
=
findPointingbyChipID
(
chipID
=
tchip
,
ra
=
tra
,
dec
=
tdec
)
print
(
"[ra_center, dec_center, image_rot]: "
,
pointing
)
tools/get_pointing_accuracy.py
View file @
df22b3b0
from
pylab
import
*
import
math
,
sys
,
numpy
as
np
import
math
import
sys
import
numpy
as
np
import
astropy.coordinates
as
coord
from
astropy.coordinates
import
SkyCoord
from
astropy
import
wcs
,
units
as
u
...
...
@@ -14,8 +16,9 @@ def transRaDec2D(ra, dec):
z1
=
np
.
sin
(
dec
/
57.2957795
)
return
np
.
array
([
x1
,
y1
,
z1
])
def
ecl2radec
(
lon_ecl
,
lat_ecl
):
#
#
convert from ecliptic coordinates to equatorial coordinates
# convert from ecliptic coordinates to equatorial coordinates
c_ecl
=
SkyCoord
(
lon
=
lon_ecl
*
u
.
degree
,
lat
=
lat_ecl
*
u
.
degree
,
frame
=
"barycentrictrueecliptic"
)
...
...
@@ -25,18 +28,19 @@ def ecl2radec(lon_ecl, lat_ecl):
def
radec2ecl
(
ra
,
dec
):
#
#
convert from equatorial coordinates to ecliptic coordinates
# convert from equatorial coordinates to ecliptic coordinates
c_eq
=
SkyCoord
(
ra
=
ra
*
u
.
degree
,
dec
=
dec
*
u
.
degree
,
frame
=
"icrs"
)
c_ecl
=
c_eq
.
transform_to
(
"barycentrictrueecliptic"
)
lon_ecl
,
lat_ecl
=
c_ecl
.
lon
.
degree
,
c_ecl
.
lat
.
degree
return
lon_ecl
,
lat_ecl
def
cal_FoVcenter_1P_equatorial
(
ra_FieldCenter
,
dec_FieldCenter
,
chipID
=
1
,
pa
=
-
23.5
):
### [ra_FieldCenter, dec_FieldCenter] is the center ra, dec of calibration fileds, such as: NEP, NGC 6397, etc.
### [ra_ChipCenter, dec_ChipCenter] is the center ra, dec of the Chip center.
### [ra_PointCenter, dec_PointCenter] is the telescope pointing center.
## Calculate PA angle
def
cal_FoVcenter_1P_equatorial
(
ra_FieldCenter
,
dec_FieldCenter
,
chipID
=
1
,
pa
=-
23.5
):
# [ra_FieldCenter, dec_FieldCenter] is the center ra, dec of calibration fileds, such as: NEP, NGC 6397, etc.
# [ra_ChipCenter, dec_ChipCenter] is the center ra, dec of the Chip center.
# [ra_PointCenter, dec_PointCenter] is the telescope pointing center.
# Calculate PA angle
chip
=
Chip
(
chipID
)
h_ext
=
ImageHeader
.
generateExtensionHeader
(
...
...
@@ -75,17 +79,18 @@ def cal_FoVcenter_1P_equatorial(ra_FieldCenter, dec_FieldCenter, chipID = 1, pa
return
ra_PointCenter
,
dec_PointCenter
,
lon_ecl_PointCenter
,
lat_ecl_PointCenter
def
cal_FoVcenter_1P_ecliptic
(
lon_ecl_FieldCenter
,
lat_ecl_FieldCenter
,
chipID
=
1
,
pa
=
-
23.5
):
### [ra_FieldCenter, dec_FieldCenter] is the center ra, dec of calibration fileds, such as: NEP, NGC 6397, etc.
### [ra_ChipCenter, dec_ChipCenter] is the center ra, dec of the Chip center.
### [ra_PointCenter, dec_PointCenter] is the telescope pointing center.
def
cal_FoVcenter_1P_ecliptic
(
lon_ecl_FieldCenter
,
lat_ecl_FieldCenter
,
chipID
=
1
,
pa
=-
23.5
):
# [ra_FieldCenter, dec_FieldCenter] is the center ra, dec of calibration fileds, such as: NEP, NGC 6397, etc.
# [ra_ChipCenter, dec_ChipCenter] is the center ra, dec of the Chip center.
# [ra_PointCenter, dec_PointCenter] is the telescope pointing center.
ra_FieldCenter
,
dec_FieldCenter
=
ecl2radec
(
lon_ecl_FieldCenter
,
lat_ecl_FieldCenter
)
#
#
Calculate PA angle
# Calculate PA angle
chip
=
Chip
(
chipID
)
h_ext
=
ImageHeader
.
generateExtensionHeader
(
...
...
@@ -124,7 +129,8 @@ def cal_FoVcenter_1P_ecliptic(lon_ecl_FieldCenter, lat_ecl_FieldCenter, chipID =
return
ra_PointCenter
,
dec_PointCenter
,
lon_ecl_PointCenter
,
lat_ecl_PointCenter
def
getChipCenterRaDec
(
chipID
=
1
,
p_ra
=
60.
,
p_dec
=
-
40.
):
def
getChipCenterRaDec
(
chipID
=
1
,
p_ra
=
60.
,
p_dec
=-
40.
):
chip
=
Chip
(
chipID
)
h_ext
=
ImageHeader
.
generateExtensionHeader
(
...
...
@@ -149,17 +155,18 @@ def getChipCenterRaDec(chipID = 1, p_ra = 60., p_dec = -40.):
RA_chip
,
Dec_chip
=
world_point
[
0
][
0
],
world_point
[
0
][
1
]
return
RA_chip
,
Dec_chip
if
__name__
==
'__main__'
:
ra_input
,
dec_input
=
270.00000
,
66.56000
# NEP
pa
=
23.5
# chipid = 2
for
chipid
in
np
.
arange
(
1
,
31
,
1
):
for
chipid
in
np
.
arange
(
1
,
31
,
1
):
ra
,
dec
,
lon_ecl
,
lat_ecl
=
cal_FoVcenter_1P_equatorial
(
ra_input
,
dec_input
,
chipID
=
chipid
,
pa
=
pa
)
ra_input
,
dec_input
,
chipID
=
chipid
,
pa
=
pa
)
print
(
"chip id is %d, chip center [ra,dec] is [%f, %f], pointing center calculated [ra,dec] is [%f, %f]"
%
(
chipid
,
ra_input
,
dec_input
,
ra
,
dec
))
#for check the result
print
(
"chip id is %d, chip center [ra,dec] is [%f, %f], pointing center calculated [ra,dec] is [%f, %f]"
%
(
chipid
,
ra_input
,
dec_input
,
ra
,
dec
))
# for check the result
# testRA, testDec = getChipCenterRaDec(chipID = chipid, p_ra = ra, p_dec = dec)
# print(ra_input-testRA, dec_input-testDec)
tools/setConfig/reset_obs.py
0 → 100644
View file @
df22b3b0
from
flask
import
Flask
,
render_template
,
request
,
redirect
import
yaml
import
ast
app
=
Flask
(
__name__
)
key_type_map
=
{
'obs_type'
:
str
,
'obs_type_code'
:
str
,
'obs_id'
:
str
,
'run_chips'
:
list
,
'call_sequence'
:
{
'scie_obs'
:
{
'shutter_effect'
:
bool
,
'flat_fielding'
:
bool
,
'field_dist'
:
bool
,
},
'sky_background'
:
{
'shutter_effect'
:
bool
,
'flat_fielding'
:
bool
,
'enable_straylight_model'
:
bool
,
'flat_level'
:
None
,
'flat_level_filt'
:
None
,
},
'PRNU_effect'
:
{},
'cosmic_rays'
:
{
'save_cosmic_img'
:
bool
,
},
'poisson_and_dark'
:
{
'add_dark'
:
bool
,
},
'bright_fatter'
:
{},
'detector_defects'
:
{
'hot_pixels'
:
bool
,
'dead_pixels'
:
bool
,
'bad_columns'
:
bool
,
},
'nonlinearity'
:
{},
'blooming'
:
{},
'prescan_overscan'
:
{
'add_dark'
:
bool
,
},
'bias'
:
{
'bias_16channel'
:
bool
,
},
'readout_noise'
:
{},
'gain'
:
{
'gain_16channel'
:
bool
,
},
'quantization_and_output'
:
{
'format_output'
:
bool
,
},
},
}
def
convert_dict_values
(
d
,
key_type_map
):
for
key
,
value
in
d
.
items
():
if
isinstance
(
value
,
dict
):
convert_dict_values
(
value
,
key_type_map
[
key
])
elif
key
in
key_type_map
:
if
key_type_map
[
key
]
is
int
:
d
[
key
]
=
int
(
value
)
if
key_type_map
[
key
]
is
float
:
d
[
key
]
=
float
(
value
)
if
key_type_map
[
key
]
is
bool
:
if
d
[
key
].
lower
()
==
'yes'
or
d
[
key
].
lower
()
==
'true'
:
d
[
key
]
=
True
else
:
d
[
key
]
=
False
if
key_type_map
[
key
]
is
str
:
d
[
key
]
=
str
(
value
)
if
key_type_map
[
key
]
is
list
:
d
[
key
]
=
ast
.
literal_eval
(
value
)
if
key_type_map
[
key
]
is
None
:
d
[
key
]
=
None
def
load_yaml
():
with
open
(
'templates/obs_config_SCI.yaml'
,
'r'
)
as
file
:
return
yaml
.
safe_load
(
file
)
def
save_yaml
(
data
):
convert_dict_values
(
data
,
key_type_map
)
with
open
(
'config_reset/obs_config_SCI_reset.yaml'
,
'w'
)
as
file
:
yaml
.
dump
(
data
,
file
,
default_flow_style
=
False
,
sort_keys
=
False
)
def
render_form
(
data
,
parent_key
=
''
):
form_html
=
''
for
key
,
value
in
data
.
items
():
full_key
=
f
"
{
parent_key
}
.
{
key
}
"
if
parent_key
else
key
if
isinstance
(
value
,
dict
):
# 处理字典
form_html
+=
f
"<div class='block'><h2>
{
key
}
</h2>
{
render_form
(
value
,
full_key
)
}
</div>"
else
:
form_html
+=
f
"<label for='
{
full_key
}
'>
{
key
}
:</label>"
form_html
+=
f
"<input type='text' id='
{
full_key
}
' name='
{
full_key
}
' value='
{
value
}
'><br>"
return
form_html
@
app
.
route
(
'/'
,
methods
=
[
'GET'
,
'POST'
])
def
index
():
if
request
.
method
==
'POST'
:
data
=
load_yaml
()
for
key
in
request
.
form
:
keys
=
key
.
split
(
'.'
)
temp
=
data
for
k
in
keys
[:
-
1
]:
temp
=
temp
[
k
]
temp
[
keys
[
-
1
]]
=
request
.
form
[
key
]
save_yaml
(
data
)
return
redirect
(
'/'
)
data
=
load_yaml
()
form_html
=
render_form
(
data
)
return
render_template
(
'index_obs.html'
,
form_html
=
form_html
)
if
__name__
==
'__main__'
:
app
.
run
(
debug
=
True
)
tools/setConfig/reset_overall.py
0 → 100644
View file @
df22b3b0
from
flask
import
Flask
,
render_template
,
request
,
redirect
import
yaml
import
ast
app
=
Flask
(
__name__
)
key_type_map
=
{
'work_dir'
:
str
,
'run_name'
:
str
,
'project_cycle'
:
int
,
'run_counter'
:
int
,
'run_option'
:
{
'out_cat_only'
:
bool
,
},
'catalog_options'
:
{
'input_path'
:
{
'cat_dir'
:
str
,
'star_cat'
:
str
,
'galaxy_cat'
:
str
,
},
'SED_templates_path'
:
{
'star_SED'
:
str
,
'galaxy_SED'
:
str
,
'AGN_SED'
:
str
,
},
'star_only'
:
bool
,
'galaxy_only'
:
bool
,
'rotateEll'
:
float
,
'enable_mw_ext_gal'
:
bool
,
'planck_ebv_map'
:
str
,
},
'obs_setting'
:
{
'pointing_file'
:
str
,
'obs_config_file'
:
str
,
'run_pointings'
:
list
,
'enable_astrometric_model'
:
bool
,
'cut_in_band'
:
str
,
'mag_sat_margin'
:
float
,
'mag_lim_margin'
:
float
,
},
'psf_setting'
:
{
'psf_model'
:
str
,
'psf_pho_dir'
:
str
,
'psf_sls_dir'
:
str
,
},
'shear_setting'
:
{
'shear_type'
:
str
,
'reduced_g1'
:
float
,
'reduced_g2'
:
float
,
},
'output_setting'
:
{
'output_format'
:
str
,
'shutter_output'
:
bool
,
'prnu_output'
:
bool
,
},
'random_seeds'
:
{
'seed_poisson'
:
int
,
'seed_CR'
:
int
,
'seed_flat'
:
int
,
'seed_prnu'
:
int
,
'seed_gainNonUniform'
:
int
,
'seed_biasNonUniform'
:
int
,
'seed_rnNonUniform'
:
int
,
'seed_badcolumns'
:
int
,
'seed_defective'
:
int
,
'seed_readout'
:
int
,
},
}
def
convert_dict_values
(
d
,
key_type_map
):
for
key
,
value
in
d
.
items
():
if
isinstance
(
value
,
dict
):
convert_dict_values
(
value
,
key_type_map
[
key
])
elif
key
in
key_type_map
:
if
key_type_map
[
key
]
is
int
:
d
[
key
]
=
int
(
value
)
if
key_type_map
[
key
]
is
float
:
d
[
key
]
=
float
(
value
)
if
key_type_map
[
key
]
is
bool
:
if
d
[
key
].
lower
()
==
'yes'
or
d
[
key
].
lower
()
==
'true'
:
d
[
key
]
=
True
else
:
d
[
key
]
=
False
if
key_type_map
[
key
]
is
str
:
d
[
key
]
=
str
(
value
)
if
key_type_map
[
key
]
is
list
:
d
[
key
]
=
ast
.
literal_eval
(
value
)
def
load_yaml
():
with
open
(
'templates/config_overall.yaml'
,
'r'
)
as
file
:
return
yaml
.
safe_load
(
file
)
def
save_yaml
(
data
):
convert_dict_values
(
data
,
key_type_map
)
with
open
(
'config_reset/config_overall_reset.yaml'
,
'w'
)
as
file
:
yaml
.
dump
(
data
,
file
,
default_flow_style
=
False
,
sort_keys
=
False
)
def
render_form
(
data
,
parent_key
=
''
):
form_html
=
''
for
key
,
value
in
data
.
items
():
full_key
=
f
"
{
parent_key
}
.
{
key
}
"
if
parent_key
else
key
if
isinstance
(
value
,
dict
):
# 处理字典
form_html
+=
f
"<div class='block'><h2>
{
key
}
</h2>
{
render_form
(
value
,
full_key
)
}
</div>"
else
:
form_html
+=
f
"<label for='
{
full_key
}
'>
{
key
}
:</label>"
form_html
+=
f
"<input type='text' id='
{
full_key
}
' name='
{
full_key
}
' value='
{
value
}
'><br>"
return
form_html
@
app
.
route
(
'/'
,
methods
=
[
'GET'
,
'POST'
])
def
index
():
if
request
.
method
==
'POST'
:
data
=
load_yaml
()
for
key
in
request
.
form
:
keys
=
key
.
split
(
'.'
)
temp
=
data
for
k
in
keys
[:
-
1
]:
temp
=
temp
[
k
]
temp
[
keys
[
-
1
]]
=
request
.
form
[
key
]
save_yaml
(
data
)
return
redirect
(
'/'
)
data
=
load_yaml
()
form_html
=
render_form
(
data
)
return
render_template
(
'index_overall.html'
,
form_html
=
form_html
)
if
__name__
==
'__main__'
:
app
.
run
(
debug
=
True
)
tools/setConfig/templates/config_overall.yaml
0 → 100644
View file @
df22b3b0
---
###############################################
#
# Configuration file for CSST simulation
# Overall settings
# CSST-Sim Group, 2024/01/08
#
###############################################
# Base diretories and naming setup
# can add some of the command-line arguments here as well;
# ok to pass either way or both, as long as they are consistent
work_dir
:
"
/public/home/fangyuedong/project/workplace/"
run_name
:
"
ext_on"
# Project cycle and run counter are used to name the outputs
project_cycle
:
9
run_counter
:
1
# Run options
run_option
:
# Output catalog only?
# If yes, no imaging simulation will be run. Only the catalogs
# of corresponding footprints will be generated.
out_cat_only
:
NO
###############################################
# Catalog setting
###############################################
# Configure the input catalog: options should be implemented
# in the corresponding (user defined) 'Catalog' class
catalog_options
:
input_path
:
cat_dir
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/"
star_cat
:
"
starcat_C9/"
galaxy_cat
:
"
qsocat/cat2CSSTSim_bundle-50sqDeg/"
SED_templates_path
:
star_SED
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/starcat_C9/"
galaxy_SED
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/sedlibs/"
AGN_SED
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/qsocat/qsosed/"
# Only simulate stars?
star_only
:
NO
# Only simulate galaxies?
galaxy_only
:
NO
# rotate galaxy ellipticity
rotateEll
:
0.
# [degree]
# Whether to apply milky way extinction to galaxies
enable_mw_ext_gal
:
YES
planck_ebv_map
:
"
/public/home/fangyuedong/project/ext_maps/planck/HFI_CompMap_ThermalDustModel_2048_R1.20.fits"
###############################################
# Observation setting
###############################################
obs_setting
:
# (Optional) a file of point list
# if you just want to run default pointing:
# - pointing_dir: null
# - pointing_file: null
pointing_file
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/pointing50_C9/pointing_50_1_n.dat"
obs_config_file
:
"
/public/home/fangyuedong/project/csst_msc_sim/config/obs_config_SCI.yaml"
# Run specific pointing(s):
# - give a list of indexes of pointings: [ip_1, ip_2...]
# - run all pointings: null
# Note: only valid when a pointing list is specified
run_pointings
:
[
0
,
1
,
2
,
3
,
4
]
# Whether to enable astrometric modeling
enable_astrometric_model
:
YES
# Cut by saturation magnitude in which band?
cut_in_band
:
"
z"
# saturation magnitude margin
mag_sat_margin
:
-2.5
# mag_sat_margin: -15.
# limiting magnitude margin
mag_lim_margin
:
+1.0
###############################################
# PSF setting
###############################################
psf_setting
:
# Which PSF model to use:
# "Gauss": simple gaussian profile
# "Interp": Interpolated PSF from sampled ray-tracing data
psf_model
:
"
Interp"
# PSF size [arcseconds]
# radius of 80% energy encircled
# NOTE: only valid for "Gauss" PSF
# psf_rcont: 0.15
# path to PSF data
# NOTE: only valid for "Interp" PSF
# PSF models for photometry survey simulation
psf_pho_dir
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/dataC6/psfCube1"
# PSF models for slitless spectrum survey simulation
psf_sls_dir
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/SLS_PSF_PCA_fp/"
###############################################
# Shear setting
###############################################
shear_setting
:
# Options to generate mock shear field:
# "constant": all galaxies are assigned a constant reduced shear
# "catalog": get shear values from catalog
shear_type
:
"
constant"
# For constant shear field
reduced_g1
:
0.
reduced_g2
:
0.
###############################################
# Output options
###############################################
output_setting
:
output_format
:
"
channels"
# Whether to export as 16 channels (subimages) with pre- and over-scan ("image"/"channels")
shutter_output
:
NO
# Whether to export shutter effect 16-bit image
prnu_output
:
NO
# Whether to export the PRNU (pixel-to-pixel flat-fielding) files
###############################################
# Random seeds
###############################################
random_seeds
:
seed_poisson
:
20210601
# Seed for Poisson noise
seed_CR
:
20210317
# Seed for generating random cosmic ray maps
seed_flat
:
20210101
# Seed for generating random flat fields
seed_prnu
:
20210102
# Seed for photo-response non-uniformity
seed_gainNonUniform
:
20210202
# Seed for gain nonuniformity
seed_biasNonUniform
:
20210203
# Seed for bias nonuniformity
seed_rnNonUniform
:
20210204
# Seed for readout-noise nonuniformity
seed_badcolumns
:
20240309
# Seed for bad columns
seed_defective
:
20210304
# Seed for defective (bad) pixels
seed_readout
:
20210601
# Seed for read-out gaussian noise
...
\ No newline at end of file
tools/setConfig/templates/index_obs.html
0 → 100644
View file @
df22b3b0
<!DOCTYPE html>
<html
lang=
"zh"
>
<head>
<meta
charset=
"UTF-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<title>
csst_msc_sim_CONF
</title>
<link
href=
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"
rel=
"stylesheet"
>
<style>
body
{
font-family
:
Arial
,
sans-serif
;
margin
:
0
;
padding
:
20px
;
background-color
:
#f4f4f4
;
color
:
#333
;
}
h1
{
text-align
:
center
;
color
:
#4CAF50
;
}
.container
{
max-width
:
800px
;
margin
:
0
auto
;
background
:
#fff
;
padding
:
20px
;
border-radius
:
8px
;
box-shadow
:
0
2px
10px
rgba
(
0
,
0
,
0
,
0.1
);
}
.block
{
margin-bottom
:
20px
;
border
:
1px
solid
#ccc
;
border-radius
:
4px
;
padding
:
10px
;
background-color
:
#fafafa
;
}
h2
{
color
:
#4CAF50
;
font-size
:
1.2em
;
margin-bottom
:
10px
;
}
label
{
display
:
block
;
margin
:
5px
0
;
}
input
[
type
=
"text"
]
{
width
:
calc
(
100%
-
22px
);
padding
:
10px
;
border
:
1px
solid
#ccc
;
border-radius
:
4px
;
margin-bottom
:
10px
;
transition
:
border
0.3s
;
}
input
[
type
=
"text"
]
:focus
{
border-color
:
#4CAF50
;
outline
:
none
;
}
input
[
type
=
"submit"
]
{
background-color
:
#4CAF50
;
color
:
white
;
border
:
none
;
padding
:
10px
15px
;
border-radius
:
4px
;
cursor
:
pointer
;
font-size
:
1em
;
transition
:
background-color
0.3s
;
}
input
[
type
=
"submit"
]
:hover
{
background-color
:
#45a049
;
}
table
{
width
:
100%
;
border
:
1px
solid
#ddd
;
border-radius
:
8px
;
/* 圆角 */
overflow
:
hidden
;
/* 隐藏超出表格的内容 */
box-shadow
:
0
0
10px
rgba
(
0
,
0
,
0
,
0.1
);
/* 添加阴影 */
}
th
,
td
{
border-bottom
:
1px
solid
#ddd
;
/* 单元格底部边框 */
padding
:
12px
;
/* 内边距 */
text-align
:
left
;
}
tr
:hover
{
background-color
:
#ADD8E6
;
/* 悬停时背景颜色 */
}
</style>
</head>
<body>
<div
class=
"container"
>
<h1>
配置obs_config_SCI.yaml
</h1>
<p><strong>
说明:
</strong>
1,该脚本可用于生成CSST主巡天成像仿真的参数文件,相关参数说明见本页脚注;2,用户必须修改相关路径参数,其他参数可参考默认值
.
</p>
<hr
style=
"border: 2px solid green;"
>
<form
method=
"POST"
>
{{ form_html | safe }}
<input
type=
"submit"
value=
"保存"
>
</form>
</div>
<footer
class=
"mt-4"
>
<p
class=
"text-center"
>
这是一个有用的网页
</p>
<table>
<tr>
<th>
KEYS
</th>
<th>
VALUES
</th>
<th>
COMMENTS
</th>
</tr>
<tr>
<th>
obs_type
</th>
<td>
"SCI", [str]
</td>
<td>
仿真图像类型
</td>
</tr>
<tr>
<th>
obs_type_code
</th>
<td>
"101", [str]
</td>
<td>
数据系统内部标号
</td>
</tr>
<tr>
<th>
obs_id
</th>
<td>
"00000001", [str]
</td>
<td>
this setting will only be used if pointing list file is not given
</td>
</tr>
<tr>
<th>
run_chips
</th>
<td>
[7,8,9], [list]
</td>
<td>
Define list of chips
</td>
</tr>
<tr>
<th>
scie_obs:
<span
style=
"font-weight: normal;"
>
shutter_effect
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用快门效应
</td>
</tr>
<tr>
<th>
scie_obs:
<span
style=
"font-weight: normal;"
>
flat_fielding
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用平场模块
</td>
</tr>
<tr>
<th>
scie_obs:
<span
style=
"font-weight: normal;"
>
field_dist
</span></th>
<td>
YES, [bool]
</td>
<td>
</td>
</tr>
<tr>
<th>
sky_background:
<span
style=
"font-weight: normal;"
>
shutter_effect
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用快门效应
</td>
</tr>
<tr>
<th>
sky_background:
<span
style=
"font-weight: normal;"
>
flat_fielding
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用平场模块
</td>
</tr>
<tr>
<th>
sky_background:
<span
style=
"font-weight: normal;"
>
enable_straylight_model
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用杂散光模块
</td>
</tr>
<tr>
<th>
sky_background:
<span
style=
"font-weight: normal;"
>
flat_level
</span></th>
<td>
null [null or int]
</td>
<td>
set the total skybackground value (e-) in the exptime,if none,set null, or delete the key
</td>
</tr>
<tr>
<th>
sky_background:
<span
style=
"font-weight: normal;"
>
flat_level_filt
</span></th>
<td>
null, [str]
</td>
<td>
the vale of "flat_level" is in the filter "flat_level_filt", can set NUV, u, g, r, i, z, y, if none,set null,or delete the key
</td>
</tr>
<tr>
<th>
PRNU_effect
<span
style=
"font-weight: normal;"
></span></th>
<td>
---
</td>
<td>
应用像素间不均匀响应模块;如果需关闭,请在生成的yaml文件中直接注释
</td>
</tr>
<tr>
<th>
cosmic_rays:
<span
style=
"font-weight: normal;"
>
save_cosmic_img
</span></th>
<td>
YES, [bool]
</td>
<td>
是否保存宇宙线图像
</td>
</tr>
<tr>
<th>
poisson_and_dark:
<span
style=
"font-weight: normal;"
>
add_dark
</span></th>
<td>
YES, [bool]
</td>
<td>
是否添加暗电流
</td>
</tr>
<tr>
<th>
bright_fatter
<span
style=
"font-weight: normal;"
></span></th>
<td>
YES, [bool]
</td>
<td>
应用亮胖效应模块;如果需关闭,请在生成的yaml文件中直接注释
</td>
</tr>
<tr>
<th>
detector_defects:
<span
style=
"font-weight: normal;"
>
hot_pixels
</span></th>
<td>
YES, [bool]
</td>
<td>
是否添加热像元
</td>
</tr>
<tr>
<th>
detector_defects:
<span
style=
"font-weight: normal;"
>
dead_pixels
</span></th>
<td>
YES, [bool]
</td>
<td>
是否添加坏像元
</td>
</tr>
<tr>
<th>
detector_defects:
<span
style=
"font-weight: normal;"
>
bad_columns
</span></th>
<td>
YES, [bool]
</td>
<td>
是否添加坏像列
</td>
</tr>
<tr>
<th>
nonlinearity
<span
style=
"font-weight: normal;"
></span></th>
<td>
---
</td>
<td>
应用非线性响应模块;如果需关闭,请在生成的yaml文件中直接注释
</td>
</tr>
<tr>
<th>
blooming
<span
style=
"font-weight: normal;"
></span></th>
<td>
---
</td>
<td>
是否应用饱和溢出模块;如果需关闭,请在生成的yaml文件中直接注释
</td>
</tr>
<tr>
<th>
prescan_overscan:
<span
style=
"font-weight: normal;"
>
add_dark
</span></th>
<td>
YES, [bool]
</td>
<td>
是否在pre/over-scan区域添加暗电流/
</td>
</tr>
<tr>
<th>
bias:
<span
style=
"font-weight: normal;"
>
bias_16channel
</span></th>
<td>
YES, [bool]
</td>
<td>
是否添加16通道的偏置电压
</td>
</tr>
<tr>
<th>
readout_noise
<span
style=
"font-weight: normal;"
></span></th>
<td>
---
</td>
<td>
添加读出噪声;如果需关闭,请在生成的yaml文件中直接注释
</td>
</tr>
<tr>
<th>
gain:
<span
style=
"font-weight: normal;"
>
gain_16channel
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用增益
</td>
</tr>
<tr>
<th>
quantization_and_output:
<span
style=
"font-weight: normal;"
>
format_output
</span></th>
<td>
YES, [bool]
</td>
<td>
是否按0级数据格式定义输出图像
</td>
</tr>
</table>
</footer>
</body>
</html>
tools/setConfig/templates/index_overall.html
0 → 100644
View file @
df22b3b0
<!DOCTYPE html>
<html
lang=
"zh"
>
<head>
<meta
charset=
"UTF-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<title>
csst_msc_sim_CONF
</title>
<link
href=
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"
rel=
"stylesheet"
>
<style>
body
{
font-family
:
Arial
,
sans-serif
;
margin
:
0
;
padding
:
20px
;
background-color
:
#f4f4f4
;
color
:
#333
;
}
h1
{
text-align
:
center
;
color
:
#4CAF50
;
}
.container
{
max-width
:
800px
;
margin
:
0
auto
;
background
:
#fff
;
padding
:
20px
;
border-radius
:
8px
;
box-shadow
:
0
2px
10px
rgba
(
0
,
0
,
0
,
0.1
);
}
.block
{
margin-bottom
:
20px
;
border
:
1px
solid
#ccc
;
border-radius
:
4px
;
padding
:
10px
;
background-color
:
#fafafa
;
}
h2
{
color
:
#4CAF50
;
font-size
:
1.2em
;
margin-bottom
:
10px
;
}
label
{
display
:
block
;
margin
:
5px
0
;
}
input
[
type
=
"text"
]
{
width
:
calc
(
100%
-
22px
);
padding
:
10px
;
border
:
1px
solid
#ccc
;
border-radius
:
4px
;
margin-bottom
:
10px
;
transition
:
border
0.3s
;
}
input
[
type
=
"text"
]
:focus
{
border-color
:
#4CAF50
;
outline
:
none
;
}
input
[
type
=
"submit"
]
{
background-color
:
#4CAF50
;
color
:
white
;
border
:
none
;
padding
:
10px
15px
;
border-radius
:
4px
;
cursor
:
pointer
;
font-size
:
1em
;
transition
:
background-color
0.3s
;
}
input
[
type
=
"submit"
]
:hover
{
background-color
:
#45a049
;
}
table
{
width
:
100%
;
border
:
1px
solid
#ddd
;
border-radius
:
8px
;
/* 圆角 */
overflow
:
hidden
;
/* 隐藏超出表格的内容 */
box-shadow
:
0
0
10px
rgba
(
0
,
0
,
0
,
0.1
);
/* 添加阴影 */
}
th
,
td
{
border-bottom
:
1px
solid
#ddd
;
/* 单元格底部边框 */
padding
:
12px
;
/* 内边距 */
text-align
:
left
;
}
tr
:hover
{
background-color
:
#ADD8E6
;
/* 悬停时背景颜色 */
}
</style>
</head>
<body>
<div
class=
"container"
>
<h1>
配置config_overall.yaml
</h1>
<p><strong>
说明:
</strong>
1,该脚本可用于生成CSST主巡天成像仿真的参数文件,相关参数说明见本页脚注;2,用户必须修改相关路径参数,其他参数可参考默认值.
</p>
<hr
style=
"border: 2px solid green;"
>
<form
method=
"POST"
>
{{ form_html | safe }}
<input
type=
"submit"
value=
"保存"
>
</form>
</div>
<footer
class=
"mt-4"
>
<p
class=
"text-center"
>
这是一个有用的网页
</p>
<table>
<tr>
<th>
KEYS
</th>
<th>
VALUES
</th>
<th>
COMMENTS
</th>
</tr>
<tr>
<th>
work_dir
</th>
<td>
/localpath, [str]
</td>
<td>
工作目录-仿真输出的文件路径
</td>
</tr>
<tr>
<th>
run_name
</th>
<td>
testRun, [str]
</td>
<td>
当前仿真目录
</td>
</tr>
<tr>
<th>
project_cycle
</th>
<td>
10, [int]
</td>
<td>
CSST数据系统开发阶段-C10
</td>
</tr>
<tr>
<th>
project_cycle
</th>
<td>
0, [int]
</td>
<td>
仿真次数标号-0
</td>
</tr>
<tr>
<th>
run_option:
<span
style=
"font-weight: normal;"
>
out_cat_only
</span></th>
<td>
NO, [bool]
</td>
<td>
是否仅输出星表-YES,不产生开展成像仿真,直接输出星表文件;NO,开展成像仿真
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
input_path
</span></th>
<td>
/localpath, [str]
</td>
<td>
"cat_dir": 输入星表路径, "star_cat": 恒星星表目录, "galaxy_cat": 星系星表目录
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
SED_templates_path
</span></th>
<td>
/localpath, [str]
</td>
<td>
"star_SED": 恒星SED路径,"galaxy_SED": 星系SED路径,"AGN_SED": 类星体SED路径
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
star_only
</span></th>
<td>
NO, [bool]
</td>
<td>
YES,只对恒星成像;NO,包含其他天体成像
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
galaxy_only
</span></th>
<td>
NO, [bool]
</td>
<td>
YES,只对星系成像;NO,包含其他天体成像
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
rotateEll
</span></th>
<td>
0.0, [float]
</td>
<td>
旋转星系指向(度)
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
enable_mw_ext_gal
</span></th>
<td>
NO, [bool]
</td>
<td>
是否应用银河系消光
</td>
</tr>
<tr>
<th>
catalog_options:
<span
style=
"font-weight: normal;"
>
planck_ebv_map
</span></th>
<td>
/localpath, [str]
</td>
<td>
消光模型
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
pointing_file
</span></th>
<td>
/localpath, [str]
</td>
<td>
曝光指向文件路径
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
obs_config_file
</span></th>
<td>
/localpath, [str]
</td>
<td>
观测配置文件路径
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
run_pointings
</span></th>
<td>
[0], [int]
</td>
<td>
give a list of indexes of pointings
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
enable_astrometric_model
</span></th>
<td>
YES, [bool]
</td>
<td>
是否应用天测模块
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
cut_in_band
</span></th>
<td>
"z", [str]
</td>
<td>
Cut by saturation magnitude in which band
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
mag_sat_margin
</span></th>
<td>
-2.5, [float]
</td>
<td>
saturation magnitude margin
</td>
</tr>
<tr>
<th>
obs_setting:
<span
style=
"font-weight: normal;"
>
mag_lim_margin
</span></th>
<td>
+1.0, [float]
</td>
<td>
limiting magnitude margin
</td>
</tr>
<tr>
<th>
psf_setting:
<span
style=
"font-weight: normal;"
>
psf_model
</span></th>
<td>
"Interp", [str]
</td>
<td>
Interp-Interpolated PSF from sampled ray-tracing data; Gauss-simple gaussian profile
</td>
</tr>
<tr>
<th>
psf_setting:
<span
style=
"font-weight: normal;"
>
psf_pho_dir
</span></th>
<td>
/localpath, [str]
</td>
<td>
多色成像PSF数据库路径
</td>
</tr>
<tr>
<th>
psf_setting:
<span
style=
"font-weight: normal;"
>
psf_sls_dir
</span></th>
<td>
/localpath, [str]
</td>
<td>
无缝光谱PSF数据库路径
</td>
</tr>
<tr>
<th>
shear_setting:
<span
style=
"font-weight: normal;"
>
shear_type
</span></th>
<td>
constant, [str]
</td>
<td>
constant-all galaxies are assigned a constant reduced shear; catalog-get shear values from catalog
</td>
</tr>
<tr>
<th>
shear_setting:
<span
style=
"font-weight: normal;"
>
reduced_g1
</span></th>
<td>
0.0, [float]
</td>
<td>
weak lensing shear, gamma_1
</td>
</tr>
<tr>
<th>
shear_setting:
<span
style=
"font-weight: normal;"
></span>
reduced_g1
</th>
<td>
0.0, [float]
</td>
<td>
weak lensing shear, gamma_2
</td>
</tr>
<tr>
<th>
output_setting:
<span
style=
"font-weight: normal;"
>
output_format
</span></th>
<td>
channels, [str]
</td>
<td>
Whether to export as 16 channels (subimages) with pre- and over-scan (\"image\"/\"channels\")
</td>
</tr>
<tr>
<th>
output_setting:
<span
style=
"font-weight: normal;"
>
shutter_output
</span></th>
<td>
NO, [bool]
</td>
<td>
Whether to export shutter effect 16-bit image
</td>
</tr>
<tr>
<th>
output_setting:
<span
style=
"font-weight: normal;"
>
prnu_output
</span></th>
<td>
NO, [bool]
</td>
<td>
Whether to export the PRNU (pixel-to-pixel flat-fielding) files
</td>
</tr>
<tr>
<th>
random_seeds
</th>
<td>
[int]
</td>
<td>
设置随机数种子
</td>
</tr>
</table>
</footer>
</body>
</html>
tools/setConfig/templates/obs_config_SCI.yaml
0 → 100644
View file @
df22b3b0
---
###############################################
#
# Configuration file for CSST simulation
# For single exposure type:
# SCI-WIDE
# CSST-Sim Group, 2024/01/08
#
###############################################
# Observation type
obs_type
:
"
SCI"
obs_type_code
:
"
101"
obs_id
:
"
00000001"
# this setting will only be used if pointing list file is not given
# Define list of chips
# run_chips: [6,7,8,9,11,12,13,14,15,16,17,18,19,20,22,23,24,25] # Photometric chips
#run_chips: [1,2,3,4,5,10,21,26,27,28,29,30] # Spectroscopic chips
run_chips
:
[
17
,
22
]
# Define observation sequence
call_sequence
:
# Accumulate fluxes from objects
scie_obs
:
# [Optional]: exposure time of the pointing will be used as default.
# Set it here is you want to override the default
# exptime: 150. # [s]
shutter_effect
:
YES
flat_fielding
:
YES
field_dist
:
YES
# Accumulate fluxes from sky background
sky_background
:
# [Optional]: exposure time of the pointing will be used as default.
# Set it here is you want to override the default
# exptime: 150. # [s]
shutter_effect
:
YES
flat_fielding
:
YES
enable_straylight_model
:
YES
# flat_level: set the total skybackground value (e-) in the exptime,if none,set null, or delete the key
# flat_level_filt: the vale of "flat_level" is in the filter "flat_level_filt", can set NUV, u, g, r, i, z, y, if
# none,set null,or delete the key
flat_level
:
null
flat_level_filt
:
null
# Apply PRNU to accumulated photons
PRNU_effect
:
{}
# Accumulate photons caused by cosmic rays
cosmic_rays
:
# [Optional]: exposure time of the pointing will be used as default.
# Set it here is you want to override the default
# exptime: 150. # [s]
save_cosmic_img
:
YES
# # Whether to export cosmic ray image
# Add Poission noise and dark current
poisson_and_dark
:
# [Optional]: exposure time of the pointing will be used as default.
# Set it here is you want to override the default
# exptime: 150. # [s]
add_dark
:
YES
# Simulate brighter fatter effects
bright_fatter
:
{}
# Add detector defects: hot/warm pixels, bad columns
detector_defects
:
hot_pixels
:
YES
dead_pixels
:
YES
bad_columns
:
YES
# Apply response nonlinearity
nonlinearity
:
{}
# Apply CCD Saturation & Blooming
blooming
:
{}
# Run CTE simulation
# CTE_effect: {}
# Add prescan and overscan
prescan_overscan
:
add_dark
:
YES
# Add bias
bias
:
bias_16channel
:
YES
# Add readout noise
readout_noise
:
{}
# Apply gain
gain
:
gain_16channel
:
YES
# Output the final image
quantization_and_output
:
format_output
:
YES
...
tools/target_location_check.py
View file @
df22b3b0
...
...
@@ -221,8 +221,8 @@ def ccdLayout(xpixTar, ypixTar, figout="ccdLayout.pdf"):
ax
.
text
(
ix0
+
500
,
iy0
+
1500
,
"%s#%s"
%
(
fType
,
ischip
),
fontsize
=
12
,
color
=
"grey"
)
ax
.
plot
(
xpixTar
,
ypixTar
,
"r*"
,
ms
=
12
)
ax
.
set_xlabel
(
"$X\,[\mathrm{pixels}]$"
,
fontsize
=
20
)
ax
.
set_ylabel
(
"$Y\,[\mathrm{pixels}]$"
,
fontsize
=
20
)
ax
.
set_xlabel
(
r
"$X\,[\mathrm{pixels}]$"
,
fontsize
=
20
)
ax
.
set_ylabel
(
r
"$Y\,[\mathrm{pixels}]$"
,
fontsize
=
20
)
ax
.
invert_yaxis
()
ax
.
axis
(
'off'
)
plt
.
savefig
(
figout
)
...
...
Prev
1
2
3
4
Next
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