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
Liu Dezi
csst_msc_sim
Commits
edd720e6
Commit
edd720e6
authored
Apr 17, 2024
by
Fang Yuedong
Browse files
Merge branch 'develop'
parents
959f0ebc
8df06b27
Changes
139
Hide whitespace changes
Inline
Side-by-side
config/
test_fd_C6
.yaml
→
config/
config_C6_dev
.yaml
View file @
edd720e6
...
...
@@ -9,9 +9,11 @@
# 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
:
"
/share/home/fangyuedong/
csst-simulation
/workplace/"
work_dir
:
"
/share/home/fangyuedong/
20231211
/workplace/"
data_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/"
run_name
:
"
fd_shear_g2m"
run_name
:
"
test_spec"
project_cycle
:
6
run_counter
:
1
# Whether to use MPI
run_option
:
...
...
@@ -47,7 +49,7 @@ catalog_options:
star_only
:
NO
# Only simulate galaxies?
galaxy_only
:
YES
galaxy_only
:
NO
# rotate galaxy ellipticity
rotateEll
:
0.
# [degree]
...
...
@@ -64,7 +66,16 @@ obs_setting:
# "Spectroscopic": simulate slitless spectroscopic chips only
# "FGS": simulate FGS chips only (31-42)
# "All": simulate full focal plane
survey_type
:
"
Photometric"
# "CALIBRATION": falt, bias, dark with or without postflash
survey_type
:
"
Spectroscopic"
#"LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null
#'LED1': '275', 'LED2': '310', 'LED3': '430', 'LED4': '505', 'LED5': '545', 'LED6': '590', 'LED7': '670',
#'LED8': '760', 'LED9': '940', 'LED10': '940', 'LED11': '1050', 'LED12': '1050','LED13': '340', 'LED14': '365'
LED_TYPE
:
[
'
LED5'
]
LED_TIME
:
[
1.
]
# unit e- ,flat level
FLAT_LEVEL
:
20000
FLAT_LEVEL_FIL
:
'
g'
# Exposure time [seconds]
exp_time
:
150.
...
...
@@ -100,19 +111,20 @@ obs_setting:
# - give a list of indexes of chips: [ip_1, ip_2...]
# - run all chips: null
# Note: for all pointings
run_chips
:
[
9
]
run_chips
:
[
1
]
# Whether to enable astrometric modeling
enable_astrometric_model
:
True
# Whether to enable straylight model
enable_straylight_model
:
Fals
e
enable_straylight_model
:
Tru
e
# Cut by saturation magnitude in which band?
cut_in_band
:
"
z"
# saturation magnitude margin
mag_sat_margin
:
-2.5
# mag_sat_margin: -2.5
mag_sat_margin
:
-15.
# limiting magnitude margin
mag_lim_margin
:
+1.0
...
...
@@ -135,7 +147,7 @@ psf_setting:
# path to PSF data
# NOTE: only valid for "Interp" PSF
psf_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/psfCube1"
psf_sls_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/SLS_PSF_PCA_fp/"
###############################################
# Shear setting
###############################################
...
...
@@ -160,22 +172,25 @@ ins_effects:
field_dist
:
YES
# Whether to add field distortions
add_back
:
YES
# Whether to add sky background
add_dark
:
YES
# Whether to add dark noise
add_readout
:
NO
# Whether to add read-out (Gaussian) noise
add_readout
:
YES
# Whether to add read-out (Gaussian) noise
add_bias
:
YES
# Whether to add bias-level to images
bias_16channel
:
NO
# Whether to add different biases for 16 channels
gain_16channel
:
NO
# Whether to make different gains for 16 channels
shutter_effect
:
NO
# Whether to add shutter effect
add_prescan
:
YES
bias_16channel
:
YES
# Whether to add different biases for 16 channels
gain_16channel
:
YES
# Whether to make different gains for 16 channels
shutter_effect
:
YES
# Whether to add shutter effect
flat_fielding
:
YES
# Whether to add flat-fielding effect
prnu_effect
:
NO
# Whether to add PRNU effect
non_linear
:
NO
# Whether to add non-linearity
cosmic_ray
:
NO
# Whether to add cosmic-ray
cray_differ
:
NO
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
NO
# Whether to simulate CTE trails
saturbloom
:
NO
# Whether to simulate Saturation & Blooming
add_badcolumns
:
NO
# Whether to add bad columns
add_hotpixels
:
NO
# Whether to add hot pixels
add_deadpixels
:
NO
# Whether to add dead(dark) pixels
bright_fatter
:
NO
# Whether to simulate Brighter-Fatter (also diffusion) effect
prnu_effect
:
YES
# Whether to add PRNU effect
non_linear
:
YES
# Whether to add non-linearity
cosmic_ray
:
YES
# Whether to add cosmic-ray
cray_differ
:
YES
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
YES
# Whether to simulate CTE trails, CTI_lgl_v0.3.tar.gz
saturbloom
:
YES
# Whether to simulate Saturation & Blooming
add_badcolumns
:
YES
# Whether to add bad columns
add_hotpixels
:
YES
# Whether to add hot pixels
add_deadpixels
:
YES
# Whether to add dead(dark) pixels
bright_fatter
:
YES
# Whether to simulate Brighter-Fatter (also diffusion) effect
add_prescan
:
YES
# Whether to add pre/over-scan
format_output
:
YES
##1*16 output
# Values:
# default values have been defined individually for each chip in:
...
...
@@ -217,4 +232,4 @@ random_seeds:
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
...
config/config_C6_fits.yaml
View file @
edd720e6
...
...
@@ -9,9 +9,11 @@
# 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
:
"
/share/simudata/CSSOSDataProductsSims/data/CSSTSimImage_C
6
/"
work_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/CSSTSimImage_C
8
/"
data_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/"
run_name
:
"
C6_fits_testRun"
run_name
:
"
testRun_FGS"
project_cycle
:
6
run_counter
:
1
# Whether to use MPI
run_option
:
...
...
@@ -25,6 +27,9 @@ run_option:
# If yes, no imaging simulation will run
out_cat_only
:
NO
#output PSF
out_psf
:
YES
###############################################
# Catalog setting
###############################################
...
...
@@ -46,13 +51,13 @@ catalog_options:
#stamp_SED:
# Only simulate stars?
star_only
:
NO
star_only
:
YES
# Only simulate galaxies?
galaxy_only
:
NO
# With stamp?
stamp_yes
:
YES
stamp_yes
:
NO
# rotate galaxy ellipticity
rotateEll
:
0.
# [degree]
...
...
@@ -63,13 +68,23 @@ catalog_options:
# Observation setting
###############################################
obs_setting
:
# Options for survey types:
# "Photometric": simulate photometric chips only
# "Spectroscopic": simulate slitless spectroscopic chips only
# "FGS": simulate FGS chips only (31-42)
# "All": simulate full focal plane
survey_type
:
"
Photometric"
# "CALIBRATION": falt, bias, dark with or without postflash
survey_type
:
"
All"
# "LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null
# 'LED1': '275', 'LED2': '310', 'LED3': '430', 'LED4': '505', 'LED5': '545', 'LED6': '590', 'LED7': '670',
# 'LED8': '760', 'LED9': '940', 'LED10': '940', 'LED11': '1050', 'LED12': '1050','LED13': '340', 'LED14': '365'
# LED_TYPE: ['LED5']
# LED_TIME: [1.]
# # unit e- ,flat level
# FLAT_LEVEL: 20000
# FLAT_LEVEL_FIL: 'g'
# Exposure time [seconds]
exp_time
:
150.
...
...
@@ -79,19 +94,17 @@ obs_setting:
# Default Pointing [degrees]
# Note: NOT valid when a pointing list file is specified
ra_center
:
244.972773
dec_center
:
39.895901
ra_center
:
192.8595
dec_center
:
27.1283
# Image rotation [degree]
image_rot
:
109.59
image_rot
:
-113.4333
# (Optional) a file of point list
# (Optional) a file of point list
# if you just want to run default pointing:
# - pointing_dir: null
# - pointing_file: null
pointing_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/"
pointing_file
:
"
pointing_radec_246.5_40.dat"
# pointing_dir: null
# pointing_file: null
# Number of calibration pointings
np_cal
:
0
...
...
@@ -101,21 +114,25 @@ obs_setting:
# - run all pointings: null
# Note: only valid when a pointing list is specified
run_pointings
:
[
0
]
# Run specific chip(s):
# - give a list of indexes of chips: [ip_1, ip_2...]
# - run all chips: null
# Note: for all pointings
run_chips
:
[
7
]
run_chips
:
[
39
,
40
,
41
,
42
]
# Whether to enable astrometric modeling
enable_astrometric_model
:
False
enable_astrometric_model
:
True
# Whether to enable straylight model
enable_straylight_model
:
True
# Cut by saturation magnitude in which band?
cut_in_band
:
"
z"
# saturation magnitude margin
mag_sat_margin
:
-2.5
# mag_sat_margin: -2.5
mag_sat_margin
:
-15.
# limiting magnitude margin
mag_lim_margin
:
+1.0
...
...
@@ -138,7 +155,7 @@ psf_setting:
# path to PSF data
# NOTE: only valid for "Interp" PSF
psf_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/psfCube1"
psf_sls_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/SLS_PSF_PCA_fp/"
###############################################
# Shear setting
###############################################
...
...
@@ -160,25 +177,27 @@ ins_effects:
# switches
# Note: bias_16channel, gain_16channel, and shutter_effect
# is currently not applicable to "FGS" observations
field_dist
:
OFF
# Whether to add field distortions
add_back
:
OFF
# Whether to add sky background
add_dark
:
OFF
# Whether to add dark noise
add_readout
:
OFF
# Whether to add read-out (Gaussian) noise
add_bias
:
OFF
# Whether to add bias-level to images
bias_16channel
:
OFF
# Whether to add different biases for 16 channels
gain_16channel
:
OFF
# Whether to make different gains for 16 channels
shutter_effect
:
OFF
# Whether to add shutter effect
flat_fielding
:
OFF
# Whether to add flat-fielding effect
prnu_effect
:
OFF
# Whether to add PRNU effect
non_linear
:
OFF
# Whether to add non-linearity
cosmic_ray
:
OFF
# Whether to add cosmic-ray
cray_differ
:
OFF
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
OFF
# Whether to simulate CTE trails
saturbloom
:
OFF
# Whether to simulate Saturation & Blooming
add_badcolumns
:
OFF
# Whether to add bad columns
add_hotpixels
:
OFF
# Whether to add hot pixels
add_deadpixels
:
OFF
# Whether to add dead(dark) pixels
bright_fatter
:
OFF
# Whether to simulate Brighter-Fatter (also diffusion) effect
field_dist
:
YES
# Whether to add field distortions
add_back
:
YES
# Whether to add sky background
add_dark
:
YES
# Whether to add dark noise
add_readout
:
YES
# Whether to add read-out (Gaussian) noise
add_bias
:
YES
# Whether to add bias-level to images
bias_16channel
:
YES
# Whether to add different biases for 16 channels
gain_16channel
:
YES
# Whether to make different gains for 16 channels
shutter_effect
:
NO
# Whether to add shutter effect
flat_fielding
:
YES
# Whether to add flat-fielding effect
prnu_effect
:
YES
# Whether to add PRNU effect
non_linear
:
YES
# Whether to add non-linearity
cosmic_ray
:
YES
# Whether to add cosmic-ray
cray_differ
:
YES
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
NO
# Whether to simulate CTE trails, CTI_lgl_v0.3.tar.gz
saturbloom
:
YES
# Whether to simulate Saturation & Blooming
add_badcolumns
:
YES
# Whether to add bad columns
add_hotpixels
:
YES
# Whether to add hot pixels
add_deadpixels
:
YES
# Whether to add dead(dark) pixels
bright_fatter
:
YES
# Whether to simulate Brighter-Fatter (also diffusion) effect
add_prescan
:
NO
# Whether to add pre/over-scan
format_output
:
NO
##1*16 output
# Values:
# default values have been defined individually for each chip in:
...
...
@@ -220,4 +239,4 @@ random_seeds:
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
...
config/config_
C6_test_wcs
.yaml
→
config/config_
ooc_c6
.yaml
View file @
edd720e6
...
...
@@ -9,13 +9,15 @@
# 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
:
"
/share/home/fangyuedong/
csst-simulation
/workplace/"
work_dir
:
"
/share/home/fangyuedong/
20231211
/workplace/"
data_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/"
run_name
:
"
fd_shear_g2m"
run_name
:
"
test20231218_c6_onlyCat"
project_cycle
:
6
run_counter
:
1
# Whether to use MPI
run_option
:
use_mpi
:
YES
use_mpi
:
NO
# NOTE: "n_threads" paramters is currently not used in the backend
# simulation codes. It should be implemented later in the web frontend
# in order to config the number of threads to request from NAOC cluster
...
...
@@ -23,7 +25,7 @@ run_option:
# Output catalog only?
# If yes, no imaging simulation will run
out_cat_only
:
NO
out_cat_only
:
YES
###############################################
# Catalog setting
...
...
@@ -44,10 +46,10 @@ catalog_options:
AGN_SED_WAVE
:
"
wave_ross13.npy"
# Only simulate stars?
star_only
:
NO
star_only
:
YES
# Only simulate galaxies?
galaxy_only
:
YES
galaxy_only
:
NO
# rotate galaxy ellipticity
rotateEll
:
0.
# [degree]
...
...
@@ -64,7 +66,16 @@ obs_setting:
# "Spectroscopic": simulate slitless spectroscopic chips only
# "FGS": simulate FGS chips only (31-42)
# "All": simulate full focal plane
survey_type
:
"
All"
# "CALIBRATION": falt, bias, dark with or without postflash
survey_type
:
"
Photometric"
#"LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null
#'LED1': '275', 'LED2': '310', 'LED3': '430', 'LED4': '505', 'LED5': '545', 'LED6': '590', 'LED7': '670',
#'LED8': '760', 'LED9': '940', 'LED10': '940', 'LED11': '1050', 'LED12': '1050','LED13': '340', 'LED14': '365'
LED_TYPE
:
[
'
LED5'
]
LED_TIME
:
[
1.
]
# unit e- ,flat level
FLAT_LEVEL
:
20000
FLAT_LEVEL_FIL
:
'
g'
# Exposure time [seconds]
exp_time
:
150.
...
...
@@ -100,19 +111,20 @@ obs_setting:
# - give a list of indexes of chips: [ip_1, ip_2...]
# - run all chips: null
# Note: for all pointings
run_chips
:
[
9
]
run_chips
:
[
8
]
# Whether to enable astrometric modeling
enable_astrometric_model
:
False
# Whether to enable straylight model
enable_straylight_model
:
Fals
e
enable_straylight_model
:
Tru
e
# 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
...
...
@@ -135,7 +147,7 @@ psf_setting:
# path to PSF data
# NOTE: only valid for "Interp" PSF
psf_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/psfCube1"
psf_sls_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/SLS_PSF_PCA_fp/"
###############################################
# Shear setting
###############################################
...
...
@@ -144,7 +156,7 @@ shear_setting:
# Options to generate mock shear field:
# "constant": all galaxies are assigned a constant reduced shear
# "catalog": from catalog
shear_type
:
"
c
atalog
"
shear_type
:
"
c
onstant
"
# For constant shear filed
reduced_g1
:
0.
...
...
@@ -162,20 +174,22 @@ ins_effects:
add_dark
:
YES
# Whether to add dark noise
add_readout
:
YES
# Whether to add read-out (Gaussian) noise
add_bias
:
YES
# Whether to add bias-level to images
bias_16channel
:
OFF
# Whether to add different biases for 16 channels
gain_16channel
:
OFF
# Whether to make different gains for 16 channels
shutter_effect
:
OFF
# Whether to add shutter effect
flat_fielding
:
OFF
# Whether to add flat-fielding effect
prnu_effect
:
OFF
# Whether to add PRNU effect
non_linear
:
OFF
# Whether to add non-linearity
cosmic_ray
:
OFF
# Whether to add cosmic-ray
cray_differ
:
OFF
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
OFF
# Whether to simulate CTE trails
saturbloom
:
OFF
# Whether to simulate Saturation & Blooming
add_badcolumns
:
OFF
# Whether to add bad columns
add_hotpixels
:
OFF
# Whether to add hot pixels
add_deadpixels
:
OFF
# Whether to add dead(dark) pixels
bright_fatter
:
OFF
# Whether to simulate Brighter-Fatter (also diffusion) effect
bias_16channel
:
YES
# Whether to add different biases for 16 channels
gain_16channel
:
YES
# Whether to make different gains for 16 channels
shutter_effect
:
YES
# Whether to add shutter effect
flat_fielding
:
YES
# Whether to add flat-fielding effect
prnu_effect
:
YES
# Whether to add PRNU effect
non_linear
:
YES
# Whether to add non-linearity
cosmic_ray
:
YES
# Whether to add cosmic-ray
cray_differ
:
YES
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
YES
# Whether to simulate CTE trails, CTI_lgl_v0.3.tar.gz
saturbloom
:
YES
# Whether to simulate Saturation & Blooming
add_badcolumns
:
YES
# Whether to add bad columns
add_hotpixels
:
YES
# Whether to add hot pixels
add_deadpixels
:
YES
# Whether to add dead(dark) pixels
bright_fatter
:
YES
# Whether to simulate Brighter-Fatter (also diffusion) effect
add_prescan
:
YES
# Whether to add pre/over-scan
format_output
:
YES
##1*16 output
# Values:
# default values have been defined individually for each chip in:
...
...
@@ -217,4 +231,4 @@ random_seeds:
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
...
config/config_
example
.yaml
→
config/config_
overall
.yaml
View file @
edd720e6
...
...
@@ -2,95 +2,69 @@
###############################################
#
# Configuration file for CSST simulation
# CSST-Sim Group, 2023/04/25
# 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/20211203/CSST/workplace/"
data_dir
:
"
/data/simudata/CSSOSDataProductsSims/data/"
run_name
:
"
example"
# 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
:
"
QSO_50sqdeg_test"
# Project cycle and run counter are used to name the outputs
project_cycle
:
9
run_counter
:
1
#
Whether to use MPI
#
Run options
run_option
:
use_mpi
:
YES
# NOTE: "n_threads" paramters is currently not used in the backend
# simulation codes. It should be implemented later in the web frontend
# in order to config the number of threads to request from NAOC cluster
n_threads
:
80
use_mpi
:
NO
# Output catalog only?
# If yes, no imaging simulation will run
# If yes, no imaging simulation will be run. Only the catalogs
# of corresponding footprints will be generated.
out_cat_only
:
NO
###############################################
# Catalog setting
###############################################
# Configure
your
catalog: options
to
be implemented
# Configure
the input
catalog: options
should
be implemented
# in the corresponding (user defined) 'Catalog' class
catalog_options
:
input_path
:
cat_dir
:
"
catalog_points_7degree2/point_RA60.9624_DE-41.5032
/"
star_cat
:
"
star
s_ccd13_p_RA60.9624_DE-41.5032.hdf5
"
galaxy_cat
:
null
cat_dir
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg
/"
star_cat
:
"
star
cat/
"
galaxy_cat
:
"
qsocat/cat2CSSTSim_bundle-50sqDeg/"
SED_templates_path
:
star_SED
:
"
SED_MMW_Gaia_Cluster_D20_SS.hdf5"
galaxy_SED
:
null
star_SED
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/SpecLib.hdf5"
galaxy_SED
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/sedlibs/"
AGN_SED
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/qsocat/qsosed/"
# Only simulate stars?
star_only
:
YES
star_only
:
NO
# Only simulate galaxies?
galaxy_only
:
YES
###############################################
# Observation setting
###############################################
obs_setting
:
# Options for survey types:
# "Photometric": simulate photometric chips only
# "Spectroscopic": simulate slitless spectroscopic chips only
# "FGS": simulate FGS chips only (31-42)
# "All": simulate full focal plane
survey_type
:
"
Photometric"
# Exposure time [seconds]
exp_time
:
150.
# Observation starting date & time
date_obs
:
"
210525"
# [yymmdd]
time_obs
:
"
120000"
# [hhmmss]
# Default Pointing [degrees]
# Note: NOT valid when a pointing list file is specified
ra_center
:
60.9624
dec_center
:
-41.5032
# Image rotation [degree]
image_rot
:
-113.4333
# (Optional) a file of point list
# if you just want to run default pointing:
# - pointing_dir: null
# - pointing_file: null
pointing_dir
:
null
pointing_file
:
null
pointing_file
:
"
/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/pointing50_C9/pointing_50_1_n.dat"
# Number of calibration pointings
np_cal
:
2
obs_config_file
:
"
/public/home/fangyuedong/project/csst-simulation/config/obs_config_SCI_WIDE_phot.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
:
null
# Run specific chip(s):
# - give a list of indexes of chips: [ip_1, ip_2...]
# - run all chips: null
# Note: for all pointings
run_chips
:
[
18
]
run_pointings
:
[
0
]
# Whether to enable astrometric modeling
enable_astrometric_model
:
True
...
...
@@ -100,6 +74,7 @@ obs_setting:
# saturation magnitude margin
mag_sat_margin
:
-2.5
# mag_sat_margin: -15.
# limiting magnitude margin
mag_lim_margin
:
+1.0
...
...
@@ -117,11 +92,14 @@ psf_setting:
# PSF size [arcseconds]
# radius of 80% energy encircled
# NOTE: only valid for "Gauss" PSF
psf_rcont
:
0.15
#
psf_rcont: 0.15
# path to PSF data
# NOTE: only valid for "Interp" PSF
psf_dir
:
"
/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/psfCube"
# 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
:
"
/share/simudata/CSSOSDataProductsSims/data/SLS_PSF_PCA_fp/"
###############################################
# Shear setting
...
...
@@ -130,65 +108,20 @@ psf_setting:
shear_setting
:
# Options to generate mock shear field:
# "constant": all galaxies are assigned a constant reduced shear
# "catalog": from catalog
# "catalog":
get shear values
from catalog
shear_type
:
"
constant"
# For constant shear filed
reduced_g1
:
0.026
reduced_g2
:
0.015
###############################################
# Instrumental effects setting
###############################################
ins_effects
:
# switches
# Note: bias_16channel, gain_16channel, and shutter_effect
# is currently not applicable to "FGS" observations
field_dist
:
ON
# Whether to add field distortions
add_back
:
ON
# Whether to add sky background
add_dark
:
ON
# Whether to add dark noise
add_readout
:
ON
# Whether to add read-out (Gaussian) noise
add_bias
:
ON
# Whether to add bias-level to images
bias_16channel
:
ON
# Whether to add different biases for 16 channels
gain_16channel
:
ON
# Whether to make different gains for 16 channels
shutter_effect
:
ON
# Whether to add shutter effect
flat_fielding
:
ON
# Whether to add flat-fielding effect
prnu_effect
:
ON
# Whether to add PRNU effect
non_linear
:
OFF
# Whether to add non-linearity
cosmic_ray
:
ON
# Whether to add cosmic-ray
cray_differ
:
ON
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
ON
# Whether to simulate CTE trails
saturbloom
:
ON
# Whether to simulate Saturation & Blooming
add_badcolumns
:
ON
# Whether to add bad columns
add_hotpixels
:
ON
# Whether to add hot pixels
add_deadpixels
:
ON
# Whether to add dead(dark) pixels
bright_fatter
:
ON
# Whether to simulate Brighter-Fatter (also diffusion) effect
# Values:
# default values have been defined individually for each chip in:
# ObservationSim/Instrument/data/ccd/chip_definition.json
# Set them here will override the default values
# dark_exptime: 300 # Exposure time for dark current frames [seconds]
# flat_exptime: 150 # Exposure time for flat-fielding frames [seconds]
# readout_time: 40 # The read-out time for each channel [seconds]
# df_strength: 2.3 # Sillicon sensor diffusion strength
# bias_level: 500 # bias level [e-/pixel]
# gain: 1.1 # Gain
# full_well: 90000 # Full well depth [e-]
# For constant shear field
reduced_g1
:
0.
reduced_g2
:
0.
###############################################
# Output options
(for calibration pointings only)
# Output options
###############################################
output_setting
:
readout16
:
OFF
# Whether to export as 16 channels (subimages) with pre- and over-scan
shutter_output
:
OFF
# Whether to export shutter effect 16-bit image
bias_output
:
ON
# Whether to export bias frames
dark_output
:
ON
# Whether to export the combined dark current files
flat_output
:
ON
# Whether to export the combined flat-fielding files
prnu_output
:
OFF
# Whether to export the PRNU (pixel-to-pixel flat-fielding) files
NBias
:
1
# Number of bias frames to be exported for each exposure
NDark
:
1
# Number of dark frames to be exported for each exposure
NFlat
:
1
# Number of flat frames to be exported for each exposure
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
...
...
config/config_
fgs
.yaml
→
config/config_
overall_newStar
.yaml
View file @
edd720e6
...
...
@@ -2,119 +2,79 @@
###############################################
#
# Configuration file for CSST simulation
# CSST-Sim Group, 2023/04/25
# 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
:
"
/share/home/fangyuedong/csst-simulation/workplace/"
data_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/"
run_name
:
"
fgs_test"
# 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
:
"
/home/zhangxin/CSST_SIM/CSST_sim_scheduler/"
run_name
:
"
QSO_50sqdeg_test"
# Whether to use MPI
# Project cycle and run counter are used to name the outputs
project_cycle
:
9
run_counter
:
1
# Run options
run_option
:
use_mpi
:
NO
# NOTE: "n_threads" paramters is currently not used in the backend
# simulation codes. It should be implemented later in the web frontend
# in order to config the number of threads to request from NAOC cluster
n_threads
:
80
# Output catalog only?
# If yes, no imaging simulation will run
# If yes, no imaging simulation will be run. Only the catalogs
# of corresponding footprints will be generated.
out_cat_only
:
NO
###############################################
# Catalog setting
###############################################
# Configure
your
catalog: options
to
be implemented
# Configure
the input
catalog: options
should
be implemented
# in the corresponding (user defined) 'Catalog' class
catalog_options
:
input_path
:
cat_dir
:
"
Catalog_C6_20221212"
star_cat
:
"
C6_MMW_GGC_Astrometry_healpix.hdf5"
galaxy_cat
:
"
cat2CSSTSim_bundle/"
AGN_cat
:
"
AGN_C6_ross13_rand_pos_rmax-1.3.fits"
cat_dir
:
"
/nfsdata/share/CSSOSDataProductsSims/data/Catalog_C6_20221212/"
star_cat
:
"
star_catalog/"
# galaxy_cat: "qsocat/cat2CSSTSim_bundle-50sqDeg/"
SED_templates_path
:
star_SED
:
"
Catalog_20210126/SpecLib.hdf5"
galaxy_SED
:
"
Catalog_C6_20221212/sedlibs/"
AGN_SED
:
"
quickspeclib_ross13.fits"
AGN_SED_WAVE
:
"
wave_ross13.npy"
star_SED
:
"
/nfsdata/share/CSSOSDataProductsSims/data/Catalog_C6_20221212/star_catalog/"
# 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
star_only
:
YES
# Only simulate galaxies?
galaxy_only
:
NO
# rotate galaxy ellipticity
rotateEll
:
0.
# [degree]
seed_Av
:
121212
# Seed for generating random intrinsic extinction
###############################################
# Observation setting
###############################################
obs_setting
:
# Options for survey types:
# "Photometric": simulate photometric chips only
# "Spectroscopic": simulate slitless spectroscopic chips only
# "FGS": simulate FGS chips only (31-42)
# "All": simulate full focal plane
survey_type
:
"
FGS"
# Exposure time [seconds]
exp_time
:
150.
# Observation starting date & time
date_obs
:
"
210525"
# [yymmdd]
time_obs
:
"
120000"
# [hhmmss]
# Default Pointing [degrees]
# Note: NOT valid when a pointing list file is specified
ra_center
:
244.972773
dec_center
:
39.895901
# Image rotation [degree]
image_rot
:
109.59
# (Optional) a file of point list
# if you just want to run default pointing:
# - pointing_dir: null
# - pointing_file: null
# pointing_dir: "/share/simudata/CSSOSDataProductsSims/data/"
# pointing_file: "pointing_radec_246.5_40.dat"
pointing_dir
:
null
pointing_file
:
null
pointing_file
:
"
/nfsdata/share/CSSOSDataProductsSims/data/pointing_50_1_n.dat"
# Number of calibration pointings
np_cal
:
0
obs_config_file
:
"
/home/zhangxin/CSST_SIM/CSST_sim_scheduler/csst-simulation/config/obs_config_SCI_WIDE_phot.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
]
# Run specific chip(s):
# - give a list of indexes of chips: [ip_1, ip_2...]
# - run all chips: null
# Note: for all pointings
run_chips
:
[
32
]
run_pointings
:
[
1
]
# Whether to enable astrometric modeling
enable_astrometric_model
:
True
# Whether to enable straylight model
enable_straylight_model
:
True
enable_astrometric_model
:
NO
# Cut by saturation magnitude in which band?
cut_in_band
:
"
FGS
"
cut_in_band
:
"
z
"
# saturation magnitude margin
mag_sat_margin
:
-2.5
# mag_sat_margin: -15.
# limiting magnitude margin
mag_lim_margin
:
+1.0
...
...
@@ -132,11 +92,14 @@ psf_setting:
# PSF size [arcseconds]
# radius of 80% energy encircled
# NOTE: only valid for "Gauss" PSF
psf_rcont
:
0.15
#
psf_rcont: 0.15
# path to PSF data
# NOTE: only valid for "Interp" PSF
psf_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/psfCube1"
# PSF models for photometry survey simulation
psf_pho_dir
:
"
/nfsdata/share/CSSOSDataProductsSims/data/psfCube1"
# PSF models for slitless spectrum survey simulation
psf_sls_dir
:
"
/nfsdata/share/CSSOSDataProductsSims/data/SLS_PSF_PCA_fp/"
###############################################
# Shear setting
...
...
@@ -145,65 +108,20 @@ psf_setting:
shear_setting
:
# Options to generate mock shear field:
# "constant": all galaxies are assigned a constant reduced shear
# "catalog": from catalog
shear_type
:
"
c
atalog
"
# "catalog":
get shear values
from catalog
shear_type
:
"
c
onstant
"
# For constant shear fi
l
ed
# For constant shear fie
l
d
reduced_g1
:
0.
reduced_g2
:
0.
###############################################
# Instrumental effects setting
###############################################
ins_effects
:
# switches
# Note: bias_16channel, gain_16channel, and shutter_effect
# is currently not applicable to "FGS" observations
field_dist
:
ON
# Whether to add field distortions
add_back
:
ON
# Whether to add sky background
add_dark
:
ON
# Whether to add dark noise
add_readout
:
ON
# Whether to add read-out (Gaussian) noise
add_bias
:
ON
# Whether to add bias-level to images
bias_16channel
:
OFF
# Whether to add different biases for 16 channels
gain_16channel
:
OFF
# Whether to make different gains for 16 channels
shutter_effect
:
OFF
# Whether to add shutter effect
flat_fielding
:
ON
# Whether to add flat-fielding effect
prnu_effect
:
ON
# Whether to add PRNU effect
non_linear
:
ON
# Whether to add non-linearity
cosmic_ray
:
ON
# Whether to add cosmic-ray
cray_differ
:
ON
# Whether to generate different cosmic ray maps CAL and MS output
cte_trail
:
ON
# Whether to simulate CTE trails
saturbloom
:
ON
# Whether to simulate Saturation & Blooming
add_badcolumns
:
ON
# Whether to add bad columns
add_hotpixels
:
ON
# Whether to add hot pixels
add_deadpixels
:
ON
# Whether to add dead(dark) pixels
bright_fatter
:
ON
# Whether to simulate Brighter-Fatter (also diffusion) effect
# Values:
# default values have been defined individually for each chip in:
# ObservationSim/Instrument/data/ccd/chip_definition.json
# Set them here will override the default values
# dark_exptime: 300 # Exposure time for dark current frames [seconds]
# flat_exptime: 150 # Exposure time for flat-fielding frames [seconds]
# readout_time: 0.01 # The read-out time for each channel [seconds]
# df_strength: 2.3 # Sillicon sensor diffusion strength
# bias_level: 2000 # bias level [e-/pixel]
# gain: 1. # Gain
# full_well: 90000 # Full well depth [e-]
###############################################
# Output options (for calibration pointings only)
# Output options
###############################################
output_setting
:
readout16
:
OFF
# Whether to export as 16 channels (subimages) with pre- and over-scan
shutter_output
:
OFF
# Whether to export shutter effect 16-bit image
bias_output
:
ON
# Whether to export bias frames
dark_output
:
ON
# Whether to export the combined dark current files
flat_output
:
ON
# Whether to export the combined flat-fielding files
prnu_output
:
OFF
# Whether to export the PRNU (pixel-to-pixel flat-fielding) files
NBias
:
1
# Number of bias frames to be exported for each exposure
NDark
:
1
# Number of dark frames to be exported for each exposure
NFlat
:
1
# Number of flat frames to be exported for each exposure
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
...
...
config/obs_config_Calibration_BIAS.yaml
0 → 100644
View file @
edd720e6
---
###############################################
#
# Configuration file for CSST simulation
# For single exposure type:
# BIAS
# CSST-Sim Group, 2024/01/08
#
###############################################
# Observation type
obs_type
:
"
BIAS"
obs_type_code
:
"
120"
obs_id
:
"
00000001"
# Define list of chips
run_chips
:
[
17
]
# Define observation sequence
call_sequence
:
# # Accumulate fluxes from objects
# led_calib_model:
# #"LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null
# #'LED1': '275', 'LED2': '310', 'LED3': '430', 'LED4': '505', 'LED5': '525', 'LED6': '590', 'LED7': '670',
# #'LED8': '760', 'LED9': '880', 'LED10': '940', 'LED11': '1050', 'LED12': '1550','LED13': '340', 'LED14': '365'
# LED_TYPE: ['LED13']
# LED_TIME: [1.]
# # if open shutter effect, led time must be >=2.6s
# shutter_effect: NO
# 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
# sky_background:
# exptime: 150. # [s]
# shutter_effect: YES
# flat_fielding: YES
# enable_straylight_model: YES
# flat_level: 20000
# flat_level_filt: g
# Apply PRNU to accumulated photons
PRNU_effect
:
{}
# Accumulate photons caused by cosmic rays
cosmic_rays
:
{}
# Add Poission noise and dark current
poisson_and_dark
:
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
...
\ No newline at end of file
config/obs_config_Calibration_FLAT.yaml
0 → 100644
View file @
edd720e6
---
###############################################
#
# Configuration file for CSST simulation
# For single exposure type:
# FLAT
# CSST-Sim Group, 2024/01/08
#
###############################################
# Observation type
obs_type
:
"
FLAT"
obs_type_code
:
"
128"
obs_id
:
"
00000001"
# Define list of chips
run_chips
:
[
17
]
# Define observation sequence
call_sequence
:
# Accumulate fluxes from objects
led_calib_model
:
#"LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null
#'LED1': '275', 'LED2': '310', 'LED3': '430', 'LED4': '505', 'LED5': '525', 'LED6': '590', 'LED7': '670',
#'LED8': '760', 'LED9': '880', 'LED10': '940', 'LED11': '1050', 'LED12': '1550','LED13': '340', 'LED14': '365'
LED_TYPE
:
[
'
LED13'
]
LED_TIME
:
[
1.
]
# if open shutter effect, led time must be >=2.6s
shutter_effect
:
NO
# 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
# sky_background:
# exptime: 150. # [s]
# shutter_effect: YES
# flat_fielding: YES
# enable_straylight_model: YES
# flat_level: 20000
# flat_level_filt: g
# Apply PRNU to accumulated photons
PRNU_effect
:
{}
# Accumulate photons caused by cosmic rays
cosmic_rays
:
{}
# Add Poission noise and dark current
poisson_and_dark
:
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
...
\ No newline at end of file
config/obs_config_SCI_WIDE_phot.yaml
0 → 100644
View file @
edd720e6
---
###############################################
#
# 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]
#run_chips: [1,2,3,4,5,10,21,26,27,28,29,30]
run_chips
:
[
8
]
# 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
...
profile_C6.sh
View file @
edd720e6
...
...
@@ -2,17 +2,21 @@
date
python
-m
cProfile
-o
C6_profiler_test.pstats /share/home/fangyuedong/csst-simulation/run_sim.py
\
--config_file
config_fgs.yaml
\
--catalog
FGS_Catalog
\
-c
/share/home/fangyuedong/csst-simulation/config
python
-m
cProfile
-o
C6_profiler_test.pstats /share/home/fangyuedong/new_sim/csst-simulation/run_sim.py
\
--config_file
config_C6.yaml
\
--catalog
C6_Catalog
\
-c
/share/home/fangyuedong/new_sim/csst-simulation/config
# --config_file config_test_new_sim.yaml \
# --catalog New_sim_Test \
# -c /share/home/fangyuedong/new_sim/csst-simulation/config
# --config_file config_50sqdeg.yaml \
# --catalog C6_50sqdeg \
# -c /share/home/fangyuedong/csst-simulation/config
# --config_file config_
C6
.yaml \
# --catalog
C6
_Catalog \
# -c /share/home/fangyuedong/
new_sim/
csst-simulation/config
# --config_file config_
fgs
.yaml \
# --catalog
FGS
_Catalog \
# -c /share/home/fangyuedong/csst-simulation/config
# --config_file test_fd_C6.yaml \
...
...
run_C6.pbs
View file @
edd720e6
...
...
@@ -8,16 +8,17 @@
cd
$PBS_O_WORKDIR
NP
=
96
hostfile
=
wcl-1,wcl-2
NP
=
384
hostfile
=
wcl-1,wcl-2
,wcl-3,wcl-4,wcl-5,wcl-6
date
mpirun
--oversubscribe
-H
$hostfile
-np
$NP
python /share/home/fangyuedong/csst-simulation/run_sim.py
\
--config_file
config_50sqdeg.yaml
\
--catalog
C6_50sqdeg
\
-c
/share/home/fangyuedong/csst-simulation/config
# --config_file config_C6.yaml \
# --catalog C6_Catalog \
# -c /share/home/fangyuedong/csst-simulation/config
mpirun
--oversubscribe
-H
$hostfile
-np
$NP
python /share/home/fangyuedong/new_sim/csst-simulation/run_sim.py
\
--config_file
config_C6.yaml
\
--catalog
C6_Catalog
\
-c
/share/home/fangyuedong/new_sim/csst-simulation/config
# --config_file config_50sqdeg.yaml \
# --catalog C6_50sqdeg \
# -c /share/home/fangyuedong/new_sim/csst-simulation/config
run_NGP.pbs
deleted
100755 → 0
View file @
959f0ebc
#!/bin/bash
#PBS -N SIMS
#PBS -l nodes=wcl-1:ppn=16+wcl-2:ppn=16+wcl-3:ppn=16+wcl-4:ppn=16+wcl-5:ppn=16+wcl-6:ppn=16
#PBS -u fangyuedong
###PBS -j oe
cd
$PBS_O_WORKDIR
NP
=
96
date
mpirun
-np
$NP
python3 /share/home/fangyuedong/fgs_sim/csst-simulation/run_sim.py
\
--config_file
config_NGP.yaml
\
--catalog
NGPCatalog
\
-c
/share/home/fangyuedong/fgs_sim/csst-simulation/config
run_fgs.pbs
deleted
100755 → 0
View file @
959f0ebc
#!/bin/bash
#PBS -N SIMS
#PBS -l nodes=wcl-1:ppn=12
###PBS -l nodes=wcl-1:ppn=24+wcl-2:ppn=24+wcl-3:ppn=24+wcl-4:ppn=24+wcl-5:ppn=24+wcl-6:ppn=24
#PBS -u fangyuedong
###PBS -j oe
cd
$PBS_O_WORKDIR
NP
=
40
date
mpirun
-np
$NP
python3 /share/home/fangyuedong/fgs_sim/csst-simulation/run_sim.py
\
--config_file
config_fgs.yaml
\
--catalog
FGS_Catalog
\
-c
/share/home/fangyuedong/fgs_sim/csst-simulation/config
run_sim.py
View file @
edd720e6
...
...
@@ -49,22 +49,28 @@ def run_sim():
if
args
.
work_dir
is
not
None
:
config
[
'work_dir'
]
=
args
.
work_dir
if
not
(
"data_dir"
in
config
):
config
[
"data_dir"
]
=
None
# Some default values
if
"bias_16channel"
not
in
config
[
"ins_effects"
]:
config
[
"ins_effects"
][
"bias_16channel"
]
=
False
if
"gain_16channel"
not
in
config
[
"ins_effects"
]:
config
[
"ins_effects"
][
"gain_16channel"
]
=
False
if
"mag_sat_margin"
not
in
config
[
"obs_setting"
]:
config
[
"obs_setting"
][
"mag_sat_margin"
]
=
-
2.5
if
"mag_lim_margin"
not
in
config
[
"obs_setting"
]:
config
[
"obs_setting"
][
"mag_lim_margin"
]
=
1.0
if
"project_cycle"
not
in
config
:
config
[
"project_cycle"
]
=
6
if
"run_counter"
not
in
config
:
config
[
"run_counter"
]
=
0
# Generate lists pointings based on the input pointing list (or default
# pointing RA, DEC) and "config["obs_setting"]["run_pointings"]".
# "config['obs_setting']['np_cal']"" is the number of CAL pointings which will be
# appended to the front.
# NOTE: the implementation of gerenating time_stamps is temporary.
pointing_list
=
generate_pointing_list
(
config
=
config
,
pointing_filename
=
config
[
'obs_setting'
][
'pointing_file'
],
data_dir
=
config
[
'obs_setting'
][
'pointing_dir'
])
pointing_dir
=
None
if
"pointing_dir"
in
config
[
'obs_setting'
]:
pointing_dir
=
config
[
'obs_setting'
][
"pointing_dir"
]
pointing_list
=
generate_pointing_list
(
config
=
config
,
pointing_filename
=
config
[
'obs_setting'
][
'pointing_file'
],
data_dir
=
pointing_dir
)
# Make the main output directories
run_dir
=
make_run_dirs
(
work_dir
=
config
[
'work_dir'
],
run_name
=
config
[
'run_name'
],
pointing_list
=
pointing_list
)
...
...
@@ -83,14 +89,17 @@ def run_sim():
config_out
.
write
(
"###############################################
\n
"
)
# Initialize the simulation
catalog_module
=
importlib
.
import_module
(
'Catalog.'
+
args
.
catalog
)
obs
=
Observation
(
config
=
config
,
Catalog
=
catalog_module
.
Catalog
,
work_dir
=
config
[
'work_dir'
],
data_dir
=
config
[
'data_dir'
])
if
args
.
catalog
is
not
None
:
catalog_module
=
importlib
.
import_module
(
'Catalog.'
+
args
.
catalog
)
obs
=
Observation
(
config
=
config
,
Catalog
=
catalog_module
.
Catalog
,
work_dir
=
config
[
'work_dir'
],
data_dir
=
config
[
'data_dir'
])
else
:
catalog_module
=
None
obs
=
Observation
(
config
=
config
,
Catalog
=
None
,
work_dir
=
config
[
'work_dir'
],
data_dir
=
config
[
'data_dir'
])
# Run simulation
obs
.
runExposure_MPI_PointingList
(
pointing_list
=
pointing_list
,
use_mpi
=
config
[
"run_option"
][
"use_mpi"
],
chips
=
config
[
"obs_setting"
][
"run_chips"
])
use_mpi
=
config
[
"run_option"
][
"use_mpi"
])
if
__name__
==
'__main__'
:
run_sim
()
setup.py
View file @
edd720e6
'''
Author: Zhang Xin zhangx@bao.ac.cn
Date: 2023-08-07 11:23:28
LastEditors: Zhang Xin zhangx@bao.ac.cn
LastEditTime: 2023-10-08 14:44:19
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_develop/csst-simulation/setup.py
Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
'''
from
setuptools
import
setup
,
find_packages
from
setuptools.extension
import
Extension
from
setuptools.config
import
read_configuration
from
distutils.command.build_ext
import
build_ext
from
Cython.Build
import
cythonize
import
numpy
class
CTypes
(
Extension
):
pass
class
build_ext
(
build_ext
):
def
build_extension
(
self
,
ext
):
self
.
_ctypes
=
isinstance
(
ext
,
CTypes
)
return
super
().
build_extension
(
ext
)
def
get_export_symbols
(
self
,
ext
):
if
self
.
_ctypes
:
return
ext
.
export_symbols
return
super
().
get_export_symbols
(
ext
)
def
get_ext_filename
(
self
,
ext_name
):
if
self
.
_ctypes
:
return
ext_name
+
'.so'
return
super
().
get_ext_filename
(
ext_name
)
extensions
=
[
Extension
(
"ObservationSim.MockObject.SpecDisperser.disperse_c.interp"
,
[
"ObservationSim/MockObject/SpecDisperser/disperse_c/interp.pyx"
],
include_dirs
=
[
numpy
.
get_include
()],
...
...
@@ -17,14 +44,21 @@ extensions = [
libraries
=
[
"m"
]),
]
df_module
=
[
CTypes
(
'ObservationSim.Instrument.Chip.libBF.libmoduleBF'
,
[
'ObservationSim/Instrument/Chip/libBF/diffusion_X1.c'
,
'ObservationSim/Instrument/Chip/libBF/nrutil.c'
],
include_dirs
=
[
'ObservationSim/Instrument/Chip/libBF/'
,
'/usr/include'
]
)]
cti_module
=
[
CTypes
(
'ObservationSim.Instrument.Chip.libCTI.libmoduleCTI'
,
[
'ObservationSim/Instrument/Chip/libCTI/src/add_CTI.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/nrutil.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/ran1.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/ran2.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/poidev.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/gammln.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/gasdev.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/sort.c'
,
'ObservationSim/Instrument/Chip/libCTI/src/creattraps.c'
],
include_dirs
=
[
'ObservationSim/Instrument/Chip/libCTI/src/'
,
'/usr/include'
]
)]
# setup(
# name = "slssim_disperse",
# ext_modules = cythonize(extensions),
# )
setup
(
name
=
'CSSTSim'
,
version
=
'2.1.0'
,
packages
=
find_packages
(),
...
...
@@ -43,19 +77,23 @@ setup(name='CSSTSim',
],
package_data
=
{
'ObservationSim.Astrometry.lib'
:
[
'libshao.so'
],
'ObservationSim.Instrument.Chip.libBF'
:
[
'libmoduleBF.so'
],
'ObservationSim.Instrument.Chip.libCTI'
:
[
'libmoduleCTI.so'
],
'ObservationSim.MockObject.data'
:
[
'*.dat'
],
'ObservationSim.MockObject.data.led'
:
[
'*.fits'
],
'ObservationSim.Instrument.data'
:
[
'*.txt'
,
'*.dat'
,
'*.json'
],
'ObservationSim.Instrument.data.field_distortion'
:
[
'*.pickle'
],
'ObservationSim.Instrument.data.ccd'
:
[
'*.txt'
],
'ObservationSim.Instrument.data.ccd'
:
[
'*.txt'
,
'*.json'
],
'ObservationSim.Instrument.data.filters'
:
[
'*.txt'
,
'*.list'
,
'*.dat'
],
'ObservationSim.Instrument.data.throughputs'
:
[
'*.txt'
,
'*.dat'
],
'ObservationSim.Instrument.data.sls_conf'
:
[
'*.conf'
,
'*.fits'
],
'ObservationSim.Instrument.data.flatCube'
:
[
'*.fits'
],
'Catalog.data'
:
[
'*.fits'
],
'Catalog.data'
:
[
'*.fits'
,
'*.so'
],
'ObservationSim.Config.Header'
:[
'*.header'
,
'*.lst'
],
'ObservationSim.Straylight.data'
:
[
'*.dat'
],
'ObservationSim.Straylight.data.sky'
:
[
'*.dat'
],
'ObservationSim.Straylight.lib'
:
[
'*'
],
},
ext_modules
=
cythonize
(
extensions
),
ext_modules
=
cythonize
(
extensions
)
+
df_module
+
cti_module
,
cmdclass
=
{
'build_ext'
:
build_ext
}
)
test_C6.sh
View file @
edd720e6
...
...
@@ -2,8 +2,18 @@
date
python3 /share/home/fangyuedong/sim_v2/csst-simulation/run_sim.py
\
--config_file
config_C6.yaml
\
--catalog
C6_Catalog
\
-c
/share/home/fangyuedong/sim_v2/csst-simulation/config
python3 /public/home/fangyuedong/project/csst-simulation/run_sim.py
\
--config_file
config_overall.yaml
\
-c
/public/home/fangyuedong/project/csst-simulation/config
\
--catalog
C6_50sqdeg
# python3 /share/home/fangyuedong/20231211/csst-simulation/run_sim.py \
# --config_file config_C6_dev.yaml \
# --catalog C6_Catalog \
# -c /share/home/fangyuedong/20231211/csst-simulation/config
# python3 /share/home/fangyuedong/20231211/csst-simulation/run_sim.py \
# --config_file config_ooc_c6.yaml \
# --catalog C6_Catalog \
# -c /share/home/fangyuedong/20231211/csst-simulation/config
test_fgs.sh
deleted
100755 → 0
View file @
959f0ebc
#!/bin/bash
date
python3 /share/home/fangyuedong/fgs_sim/csst-simulation/run_sim.py
\
--config_file
config_fgs.yaml
\
--catalog
FGS_Catalog
\
-c
/share/home/fangyuedong/fgs_sim/csst-simulation/config
\ No newline at end of file
tests/PSFInterpTest/PSFInterpModule_coverage.py
deleted
100644 → 0
View file @
959f0ebc
import
unittest
import
sys
,
os
,
math
from
itertools
import
islice
import
numpy
as
np
import
matplotlib.pyplot
as
plt
import
matplotlib
as
mpl
mpl
.
use
(
'Agg'
)
import
yaml
from
ObservationSim.Config
import
Config
from
ObservationSim.Config.Config
import
config_dir
from
ObservationSim.Instrument
import
Chip
from
ObservationSim.PSF.PSFInterp
import
PSFInterp
def
defineCCD
(
iccd
,
config_file
):
with
open
(
config_file
,
"r"
)
as
stream
:
try
:
config
=
yaml
.
safe_load
(
stream
)
#for key, value in config.items():
# print (key + " : " + str(value))
except
yaml
.
YAMLError
as
exc
:
print
(
exc
)
path_dict
=
config_dir
(
config
=
config
,
work_dir
=
config
[
'work_dir'
],
data_dir
=
config
[
'data_dir'
])
chip
=
Chip
(
chipID
=
iccd
,
config
=
config
)
#chip = Chip(chipID=iccd, ccdEffCurve_dir=path_dict["ccd_dir"], CRdata_dir=path_dict["CRdata_dir"], normalize_dir=path_dict["normalize_dir"], sls_dir=path_dict['sls_dir'], config=config)
return
chip
def
psfSecondMoments
(
psfMat
,
cenX
,
cenY
,
pixSize
=
1
):
apr
=
0.5
#arcsec, 0.5角秒内测量
fl
=
28.
#meters
pxs
=
2.5
#microns
apr
=
np
.
deg2rad
(
apr
/
3600.
)
*
fl
*
1e6
apr
=
apr
/
pxs
apr
=
np
.
int
(
np
.
ceil
(
apr
))
I
=
psfMat
ncol
=
I
.
shape
[
1
]
nrow
=
I
.
shape
[
0
]
w
=
0.0
w11
=
0.0
w12
=
0.0
w22
=
0.0
for
icol
in
range
(
ncol
):
for
jrow
in
range
(
nrow
):
x
=
icol
*
pixSize
-
cenX
y
=
jrow
*
pixSize
-
cenY
rr
=
np
.
sqrt
(
x
*
x
+
y
*
y
)
wgt
=
0.0
if
rr
<=
apr
:
wgt
=
1.0
w
+=
I
[
jrow
,
icol
]
*
wgt
w11
+=
x
*
x
*
I
[
jrow
,
icol
]
*
wgt
w12
+=
x
*
y
*
I
[
jrow
,
icol
]
*
wgt
w22
+=
y
*
y
*
I
[
jrow
,
icol
]
*
wgt
w11
/=
w
w12
/=
w
w22
/=
w
sz
=
w11
+
w22
e1
=
(
w11
-
w22
)
/
sz
e2
=
2.0
*
w12
/
sz
return
sz
,
e1
,
e2
def
test_psfEll
(
iccd
,
iwave
,
psfMat
):
psfMat_iwave
=
psfMat
.
psfMat
[
iwave
-
1
,
:,:,:]
npsf
=
np
.
shape
(
psfMat_iwave
)[
0
]
imx
=
np
.
zeros
(
npsf
)
imy
=
np
.
zeros
(
npsf
)
psf_e1
=
np
.
zeros
(
npsf
)
psf_e2
=
np
.
zeros
(
npsf
)
psf_sz
=
np
.
zeros
(
npsf
)
for
ipsf
in
range
(
1
,
npsf
+
1
):
print
(
'ipsf-{:}'
.
format
(
ipsf
),
end
=
'
\r
'
)
imx
[
ipsf
-
1
]
=
psfMat
.
cen_col
[
iwave
-
1
,
ipsf
-
1
]
imy
[
ipsf
-
1
]
=
psfMat
.
cen_row
[
iwave
-
1
,
ipsf
-
1
]
psfMat_iwave_ipsf
=
psfMat_iwave
[
ipsf
-
1
,
:,
:]
cenX
=
256
cenY
=
256
sz
,
e1
,
e2
=
psfSecondMoments
(
psfMat_iwave_ipsf
,
cenX
,
cenY
,
pixSize
=
1
)
psf_e1
[
ipsf
-
1
]
=
e1
psf_e2
[
ipsf
-
1
]
=
e2
psf_sz
[
ipsf
-
1
]
=
sz
#print('ell======', ipsf, np.sqrt(e1**2 + e2**2))
#######
arr
=
[
imx
,
imy
,
psf_e1
,
psf_e2
,
psf_sz
]
np
.
save
(
'data/psfEll{:}_{:}_{:}'
.
format
(
int
(
np
.
sqrt
(
npsf
)),
iccd
,
iwave
),
arr
)
def
test_psfEllPlot
(
OVERPLOT
=
False
):
#if ThisTask == 0:
if
True
:
prefix
=
'psfEll30'
iccd
=
1
iwave
=
1
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
print
(
np
.
shape
(
imx
))
npsf
=
np
.
shape
(
imx
)[
0
]
#######
plt
.
cla
()
plt
.
close
(
"all"
)
fig
=
plt
.
figure
(
figsize
=
(
12
,
12
))
plt
.
subplots_adjust
(
wspace
=
0.1
,
hspace
=
0.1
)
ax
=
plt
.
subplot
(
1
,
1
,
1
)
for
ipsf
in
range
(
npsf
):
plt
.
plot
(
imx
[
ipsf
],
imy
[
ipsf
],
'r.'
)
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'r'
,
lw
=
2
)
###########
ang
=
0.
ell
=
0.05
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
898
]
-
lcos
,
imx
[
898
]
+
lcos
],[
imy
[
898
]
+
5.
-
lsin
,
imy
[
898
]
+
5.
+
lsin
],
'k'
,
lw
=
2
)
plt
.
annotate
(
'{:}'
.
format
(
ell
/
15
),
(
imx
[
898
]
-
2.
,
imy
[
898
]
+
6.
),
xycoords
=
'data'
,
fontsize
=
10
)
plt
.
xlabel
(
'CCD X (mm)'
)
plt
.
ylabel
(
'CCD Y (mm)'
)
if
OVERPLOT
==
True
:
prefix
=
'psfEll20'
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
npsf
=
np
.
shape
(
imx
)[
0
]
for
ipsf
in
range
(
npsf
):
plt
.
plot
(
imx
[
ipsf
],
imy
[
ipsf
],
'b.'
)
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'b'
,
lw
=
2
)
plt
.
gca
().
set_aspect
(
1
)
if
OVERPLOT
==
True
:
prefix
=
'psfEllOP'
plt
.
savefig
(
'figs/'
+
prefix
+
'_iccd{:}.pdf'
.
format
(
iccd
))
def
test_psfIDW
(
iccd
,
iwave
,
psfMatA
,
chip
,
psfMatB
):
bandpass
=
iwave
-
1
class
pos_img
():
def
__init__
(
self
,
x
,
y
):
self
.
x
=
x
*
1e3
/
10.
#in unit of pixels
self
.
y
=
y
*
1e3
/
10.
psfMat_iwave
=
psfMatA
.
psfMat
[
iwave
-
1
,
:,:,:]
npsf
=
np
.
shape
(
psfMat_iwave
)[
0
]
psf_e1
=
np
.
zeros
(
npsf
)
psf_e2
=
np
.
zeros
(
npsf
)
psf_sz
=
np
.
zeros
(
npsf
)
for
ipsf
in
range
(
1
,
npsf
+
1
):
print
(
'ipsf:'
,
ipsf
,
end
=
'
\r
'
,
flush
=
True
)
tpos_img
=
pos_img
(
psfMatA
.
cen_col
[
iwave
-
1
,
ipsf
-
1
],
psfMatA
.
cen_row
[
iwave
-
1
,
ipsf
-
1
])
psfIDW
=
psfMatB
.
get_PSF
(
chip
,
tpos_img
,
bandpass
,
galsimGSObject
=
False
,
findNeighMode
=
'treeFind'
)
np
.
save
(
'figs/psfIDW/psfIDW_{:}_{:}_{:}'
.
format
(
iccd
,
iwave
,
ipsf
),
psfIDW
)
cenX
=
256
cenY
=
256
sz
,
e1
,
e2
=
psfSecondMoments
(
psfIDW
,
cenX
,
cenY
,
pixSize
=
1
)
psf_e1
[
ipsf
-
1
]
=
e1
psf_e2
[
ipsf
-
1
]
=
e2
psf_sz
[
ipsf
-
1
]
=
sz
arr
=
[
psf_e1
,
psf_e2
,
psf_sz
]
np
.
save
(
'data/psfEll20IDW_{:}_{:}'
.
format
(
iccd
,
iwave
),
arr
)
def
test_psfResidualPlot
(
iccd
,
iwave
,
ipsf
,
psfMatA
):
psfMat_iwave
=
psfMatA
.
psfMat
[
iwave
-
1
,
:,:,:]
psfMatORG
=
psfMat_iwave
[
ipsf
-
1
,
:,
:]
psfMatIDW
=
np
.
load
(
'figs/psfIDW/psfIDW_{:}_{:}_{:}.npy'
.
format
(
iccd
,
iwave
,
ipsf
))
npix
=
psfMatORG
.
shape
[
0
]
pixCutEdge
=
int
(
npix
/
2
-
15
)
img0
=
psfMatORG
[
pixCutEdge
:
npix
-
pixCutEdge
,
pixCutEdge
:
npix
-
pixCutEdge
]
img1
=
psfMatIDW
[
pixCutEdge
:
npix
-
pixCutEdge
,
pixCutEdge
:
npix
-
pixCutEdge
]
imgX
=
(
img1
-
img0
)
/
img0
img0
=
np
.
log10
(
img0
)
img1
=
np
.
log10
(
img1
)
imgX
=
np
.
log10
(
np
.
abs
(
imgX
))
fig
=
plt
.
figure
(
figsize
=
(
18
,
4
))
ax
=
plt
.
subplot
(
1
,
3
,
1
)
plt
.
imshow
(
img0
,
origin
=
'lower'
,
vmin
=-
7
,
vmax
=-
1.3
)
plt
.
plot
([
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],[
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],
'w--'
)
plt
.
plot
([
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],[
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],
'w--'
)
plt
.
annotate
(
'ORG'
,
[
0
,(
npix
/
2
-
pixCutEdge
)
*
2
-
5
],
c
=
'w'
,
size
=
15
)
cticks
=
[
-
7
,
-
6
,
-
5
,
-
4
,
-
3
,
-
2
,
-
1
]
cbar
=
plt
.
colorbar
(
ticks
=
cticks
)
cbar
.
ax
.
set_yticklabels
([
'$10^{-7}$'
,
'$10^{-6}$'
,
'$10^{-5}$'
,
'$10^{-4}$'
,
'$10^{-3}$'
,
'$10^{-2}$'
,
'$10^{-1}$'
])
print
(
img0
.
min
(),
img0
.
max
())
ax
=
plt
.
subplot
(
1
,
3
,
2
)
plt
.
imshow
(
img1
,
origin
=
'lower'
,
vmin
=-
7
,
vmax
=-
1.3
)
plt
.
plot
([
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],[
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],
'w--'
)
plt
.
plot
([
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],[
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],
'w--'
)
plt
.
annotate
(
'IDW'
,
[
0
,(
npix
/
2
-
pixCutEdge
)
*
2
-
5
],
c
=
'w'
,
size
=
15
)
cticks
=
[
-
7
,
-
6
,
-
5
,
-
4
,
-
3
,
-
2
,
-
1
]
cbar
=
plt
.
colorbar
(
ticks
=
cticks
)
cbar
.
ax
.
set_yticklabels
([
'$10^{-7}$'
,
'$10^{-6}$'
,
'$10^{-5}$'
,
'$10^{-4}$'
,
'$10^{-3}$'
,
'$10^{-2}$'
,
'$10^{-1}$'
])
print
(
img1
.
min
(),
img1
.
max
())
ax
=
plt
.
subplot
(
1
,
3
,
3
)
plt
.
imshow
(
imgX
,
origin
=
'lower'
,
vmin
=-
3
,
vmax
=
np
.
log10
(
3e-1
))
plt
.
plot
([
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],[
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],
'w--'
)
plt
.
plot
([
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],[
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],
'w--'
)
#plt.annotate('(IDW-ORG)/ORG', [0,(npix/2-pixCutEdge)*2-5], c='w', size=15)
cticks
=
[
-
5
,
-
4
,
-
3
,
-
2
,
-
1
]
cbar
=
plt
.
colorbar
(
ticks
=
cticks
)
cbar
.
ax
.
set_yticklabels
([
'$10^{-5}$'
,
'$10^{-4}$'
,
'$10^{-3}$'
,
'$10^{-2}$'
,
'$10^{-1}$'
])
print
(
np
.
max
((
psfMatORG
-
psfMatIDW
)))
plt
.
savefig
(
'figs/psfResidual_iccd{:}.pdf'
.
format
(
iccd
))
def
test_psfEllIDWPlot
(
OVERPLOT
=
False
):
#if ThisTask == 0:
if
True
:
prefix
=
'psfEll20'
iccd
=
1
iwave
=
1
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
print
(
np
.
shape
(
imx
))
npsf
=
np
.
shape
(
imx
)[
0
]
#######
plt
.
cla
()
plt
.
close
(
"all"
)
fig
=
plt
.
figure
(
figsize
=
(
12
,
12
))
plt
.
subplots_adjust
(
wspace
=
0.1
,
hspace
=
0.1
)
ax
=
plt
.
subplot
(
1
,
1
,
1
)
for
ipsf
in
range
(
npsf
):
plt
.
plot
(
imx
[
ipsf
],
imy
[
ipsf
],
'b.'
)
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'b'
,
lw
=
2
)
###########
ang
=
0.
ell
=
0.05
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
#plt.plot([imx[898]-lcos, imx[898]+lcos],[imy[898]+5.-lsin, imy[898]+5.+lsin],'k', lw=2)
#plt.annotate('{:}'.format(ell/15), (imx[898]-2., imy[898]+6.), xycoords='data', fontsize=10)
plt
.
xlabel
(
'CCD X (mm)'
)
plt
.
ylabel
(
'CCD Y (mm)'
)
if
OVERPLOT
==
True
:
prefix
=
'psfEll20IDW'
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
#imx= data[0]
#imy= data[1]
psf_e1
=
data
[
0
]
psf_e2
=
data
[
1
]
npsf
=
np
.
shape
(
imx
)[
0
]
for
ipsf
in
range
(
npsf
):
#plt.plot(imx[ipsf], imy[ipsf], 'r.')
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'r'
,
lw
=
1
)
plt
.
gca
().
set_aspect
(
1
)
if
OVERPLOT
==
True
:
prefix
=
'psfEllOPIDW'
plt
.
savefig
(
'figs/'
+
prefix
+
'_iccd{:}.pdf'
.
format
(
iccd
))
def
test_psfdEllabsPlot
(
iccd
):
#if ThisTask == 0:
if
True
:
prefix
=
'psfEll20'
#iccd = 1
#iwave= 1
data
=
np
.
load
(
'data/'
+
prefix
+
'_{:}_1.npy'
.
format
(
iccd
))
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
psf_sz
=
data
[
4
]
print
(
np
.
shape
(
imx
))
npsf
=
np
.
shape
(
imx
)[
0
]
ellX
=
np
.
sqrt
(
psf_e1
**
2
+
psf_e2
**
2
)
angX
=
np
.
arctan2
(
psf_e2
,
psf_e1
)
/
2
angX
=
np
.
rad2deg
(
angX
)
szX
=
psf_sz
##############################
prefix
=
'psfEll20IDW'
data
=
np
.
load
(
'data/'
+
prefix
+
'_{:}_1.npy'
.
format
(
iccd
))
#imx= data[0]
#imy= data[1]
psf_e1
=
data
[
0
]
psf_e2
=
data
[
1
]
psf_sz
=
data
[
2
]
ellY
=
np
.
sqrt
(
psf_e1
**
2
+
psf_e2
**
2
)
angY
=
np
.
arctan2
(
psf_e2
,
psf_e1
)
/
2
angY
=
np
.
rad2deg
(
angY
)
szY
=
psf_sz
##############################
fig
=
plt
.
figure
(
figsize
=
(
6
,
5
))
grid
=
plt
.
GridSpec
(
3
,
1
,
left
=
0.15
,
right
=
0.95
,
wspace
=
None
,
hspace
=
0.02
)
#plt.subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=0.02)
ax
=
plt
.
subplot
(
grid
[
0
:
2
,
0
])
plt
.
plot
([
0.01
,
0.1
],[
0.01
,
0.1
],
'k--'
,
lw
=
1.
)
plt
.
scatter
(
ellX
,
ellY
,
color
=
'b'
,
alpha
=
1.
,
s
=
3.
,
edgecolors
=
'None'
)
#plt.xlim([0.015, 0.085])
#plt.ylim([0.015, 0.085])
plt
.
ylabel
(
'$\epsilon_{
\\
rm IDW}$'
)
plt
.
gca
().
axes
.
get_xaxis
().
set_visible
(
False
)
ax
=
plt
.
subplot
(
grid
[
2
,
0
])
plt
.
plot
([
0.015
,
0.085
],[
0.
,
0.
],
'k--'
,
lw
=
1.
)
plt
.
scatter
(
ellX
,
(
ellY
-
ellX
),
color
=
'b'
,
s
=
3.
,
edgecolors
=
'None'
)
#plt.xlim([0.015, 0.085])
#plt.ylim([-0.0018, 0.0018])
plt
.
xlabel
(
'$\epsilon_{
\\
rm ORG}$'
)
plt
.
ylabel
(
'$\Delta$'
)
plt
.
savefig
(
'figs/psfEllOPIDWPDF_{:}.pdf'
.
format
(
iccd
))
fig
=
plt
.
figure
(
figsize
=
(
6
,
6
))
plt
.
hist
((
szY
-
szX
)
/
szX
,
bins
=
20
,
color
=
'r'
,
alpha
=
0.5
)
plt
.
xlabel
(
'$(R_{
\\
rm IDW}-R_{
\\
rm ORG})/R_{
\\
rm ORG}$'
)
plt
.
ylabel
(
'PDF'
)
plt
.
savefig
(
'figs/psfEllOPIDWPDF_dsz_{:}.pdf'
.
format
(
iccd
))
class
PSFInterpModule_coverage
(
unittest
.
TestCase
):
def
test_psfEll_
(
self
):
iccd
=
1
iwave
=
1
config_file
=
"/public/home/weichengliang/CSST_git/newVersion/CSST/config/config_C3.yaml"
chip
=
defineCCD
(
iccd
,
config_file
)
print
(
chip
.
chipID
)
print
(
chip
.
cen_pix_x
,
chip
.
cen_pix_y
)
ipath
=
'/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/psfCubeTest'
psfMatA
=
PSFInterp
(
chip
,
npsf
=
400
,
PSF_data_file
=
ipath
,
PSF_data_prefix
=
"S20x20_"
)
psfMatB
=
PSFInterp
(
chip
,
npsf
=
900
,
PSF_data_file
=
ipath
,
PSF_data_prefix
=
"S30x30_"
)
test_psfEll
(
iccd
,
iwave
,
psfMatA
)
test_psfEll
(
iccd
,
iwave
,
psfMatB
)
test_psfEllPlot
(
OVERPLOT
=
True
)
test_psfIDW
(
iccd
,
iwave
,
psfMatA
,
chip
,
psfMatB
)
ipsf
=
1
test_psfResidualPlot
(
iccd
,
iwave
,
ipsf
,
psfMatA
)
test_psfEllIDWPlot
(
OVERPLOT
=
True
)
test_psfdEllabsPlot
(
iccd
)
if
__name__
==
'__main__'
:
unittest
.
main
()
print
(
'#####haha#####'
)
tests/PSFInterpTest/loadPSFSet.py
deleted
100644 → 0
View file @
959f0ebc
import
unittest
import
sys
,
os
,
math
from
itertools
import
islice
import
numpy
as
np
import
yaml
from
ObservationSim.Config
import
Config
from
ObservationSim.Config.Config
import
config_dir
from
ObservationSim.Instrument
import
Chip
from
ObservationSim.PSF.PSFInterp
import
PSFInterp
def
defineCCD
(
iccd
,
config_file
):
with
open
(
config_file
,
"r"
)
as
stream
:
try
:
config
=
yaml
.
safe_load
(
stream
)
#for key, value in config.items():
# print (key + " : " + str(value))
except
yaml
.
YAMLError
as
exc
:
print
(
exc
)
path_dict
=
config_dir
(
config
=
config
,
work_dir
=
config
[
'work_dir'
],
data_dir
=
config
[
'data_dir'
])
chip
=
Chip
(
chipID
=
iccd
,
config
=
config
)
#chip = Chip(chipID=iccd, ccdEffCurve_dir=path_dict["ccd_dir"], CRdata_dir=path_dict["CRdata_dir"], normalize_dir=path_dict["normalize_dir"], sls_dir=path_dict['sls_dir'], config=config)
return
chip
def
loadPSFSet
(
iccd
):
config_file
=
"/public/home/weichengliang/CSST_git/newVersion/CSST/config/config_C3.yaml"
chip
=
defineCCD
(
iccd
,
config_file
)
print
(
chip
.
chipID
)
print
(
chip
.
cen_pix_x
,
chip
.
cen_pix_y
)
ipath
=
'/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/psfCube'
psfMat
=
PSFInterp
(
chip
,
npsf
=
900
,
PSF_data_file
=
ipath
,
PSF_data_prefix
=
""
)
psfSet
=
psfMat
.
_loadPSF
(
iccd
,
ipath
,
PSF_data_prefix
=
""
)
twave
=
0
#[0...3]
tpsf
=
0
#[0...899]
field_x
=
psfSet
[
twave
][
tpsf
][
'field_x'
]
field_y
=
psfSet
[
twave
][
tpsf
][
'field_y'
]
image_x
=
psfSet
[
twave
][
tpsf
][
'image_x'
]
image_y
=
psfSet
[
twave
][
tpsf
][
'image_y'
]
centroid_x
=
psfSet
[
twave
][
tpsf
][
'centroid_x'
]
centroid_y
=
psfSet
[
twave
][
tpsf
][
'centroid_y'
]
print
(
"pos_info:"
,
field_x
,
field_y
,
image_x
,
image_y
,
centroid_x
,
centroid_y
)
return
psfSet
class
PSFInterpModule_coverage
(
unittest
.
TestCase
):
def
test_psfEll_
(
self
):
iccd
=
1
#[1...30]
psfSet
=
loadPSFSet
(
iccd
)
if
__name__
==
'__main__'
:
unittest
.
main
()
print
(
'#####haha#####'
)
tests/PSFMatsEll_coverage.py
deleted
100644 → 0
View file @
959f0ebc
import
unittest
import
sys
,
os
,
math
from
itertools
import
islice
#import mpi4py.MPI as MPI
import
numpy
as
np
import
matplotlib.pyplot
as
plt
import
matplotlib
as
mpl
mpl
.
use
(
'Agg'
)
import
scipy.io
from
scipy
import
ndimage
#sys.path.append("/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_v4_20210326")
sys
.
path
.
append
(
"../"
)
from
ObservationSim.PSF.PSFInterp
import
PSFConfig
as
myConfig
#import PSFUtil as myUtil
NPSF
=
400
##############################
###计算PSF椭率###
def
psfSecondMoments
(
psfMat
,
cenX
,
cenY
,
pixSize
=
1
):
apr
=
0.5
#arcsec, 0.5角秒内测量
fl
=
28.
#meters
pxs
=
2.5
#microns
apr
=
np
.
deg2rad
(
apr
/
3600.
)
*
fl
*
1e6
apr
=
apr
/
pxs
apr
=
np
.
int
(
np
.
ceil
(
apr
))
I
=
psfMat
ncol
=
I
.
shape
[
1
]
nrow
=
I
.
shape
[
0
]
w
=
0.0
w11
=
0.0
w12
=
0.0
w22
=
0.0
for
icol
in
range
(
ncol
):
for
jrow
in
range
(
nrow
):
x
=
icol
*
pixSize
-
cenX
y
=
jrow
*
pixSize
-
cenY
rr
=
np
.
sqrt
(
x
*
x
+
y
*
y
)
wgt
=
0.0
if
rr
<=
apr
:
wgt
=
1.0
w
+=
I
[
jrow
,
icol
]
*
wgt
w11
+=
x
*
x
*
I
[
jrow
,
icol
]
*
wgt
w12
+=
x
*
y
*
I
[
jrow
,
icol
]
*
wgt
w22
+=
y
*
y
*
I
[
jrow
,
icol
]
*
wgt
w11
/=
w
w12
/=
w
w22
/=
w
sz
=
w11
+
w22
e1
=
(
w11
-
w22
)
/
sz
e2
=
2.0
*
w12
/
sz
return
sz
,
e1
,
e2
##############################
##############################
'''
def assignTasks(npsf, NTasks, ThisTask):
npsfPerTasks = int(npsf/NTasks)
iStart= 0 + npsfPerTasks*ThisTask
iEnd = npsfPerTasks + npsfPerTasks*ThisTask
if ThisTask == NTasks:
iEnd = npsf
return iStart, iEnd
'''
#def test_psfEll(iccd, iwave, psfPath, ThisTask, NTasks):
def
test_psfEll
(
iccd
,
iwave
,
psfPath
):
nccd
=
30
npsf
=
NPSF
#iStart, iEnd = assignTasks(npsf, NTasks, ThisTask)
imx
=
np
.
zeros
(
npsf
)
imy
=
np
.
zeros
(
npsf
)
psf_e1
=
np
.
zeros
(
npsf
)
psf_e2
=
np
.
zeros
(
npsf
)
psf_sz
=
np
.
zeros
(
npsf
)
#for ipsf in range(iStart+1, iEnd+1):
for
ipsf
in
range
(
1
,
401
):
if
ipsf
!=
1
:
continue
print
(
'ipsf-{:}'
.
format
(
ipsf
),
end
=
'
\r
'
)
psfInfo
=
myConfig
.
LoadPSF
(
iccd
,
iwave
,
ipsf
,
psfPath
,
InputMaxPixelPos
=
True
,
PSFCentroidWgt
=
True
,
VPSF
=
False
)
imx
[
ipsf
-
1
]
=
psfInfo
[
'image_x'
]
+
psfInfo
[
'centroid_x'
]
imy
[
ipsf
-
1
]
=
psfInfo
[
'image_y'
]
+
psfInfo
[
'centroid_y'
]
psfMat
=
psfInfo
[
'psfMat'
]
cenX
=
256
cenY
=
256
sz
,
e1
,
e2
=
psfSecondMoments
(
psfMat
,
cenX
,
cenY
,
pixSize
=
1
)
psf_e1
[
ipsf
-
1
]
=
e1
psf_e2
[
ipsf
-
1
]
=
e2
psf_sz
[
ipsf
-
1
]
=
sz
print
(
'test:'
,
sz
,
e1
,
e2
)
#######
#comm.barrier()
#imx = comm.allreduce(imx, op=MPI.SUM)
#imy = comm.allreduce(imy, op=MPI.SUM)
#psf_e1 = comm.allreduce(psf_e1, op=MPI.SUM)
#psf_e2 = comm.allreduce(psf_e2, op=MPI.SUM)
#psf_sz = comm.allreduce(psf_sz, op=MPI.SUM)
#comm.barrier()
#if ThisTask == 0:
# arr = [imx, imy, psf_e1, psf_e2, psf_sz]
# np.save('/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_v4_20210326/test4report/data/psfEll20_{:}_{:}'.format(iccd, iwave), arr)
def
test_psfEllPlot
(
OVERPLOT
=
False
):
#if ThisTask == 0:
if
True
:
prefix
=
'psfEll30'
iccd
=
1
iwave
=
1
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
print
(
np
.
shape
(
imx
))
npsf
=
np
.
shape
(
imx
)[
0
]
plt
.
cla
()
plt
.
close
(
"all"
)
fig
=
plt
.
figure
(
figsize
=
(
12
,
12
))
plt
.
plot
(
imx
,
imy
,
'r.'
)
plt
.
savefig
(
'figs/psfPos.pdf'
)
#######
fig
=
plt
.
figure
(
figsize
=
(
12
,
12
))
plt
.
subplots_adjust
(
wspace
=
0.1
,
hspace
=
0.1
)
ax
=
plt
.
subplot
(
1
,
1
,
1
)
for
ipsf
in
range
(
npsf
):
plt
.
plot
(
imx
[
ipsf
],
imy
[
ipsf
],
'r.'
)
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'r'
,
lw
=
2
)
###########
ang
=
0.
ell
=
0.05
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
898
]
-
lcos
,
imx
[
898
]
+
lcos
],[
imy
[
898
]
+
5.
-
lsin
,
imy
[
898
]
+
5.
+
lsin
],
'k'
,
lw
=
2
)
plt
.
annotate
(
'{:}'
.
format
(
ell
/
15
),
(
imx
[
898
]
-
2.
,
imy
[
898
]
+
6.
),
xycoords
=
'data'
,
fontsize
=
10
)
plt
.
xlabel
(
'CCD X (mm)'
)
plt
.
ylabel
(
'CCD Y (mm)'
)
if
OVERPLOT
==
True
:
prefix
=
'psfEll20'
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
npsf
=
np
.
shape
(
imx
)[
0
]
for
ipsf
in
range
(
npsf
):
plt
.
plot
(
imx
[
ipsf
],
imy
[
ipsf
],
'b.'
)
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'b'
,
lw
=
2
)
plt
.
gca
().
set_aspect
(
1
)
if
OVERPLOT
==
True
:
prefix
=
'psfEllOP'
plt
.
savefig
(
'figs/'
+
prefix
+
'_iccd{:}.pdf'
.
format
(
iccd
))
class
PSFMatsEll_coverage
(
unittest
.
TestCase
):
def
test_psfEll_
(
self
):
#comm = MPI.COMM_WORLD
#ThisTask = comm.Get_rank()
#NTasks = comm.Get_size()
print
(
'#####haha#####'
)
iccd
=
1
iwave
=
1
psfPath
=
'/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/CSSOS_psf_20210326/CSST_psf_ciomp_20x20field'
#test_psfEll(iccd, iwave, psfPath, ThisTask, NTasks)
test_psfEll
(
iccd
,
iwave
,
psfPath
)
test_psfEllPlot
(
OVERPLOT
=
True
)
##############################
##############################
##############################
if
__name__
==
'__main__'
:
unittest
.
main
()
tests/PSFMatsIDW_coverage.py
deleted
100644 → 0
View file @
959f0ebc
import
unittest
import
sys
,
os
,
math
from
itertools
import
islice
import
mpi4py.MPI
as
MPI
import
numpy
as
np
import
matplotlib.pyplot
as
plt
import
matplotlib
as
mpl
mpl
.
use
(
'Agg'
)
import
scipy.io
from
scipy
import
ndimage
#sys.path.append("/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_v4_20210326")
# sys.path.append("../")
from
ObservationSim.PSF.PSFInterp
import
PSFConfig
as
myConfig
from
ObservationSim.PSF.PSFInterp
import
PSFUtil
as
myUtil
NPSF
=
400
##############################
###计算PSF椭率###
def
psfSecondMoments
(
psfMat
,
cenX
,
cenY
,
pixSize
=
1
):
apr
=
0.5
#arcsec, 0.5角秒内测量
fl
=
28.
#meters
pxs
=
2.5
#microns
apr
=
np
.
deg2rad
(
apr
/
3600.
)
*
fl
*
1e6
apr
=
apr
/
pxs
apr
=
np
.
int
(
np
.
ceil
(
apr
))
I
=
psfMat
ncol
=
I
.
shape
[
1
]
nrow
=
I
.
shape
[
0
]
w
=
0.0
w11
=
0.0
w12
=
0.0
w22
=
0.0
for
icol
in
range
(
ncol
):
for
jrow
in
range
(
nrow
):
x
=
icol
*
pixSize
-
cenX
y
=
jrow
*
pixSize
-
cenY
rr
=
np
.
sqrt
(
x
*
x
+
y
*
y
)
wgt
=
0.0
if
rr
<=
apr
:
wgt
=
1.0
w
+=
I
[
jrow
,
icol
]
*
wgt
w11
+=
x
*
x
*
I
[
jrow
,
icol
]
*
wgt
w12
+=
x
*
y
*
I
[
jrow
,
icol
]
*
wgt
w22
+=
y
*
y
*
I
[
jrow
,
icol
]
*
wgt
w11
/=
w
w12
/=
w
w22
/=
w
sz
=
w11
+
w22
e1
=
(
w11
-
w22
)
/
sz
e2
=
2.0
*
w12
/
sz
return
sz
,
e1
,
e2
##############################
##############################
'''
def assignTasks(npsf, NTasks, ThisTask):
npsfPerTasks = int(npsf/NTasks)
iStart= 0 + npsfPerTasks*ThisTask
iEnd = npsfPerTasks + npsfPerTasks*ThisTask
if ThisTask == NTasks:
iEnd = npsf
return iStart, iEnd
'''
#def test_psfIDW(iccd, iwave, psfPath, ThisTask, NTasks):
def
test_psfIDW
(
iccd
,
iwave
,
psfPath
):
nccd
=
30
npsfA
=
900
npsfB
=
400
#iStart, iEnd = assignTasks(400, NTasks, ThisTask)
psfPathA
=
psfPath
+
'_30x30field'
psfPathB
=
psfPath
+
'_20x20field'
imxA
=
np
.
zeros
(
npsfA
)
imyA
=
np
.
zeros
(
npsfA
)
psfA
=
np
.
zeros
([
npsfA
,
512
,
512
])
imxB
=
np
.
zeros
(
npsfB
)
imyB
=
np
.
zeros
(
npsfB
)
psfB
=
np
.
zeros
([
npsfB
,
512
,
512
])
#for ipsf in range(iStart+1, iEnd+1):
for
ipsf
in
range
(
1
,
npsfA
+
1
):
print
(
'ipsfA:'
,
ipsf
,
end
=
'
\r
'
,
flush
=
True
)
psfInfo
=
myConfig
.
LoadPSF
(
iccd
,
iwave
,
ipsf
,
psfPathA
,
InputMaxPixelPos
=
True
,
PSFCentroidWgt
=
True
,
VPSF
=
False
)
imxA
[
ipsf
-
1
]
=
psfInfo
[
'image_x'
]
+
psfInfo
[
'centroid_x'
]
imyA
[
ipsf
-
1
]
=
psfInfo
[
'image_y'
]
+
psfInfo
[
'centroid_y'
]
psfA
[
ipsf
-
1
,
:,
:]
=
psfInfo
[
'psfMat'
]
for
ipsf
in
range
(
1
,
npsfB
+
1
):
print
(
'ipsfB:'
,
ipsf
,
end
=
'
\r
'
,
flush
=
True
)
psfInfo
=
myConfig
.
LoadPSF
(
iccd
,
iwave
,
ipsf
,
psfPathB
,
InputMaxPixelPos
=
True
,
PSFCentroidWgt
=
True
,
VPSF
=
False
)
imxB
[
ipsf
-
1
]
=
psfInfo
[
'image_x'
]
+
psfInfo
[
'centroid_x'
]
imyB
[
ipsf
-
1
]
=
psfInfo
[
'image_y'
]
+
psfInfo
[
'centroid_y'
]
psfB
[
ipsf
-
1
,
:,
:]
=
psfInfo
[
'psfMat'
]
#myConfig.psfMaker_IDW(px, py, PSFMat, cen_col, cen_row, IDWindex=2, OnlyNeighbors=True, hoc=None, hoclist=None, PSFCentroidWgt=False)
for
ipsf
in
range
(
npsfB
):
print
(
'ipsf:'
,
ipsf
,
end
=
'
\r
'
,
flush
=
True
)
px
=
imxB
[
ipsf
]
py
=
imyB
[
ipsf
]
cen_col
=
imxA
cen_row
=
imyA
PSFMat
=
psfA
psfIDW
=
myConfig
.
psfMaker_IDW
(
px
,
py
,
PSFMat
,
cen_col
,
cen_row
,
IDWindex
=
2
,
OnlyNeighbors
=
True
,
hoc
=
None
,
hoclist
=
None
,
PSFCentroidWgt
=
False
)
np
.
save
(
'figs/psfIDW/psfIDW_{:}_{:}_{:}'
.
format
(
iccd
,
iwave
,
ipsf
+
1
),
psfIDW
)
#def test_psfEll(iccd, iwave, ThisTask, NTasks):
def
test_psfEll
(
iccd
,
iwave
):
nccd
=
30
npsf
=
400
#iStart, iEnd = assignTasks(npsf, NTasks, ThisTask)
#imx = np.zeros(npsf)
#imy = np.zeros(npsf)
psf_e1
=
np
.
zeros
(
npsf
)
psf_e2
=
np
.
zeros
(
npsf
)
psf_sz
=
np
.
zeros
(
npsf
)
#for ipsf in range(iStart+1, iEnd+1):
for
ipsf
in
range
(
1
,
401
):
if
ipsf
>
1
:
continue
print
(
'ipsf-{:}'
.
format
(
ipsf
),
end
=
'
\r
'
)
#psfInfo = myConfig.LoadPSF(iccd, iwave, ipsf, psfPath, InputMaxPixelPos=True, PSFCentroidWgt=True, VPSF=False)
#psfMat = psfInfo['psfMat']
#imx[ipsf-1] = psfInfo['image_x']+psfInfo['centroid_x']
#imy[ipsf-1] = psfInfo['image_y']+psfInfo['centroid_y']
psfMat
=
np
.
load
(
'figs/psfIDW/psfIDW_{:}_{:}_{:}.npy'
.
format
(
iccd
,
iwave
,
ipsf
))
#psfInfo['psfMat']
cenX
=
256
cenY
=
256
sz
,
e1
,
e2
=
psfSecondMoments
(
psfMat
,
cenX
,
cenY
,
pixSize
=
1
)
psf_e1
[
ipsf
-
1
]
=
e1
psf_e2
[
ipsf
-
1
]
=
e2
psf_sz
[
ipsf
-
1
]
=
sz
#######
#comm.barrier()
#imx = comm.allreduce(imx, op=MPI.SUM)
#imy = comm.allreduce(imy, op=MPI.SUM)
#psf_e1 = comm.allreduce(psf_e1, op=MPI.SUM)
#psf_e2 = comm.allreduce(psf_e2, op=MPI.SUM)
#psf_sz = comm.allreduce(psf_sz, op=MPI.SUM)
#comm.barrier()
#if ThisTask == 0:
# arr = [psf_e1, psf_e2, psf_sz]
# np.save('/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_v4_20210326/test4report/data/psfEll20IDW_{:}_{:}'.format(iccd, iwave), arr)
'''
def test_psfResidualCalc(iccd, iwave, ipsf, psfPath):
psfInfo = myConfig.LoadPSF(iccd, iwave, ipsf, psfPath+'_20x20field', InputMaxPixelPos=True, PSFCentroidWgt=True, VPSF=False)
psfMatORG = psfInfo['psfMat']
psfMatIDW = np.load('/public/home/weichengliang/lnData/CSST_new_framwork/csstPSF_v4_20210326/test4report/figs/psfIDW/psfIDW_{:}_{:}_{:}.npy'.format(iccd, iwave, ipsf))
_,tREE80 = myUtil.psfEncircle(psfMatORG, fraction=0.8, psfSampleSizeInMicrons=2.5, focalLengthInMeters=28, cenPix=None)
tREE80_pix = np.int32(np.ceil(tREE80/(0.074/2/2))[0])
#print(tREE80, np.ceil(tREE80/(0.074/2/2)), tREE80_pix)
timg0 = psfMatORG[256-tREE80_pix:256+tREE80_pix, 256-tREE80_pix:256+tREE80_pix]
timg1 = psfMatIDW[256-tREE80_pix:256+tREE80_pix, 256-tREE80_pix:256+tREE80_pix]
#print("residual::", np.max((timg1-timg0)/timg0), np.min((timg1-timg0)/timg0), np.mean((timg1-timg0)/timg0))
return np.mean((timg1-timg0)/timg0)
'''
def
test_psfResidualPlot
(
iccd
,
iwave
,
ipsf
,
psfPath
):
psfInfo
=
myConfig
.
LoadPSF
(
iccd
,
iwave
,
ipsf
,
psfPath
+
'_20x20field'
,
InputMaxPixelPos
=
True
,
PSFCentroidWgt
=
True
,
VPSF
=
False
)
psfMatORG
=
psfInfo
[
'psfMat'
]
psfMatIDW
=
np
.
load
(
'figs/psfIDW/psfIDW_{:}_{:}_{:}.npy'
.
format
(
iccd
,
iwave
,
ipsf
))
npix
=
psfMatORG
.
shape
[
0
]
pixCutEdge
=
int
(
npix
/
2
-
15
)
img0
=
psfMatORG
[
pixCutEdge
:
npix
-
pixCutEdge
,
pixCutEdge
:
npix
-
pixCutEdge
]
img1
=
psfMatIDW
[
pixCutEdge
:
npix
-
pixCutEdge
,
pixCutEdge
:
npix
-
pixCutEdge
]
imgX
=
(
img1
-
img0
)
/
img0
img0
=
np
.
log10
(
img0
)
img1
=
np
.
log10
(
img1
)
imgX
=
np
.
log10
(
np
.
abs
(
imgX
))
fig
=
plt
.
figure
(
figsize
=
(
18
,
4
))
ax
=
plt
.
subplot
(
1
,
3
,
1
)
plt
.
imshow
(
img0
,
origin
=
'lower'
,
vmin
=-
7
,
vmax
=-
1.3
)
plt
.
plot
([
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],[
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],
'w--'
)
plt
.
plot
([
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],[
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],
'w--'
)
plt
.
annotate
(
'ORG'
,
[
0
,(
npix
/
2
-
pixCutEdge
)
*
2
-
5
],
c
=
'w'
,
size
=
15
)
cticks
=
[
-
7
,
-
6
,
-
5
,
-
4
,
-
3
,
-
2
,
-
1
]
cbar
=
plt
.
colorbar
(
ticks
=
cticks
)
cbar
.
ax
.
set_yticklabels
([
'$10^{-7}$'
,
'$10^{-6}$'
,
'$10^{-5}$'
,
'$10^{-4}$'
,
'$10^{-3}$'
,
'$10^{-2}$'
,
'$10^{-1}$'
])
print
(
img0
.
min
(),
img0
.
max
())
ax
=
plt
.
subplot
(
1
,
3
,
2
)
plt
.
imshow
(
img1
,
origin
=
'lower'
,
vmin
=-
7
,
vmax
=-
1.3
)
plt
.
plot
([
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],[
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],
'w--'
)
plt
.
plot
([
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],[
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],
'w--'
)
plt
.
annotate
(
'IDW'
,
[
0
,(
npix
/
2
-
pixCutEdge
)
*
2
-
5
],
c
=
'w'
,
size
=
15
)
cticks
=
[
-
7
,
-
6
,
-
5
,
-
4
,
-
3
,
-
2
,
-
1
]
cbar
=
plt
.
colorbar
(
ticks
=
cticks
)
cbar
.
ax
.
set_yticklabels
([
'$10^{-7}$'
,
'$10^{-6}$'
,
'$10^{-5}$'
,
'$10^{-4}$'
,
'$10^{-3}$'
,
'$10^{-2}$'
,
'$10^{-1}$'
])
print
(
img1
.
min
(),
img1
.
max
())
ax
=
plt
.
subplot
(
1
,
3
,
3
)
plt
.
imshow
(
imgX
,
origin
=
'lower'
,
vmin
=-
3
,
vmax
=
np
.
log10
(
3e-1
))
plt
.
plot
([
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],[
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],
'w--'
)
plt
.
plot
([
0
,
(
npix
/
2
-
pixCutEdge
)
*
2
-
1
],[
npix
/
2
-
pixCutEdge
,
npix
/
2
-
pixCutEdge
],
'w--'
)
#plt.annotate('(IDW-ORG)/ORG', [0,(npix/2-pixCutEdge)*2-5], c='w', size=15)
cticks
=
[
-
5
,
-
4
,
-
3
,
-
2
,
-
1
]
cbar
=
plt
.
colorbar
(
ticks
=
cticks
)
cbar
.
ax
.
set_yticklabels
([
'$10^{-5}$'
,
'$10^{-4}$'
,
'$10^{-3}$'
,
'$10^{-2}$'
,
'$10^{-1}$'
])
print
(
np
.
max
((
psfMatORG
-
psfMatIDW
)))
plt
.
savefig
(
'figs/psfResidual_iccd{:}.pdf'
.
format
(
iccd
))
def
test_psfEllPlot
(
OVERPLOT
=
False
):
#if ThisTask == 0:
if
True
:
prefix
=
'psfEll20'
iccd
=
1
iwave
=
1
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
print
(
np
.
shape
(
imx
))
npsf
=
np
.
shape
(
imx
)[
0
]
plt
.
cla
()
plt
.
close
(
"all"
)
fig
=
plt
.
figure
(
figsize
=
(
12
,
12
))
plt
.
plot
(
imx
,
imy
,
'r.'
)
plt
.
savefig
(
'figs/psfPos.pdf'
)
#######
fig
=
plt
.
figure
(
figsize
=
(
12
,
12
))
plt
.
subplots_adjust
(
wspace
=
0.1
,
hspace
=
0.1
)
ax
=
plt
.
subplot
(
1
,
1
,
1
)
for
ipsf
in
range
(
npsf
):
plt
.
plot
(
imx
[
ipsf
],
imy
[
ipsf
],
'b.'
)
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'b'
,
lw
=
2
)
###########
ang
=
0.
ell
=
0.05
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
#plt.plot([imx[898]-lcos, imx[898]+lcos],[imy[898]+5.-lsin, imy[898]+5.+lsin],'k', lw=2)
#plt.annotate('{:}'.format(ell/15), (imx[898]-2., imy[898]+6.), xycoords='data', fontsize=10)
plt
.
xlabel
(
'CCD X (mm)'
)
plt
.
ylabel
(
'CCD Y (mm)'
)
if
OVERPLOT
==
True
:
prefix
=
'psfEll20IDW'
data
=
np
.
load
(
'data/'
+
prefix
+
'_1_1.npy'
)
#imx= data[0]
#imy= data[1]
psf_e1
=
data
[
0
]
psf_e2
=
data
[
1
]
npsf
=
np
.
shape
(
imx
)[
0
]
for
ipsf
in
range
(
npsf
):
#plt.plot(imx[ipsf], imy[ipsf], 'r.')
ang
=
np
.
arctan2
(
psf_e2
[
ipsf
],
psf_e1
[
ipsf
])
/
2
ell
=
np
.
sqrt
(
psf_e1
[
ipsf
]
**
2
+
psf_e2
[
ipsf
]
**
2
)
ell
*=
15
lcos
=
ell
*
np
.
cos
(
ang
)
lsin
=
ell
*
np
.
sin
(
ang
)
plt
.
plot
([
imx
[
ipsf
]
-
lcos
,
imx
[
ipsf
]
+
lcos
],[
imy
[
ipsf
]
-
lsin
,
imy
[
ipsf
]
+
lsin
],
'r'
,
lw
=
1
)
plt
.
gca
().
set_aspect
(
1
)
if
OVERPLOT
==
True
:
prefix
=
'psfEllOPIDW'
plt
.
savefig
(
'figs/'
+
prefix
+
'_iccd{:}.pdf'
.
format
(
iccd
))
'''
def test_psfdEllPlot():
if ThisTask == 0:
prefix = 'psfEll20'
iccd = 1
iwave= 1
data = np.load('data/'+prefix+'_1_1.npy')
imx= data[0]
imy= data[1]
psf_e1 = data[2]
psf_e2 = data[3]
psf_sz = data[4]
print(np.shape(imx))
npsf = np.shape(imx)[0]
ellX = np.sqrt(psf_e1**2 + psf_e2**2)
angX = np.arctan2(psf_e2, psf_e1)/2
angX = np.rad2deg(angX)
szX = psf_sz
##############################
prefix = 'psfEll20IDW'
data = np.load('data/'+prefix+'_1_1.npy')
#imx= data[0]
#imy= data[1]
psf_e1 = data[0]
psf_e2 = data[1]
psf_sz = data[2]
ellY = np.sqrt(psf_e1**2 + psf_e2**2)
angY = np.arctan2(psf_e2, psf_e1)/2
angY = np.rad2deg(angY)
szY = psf_sz
##############################
fig=plt.figure(figsize=(15, 4))
ax = plt.subplot(1,3,1)
plt.hist(ellX, bins=20, color='b', alpha=0.5)
plt.hist(ellY, bins=20, color='r', alpha=0.5)
plt.xlabel('$\epsilon$')
plt.ylabel('PDF')
ax = plt.subplot(1,3,2)
plt.hist((ellY-ellX)/ellX, bins=20, color='r', alpha=0.5)
plt.xlabel('$(\epsilon_{
\\
rm IDW}-\epsilon_{
\\
rm ORG})/\epsilon_{
\\
rm ORG}$')
plt.ylabel('PDF')
ax = plt.subplot(1,3,3)
plt.hist((angY-angX)/angX, bins=20, color='r', alpha=0.5, range=[-0.1, 0.1])
plt.xlabel('$(
\\
alpha_{
\\
rm IDW}-
\\
alpha_{
\\
rm ORG})/
\\
alpha_{
\\
rm ORG}$')
plt.ylabel('PDF')
plt.savefig('figs/psfEllOPIDWPDF.pdf')
fig=plt.figure(figsize=(4, 4))
plt.hist((szY-szX)/szX, bins=20, color='r', alpha=0.5)
plt.xlabel('$(R_{
\\
rm IDW}-R_{
\\
rm ORG})/R_{
\\
rm ORG}$')
plt.ylabel('PDF')
plt.savefig('figs/psfEllOPIDWPDF_dsz.pdf')
'''
def
test_psfdEllabsPlot
(
iccd
):
#if ThisTask == 0:
if
True
:
prefix
=
'psfEll20'
#iccd = 1
#iwave= 1
data
=
np
.
load
(
'data/'
+
prefix
+
'_{:}_1.npy'
.
format
(
iccd
))
imx
=
data
[
0
]
imy
=
data
[
1
]
psf_e1
=
data
[
2
]
psf_e2
=
data
[
3
]
psf_sz
=
data
[
4
]
print
(
np
.
shape
(
imx
))
npsf
=
np
.
shape
(
imx
)[
0
]
ellX
=
np
.
sqrt
(
psf_e1
**
2
+
psf_e2
**
2
)
angX
=
np
.
arctan2
(
psf_e2
,
psf_e1
)
/
2
angX
=
np
.
rad2deg
(
angX
)
szX
=
psf_sz
##############################
prefix
=
'psfEll20IDW'
data
=
np
.
load
(
'data/'
+
prefix
+
'_{:}_1.npy'
.
format
(
iccd
))
#imx= data[0]
#imy= data[1]
psf_e1
=
data
[
0
]
psf_e2
=
data
[
1
]
psf_sz
=
data
[
2
]
ellY
=
np
.
sqrt
(
psf_e1
**
2
+
psf_e2
**
2
)
angY
=
np
.
arctan2
(
psf_e2
,
psf_e1
)
/
2
angY
=
np
.
rad2deg
(
angY
)
szY
=
psf_sz
##############################
fig
=
plt
.
figure
(
figsize
=
(
6
,
5
))
grid
=
plt
.
GridSpec
(
3
,
1
,
left
=
0.15
,
right
=
0.95
,
wspace
=
None
,
hspace
=
0.02
)
#plt.subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=0.02)
ax
=
plt
.
subplot
(
grid
[
0
:
2
,
0
])
plt
.
plot
([
0.01
,
0.1
],[
0.01
,
0.1
],
'k--'
,
lw
=
1.
)
plt
.
scatter
(
ellX
,
ellY
,
color
=
'b'
,
alpha
=
1.
,
s
=
3.
,
edgecolors
=
'None'
)
plt
.
xlim
([
0.015
,
0.085
])
plt
.
ylim
([
0.015
,
0.085
])
plt
.
ylabel
(
'$\epsilon_{
\\
rm IDW}$'
)
plt
.
gca
().
axes
.
get_xaxis
().
set_visible
(
False
)
ax
=
plt
.
subplot
(
grid
[
2
,
0
])
plt
.
plot
([
0.015
,
0.085
],[
0.
,
0.
],
'k--'
,
lw
=
1.
)
plt
.
scatter
(
ellX
,
(
ellY
-
ellX
),
color
=
'b'
,
s
=
3.
,
edgecolors
=
'None'
)
plt
.
xlim
([
0.015
,
0.085
])
plt
.
ylim
([
-
0.0018
,
0.0018
])
plt
.
xlabel
(
'$\epsilon_{
\\
rm ORG}$'
)
plt
.
ylabel
(
'$\Delta$'
)
plt
.
savefig
(
'figs/psfEllOPIDWPDF_{:}.pdf'
.
format
(
iccd
))
fig
=
plt
.
figure
(
figsize
=
(
4
,
4
))
plt
.
hist
((
szY
-
szX
)
/
szX
,
bins
=
20
,
color
=
'r'
,
alpha
=
0.5
)
plt
.
xlabel
(
'$(R_{
\\
rm IDW}-R_{
\\
rm ORG})/R_{
\\
rm ORG}$'
)
plt
.
ylabel
(
'PDF'
)
plt
.
savefig
(
'figs/psfEllOPIDWPDF_dsz_{:}.pdf'
.
format
(
iccd
))
class
PSFMatsIDW_coverage
(
unittest
.
TestCase
):
def
test_psfIDW_
(
self
):
#comm = MPI.COMM_WORLD
#ThisTask = comm.Get_rank()
#NTasks = comm.Get_size()
iccd
=
1
iwave
=
1
ipsf
=
400
psfPath
=
'/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/CSSOS_psf_20210326/CSST_psf_ciomp'
#test_psfIDW(iccd, iwave, psfPath, ThisTask, NTasks)
test_psfIDW
(
iccd
,
iwave
,
psfPath
)
'''
for iccd in range(7, 10):
res = np.zeros(400)
for ipsf in range(1,401):
print(ipsf, end="
\r
")
res[ipsf-1] = test_psfResidualCalc(iccd, iwave, ipsf, psfPath)
#fig = plt.figure(figsize=(6,6))
#plt.hist(np.abs(res), bins=50)
#plt.xlim([0,1])
#plt.savefig('figs/psfResidualREE80PDF.pdf')
print("{:}:".format(iccd), res[res<=0.01].size/400*100)
'''
test_psfResidualPlot
(
iccd
,
iwave
,
ipsf
,
psfPath
)
#test_psfEll(iccd, iwave, ThisTask, NTasks)
test_psfEll
(
iccd
,
iwave
)
test_psfEllPlot
(
OVERPLOT
=
True
)
#test_psfdEllPlot()
test_psfdEllabsPlot
(
iccd
)
##############################
##############################
##############################
if
__name__
==
'__main__'
:
unittest
.
main
()
Prev
1
2
3
4
5
6
7
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