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
20b4f01c
Commit
20b4f01c
authored
Oct 09, 2023
by
Zhang Xin
Browse files
fix unitest bug for main code modify --sls
parent
a88bded7
Changes
5
Show whitespace changes
Inline
Side-by-side
ObservationSim/Config/Header/ImageHeader.py
View file @
20b4f01c
...
@@ -243,7 +243,7 @@ def WCS_def(xlen = 9216, ylen = 9232, gapy = 898.0, gapx1 = 534, gapx2 = 1309, r
...
@@ -243,7 +243,7 @@ def WCS_def(xlen = 9216, ylen = 9232, gapy = 898.0, gapx1 = 534, gapx2 = 1309, r
# test_center_o = w.wcs_pix2world(np.array([[xlen / 2, ylen / 2]]), 1)
# test_center_o = w.wcs_pix2world(np.array([[xlen / 2, ylen / 2]]), 1)
sls_rot
=
1
sls_rot
=
rotate_chip
if
i
>
2
:
if
i
>
2
:
sls_rot
=
-
sls_rot
sls_rot
=
-
sls_rot
...
...
setup.py
View file @
20b4f01c
'''
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
import
setup
,
find_packages
from
setuptools.extension
import
Extension
from
setuptools.extension
import
Extension
...
@@ -46,7 +54,7 @@ setup(name='CSSTSim',
...
@@ -46,7 +54,7 @@ setup(name='CSSTSim',
'ObservationSim.MockObject.data'
:
[
'*.dat'
],
'ObservationSim.MockObject.data'
:
[
'*.dat'
],
'ObservationSim.Instrument.data'
:
[
'*.txt'
,
'*.dat'
,
'*.json'
],
'ObservationSim.Instrument.data'
:
[
'*.txt'
,
'*.dat'
,
'*.json'
],
'ObservationSim.Instrument.data.field_distortion'
:
[
'*.pickle'
],
'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.filters'
:
[
'*.txt'
,
'*.list'
,
'*.dat'
],
'ObservationSim.Instrument.data.throughputs'
:
[
'*.txt'
,
'*.dat'
],
'ObservationSim.Instrument.data.throughputs'
:
[
'*.txt'
,
'*.dat'
],
'ObservationSim.Instrument.data.sls_conf'
:
[
'*.conf'
,
'*.fits'
],
'ObservationSim.Instrument.data.sls_conf'
:
[
'*.conf'
,
'*.fits'
],
...
...
tests/SLOAN_SDSS.g.fits
0 → 100644
View file @
20b4f01c
File added
tests/config_C6.yaml
0 → 100644
View file @
20b4f01c
---
###############################################
#
# Configuration file for CSST simulation
# CSST-Sim Group, 2021/10/07
#
###############################################
# 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/test_psf_rot/csst-simulation/workplace/"
# work_dir: "/share/"
data_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/"
run_name
:
"
C6_photometry"
# (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_dir: "/share/home/fangyuedong/test_psf_rot/csst-simulation/workplace/"
pointing_file
:
"
pointing_radec_246.5_40.dat"
# Whether to use MPI
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
# Output catalog only?
# If yes, no imaging simulation will run
out_cat_only
:
NO
# Only simulate stars?
star_only
:
NO
# Only simulate galaxies?
galaxy_only
:
NO
###############################################
# Observation setting
###############################################
obs_setting
:
# Options for survey types:
# "Photometric": simulate photometric chips only
# "Spectroscopic": simulate slitless spectroscopic chips only
# "All": simulate full focal plane
survey_type
:
"
Spectroscopic"
# Exposure time [seconds]
exp_time
:
150.
# Observation starting date & time
# (Subject to change)
date_obs
:
"
210525"
# [yymmdd]
time_obs
:
"
120000"
# [hhmmss]
# Default Pointing [degrees]
# Note: NOT valid when a pointing list file is specified
ra_center
:
192.8595
dec_center
:
27.1283
# Image rotation [degree]
image_rot
:
-113.4333
# Number of calibration pointings
np_cal
:
0
# 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
:
null
# Whether to enable astrometric modeling
# astrometric_lib: "libshao.so"
enable_astrometric_model
:
True
# Cut by saturation magnitude in which band?
cut_in_band
:
"
z"
# saturation magnitude margin
mag_sat_margin
:
-2.5
# limiting magnitude margin
mag_lim_margin
:
+1.0
###############################################
# Input path setting
###############################################
# Default path settings for WIDE survey simulation
input_path
:
cat_dir
:
"
Catalog_C6_20221212"
star_cat
:
"
C6_MMW_GGC_Astrometry_healpix.hdf5"
galaxy_cat
:
"
cat2CSSTSim_bundle/"
SED_templates_path
:
star_SED
:
"
Catalog_20210126/SpecLib.hdf5"
galaxy_SED
:
"
Catalog_C6_20221212/sedlibs/"
###############################################
# 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_dir
:
"
/share/simudata/CSSOSDataProductsSims/data/psfCube"
# path to field-distortion model
# Note: only valid when ins_effects: field_dist is "ON"
fd_path
:
"
FieldDistModelGlobal_v1.0.pickle"
# sigma_spin: 0.0 # psf spin?
###############################################
# Shear setting
###############################################
shear_setting
:
# Options to generate mock shear field:
# "constant": all galaxies are assigned a constant reduced shear
# "catalog": from catalog
# "extra": from seprate file
shear_type
:
"
catalog"
# For constant shear filed
reduced_g1
:
0.
reduced_g2
:
0.
# Representation of the shear vector?
reShear
:
"
E"
# rotate galaxy ellipticity
rotateEll
:
0.
# [degree]
# Extra shear catalog
# (currently not used)
# shear_cat: "mockShear.cat"
###############################################
# Instrumental effects setting
###############################################
ins_effects
:
# switches
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
:
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
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-]
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 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
###############################################
# Random seeds
###############################################
random_seeds
:
seed_Av
:
121212
# Seed for generating random intrinsic extinction
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
tests/test_SpecDisperse.py
View file @
20b4f01c
...
@@ -85,13 +85,11 @@ def fit_SingleGauss(xX, yX, contmX, iHa0):
...
@@ -85,13 +85,11 @@ def fit_SingleGauss(xX, yX, contmX, iHa0):
return
sigmaX
,
err_sigmaX
,
fwhmX
,
err_fwhmX
,
centerX
,
err_centerX
return
sigmaX
,
err_sigmaX
,
fwhmX
,
err_fwhmX
,
centerX
,
err_centerX
def
produceObj
(
x
,
y
,
chip
,
ra
,
dec
,
pa
):
def
produceObj
(
x
,
y
,
chip
,
ra
,
dec
,
pa
):
pos_img
=
galsim
.
PositionD
(
chip
.
bound
.
xmin
+
x
,
chip
.
bound
.
ymin
+
y
)
pos_img
=
galsim
.
PositionD
(
x
,
y
)
param
=
{}
param
=
{}
param
[
"star"
]
=
1
param
[
"star"
]
=
1
param
[
"id"
]
=
1
param
[
"id"
]
=
1
param
[
"ra"
]
=
chip
.
img
.
wcs
.
posToWorld
(
pos_img
).
ra
.
deg
param
[
"dec"
]
=
chip
.
img
.
wcs
.
posToWorld
(
pos_img
).
dec
.
deg
param
[
"z"
]
=
0
param
[
"z"
]
=
0
param
[
"sed_type"
]
=
1
param
[
"sed_type"
]
=
1
param
[
"model_tag"
]
=
1
param
[
"model_tag"
]
=
1
...
@@ -99,7 +97,7 @@ def produceObj(x,y,chip, ra, dec, pa):
...
@@ -99,7 +97,7 @@ def produceObj(x,y,chip, ra, dec, pa):
obj
=
Star
(
param
)
obj
=
Star
(
param
)
header_wcs
=
generateExtensionHeader
(
header_wcs
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -109,12 +107,21 @@ def produceObj(x,y,chip, ra, dec, pa):
...
@@ -109,12 +107,21 @@ def produceObj(x,y,chip, ra, dec, pa):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
psize
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
)
pixel_scale
=
chip
.
pix_scale
,
pixel_size
=
chip
.
pix_size
,
pos_img
,
offset
,
local_wcs
,
_
=
obj
.
getPosImg_Offset_WCS
(
img
=
chip
.
img
,
chip
=
chip
,
img_header
=
header_wcs
)
xcen
=
chip
.
x_cen
,
ycen
=
chip
.
y_cen
,
extName
=
'SCI'
)
chip_wcs
=
galsim
.
FitsWCS
(
header
=
header_wcs
)
param
[
"ra"
]
=
chip_wcs
.
posToWorld
(
pos_img
).
ra
.
deg
param
[
"dec"
]
=
chip_wcs
.
posToWorld
(
pos_img
).
dec
.
deg
# pos_img, offset, local_wcs, _, _ = obj.getPosImg_Offset_WCS(img=chip.img, chip=chip, img_header=header_wcs)
pos_img
,
offset
,
local_wcs
,
real_wcs
,
fd_shear
=
obj
.
getPosImg_Offset_WCS
(
img
=
chip
.
img
,
chip
=
chip
,
verbose
=
False
,
chip_wcs
=
chip_wcs
,
img_header
=
header_wcs
)
wave
=
np
.
arange
(
2500
,
11000.5
,
0.5
)
wave
=
np
.
arange
(
2500
,
11000.5
,
0.5
)
# sedLen = wave.shape[0]
# sedLen = wave.shape[0]
flux
=
pow
(
wave
,
-
2
)
*
1e8
flux
=
pow
(
wave
,
-
2
)
*
1e8
...
@@ -276,8 +283,8 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -276,8 +283,8 @@ class TestSpecDisperse(unittest.TestCase):
print
(
'Emission line position and shape test'
)
print
(
'Emission line position and shape test'
)
self
.
assertTrue
(
input_em_lam
-
center
<
deltLamda_pix
)
self
.
assertTrue
(
input_em_lam
-
center
<
deltLamda_pix
)
# print(fwhmx/deltLamda_pix*pix_scale - psf_fwhm)
self
.
assertTrue
(
fwhmx
/
deltLamda_pix
*
pix_scale
-
psf_fwhm
<
np
.
abs
(
0.0
1
))
self
.
assertTrue
(
fwhmx
/
deltLamda_pix
*
pix_scale
-
psf_fwhm
<
np
.
abs
(
0.0
2
))
# print('error is ',np.mean((wave_flux[ids][ids1] - sed_i(wave_pix[ids][ids1]))/sed_i(wave_pix[ids][ids1])))
# print('error is ',np.mean((wave_flux[ids][ids1] - sed_i(wave_pix[ids][ids1]))/sed_i(wave_pix[ids][ids1])))
# self.assertTrue(np.mean((wave_flux[ids][ids1] - sed_i(wave_pix[ids][ids1]))/sed_i(wave_pix[ids][ids1]))<0.004)
# self.assertTrue(np.mean((wave_flux[ids][ids1] - sed_i(wave_pix[ids][ids1]))/sed_i(wave_pix[ids][ids1]))<0.004)
plt
.
figure
()
plt
.
figure
()
...
@@ -388,11 +395,11 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -388,11 +395,11 @@ class TestSpecDisperse(unittest.TestCase):
def
test_double_disperse
(
self
):
def
test_double_disperse
(
self
):
work_dir
=
"/public/home/fangyuedong/CSST_unittest/CSST/test/"
#
work_dir = "/public/home/fangyuedong/CSST_unittest/CSST/test/"
# data_dir = "/Volumes/Extreme SSD/SimData/"
# data_dir = "/Volumes/Extreme SSD/SimData/"
data_dir
=
"/data/simudata/CSSOSDataProductsSims/data/"
#
data_dir = "/data/simudata/CSSOSDataProductsSims/data/"
configFn
=
'
/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_C6/csst-simulation/config/
config_C6.yaml'
configFn
=
'config_C6.yaml'
normFilterFn
=
"
/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_C6/csst-simulation/Catalog/data/
SLOAN_SDSS.g.fits"
normFilterFn
=
"SLOAN_SDSS.g.fits"
norm_star
=
Table
.
read
(
normFilterFn
)
norm_star
=
Table
.
read
(
normFilterFn
)
with
open
(
configFn
,
"r"
)
as
stream
:
with
open
(
configFn
,
"r"
)
as
stream
:
try
:
try
:
...
@@ -422,6 +429,7 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -422,6 +429,7 @@ class TestSpecDisperse(unittest.TestCase):
chip
.
img
.
wcs
=
wcs_fp
chip
.
img
.
wcs
=
wcs_fp
obj
,
pos_img
=
produceObj
(
2000
,
4500
,
chip
,
float
(
config
[
"obs_setting"
][
"ra_center"
]),
float
(
config
[
"obs_setting"
][
"dec_center"
]),
float
(
config
[
"obs_setting"
][
"image_rot"
]))
obj
,
pos_img
=
produceObj
(
2000
,
4500
,
chip
,
float
(
config
[
"obs_setting"
][
"ra_center"
]),
float
(
config
[
"obs_setting"
][
"dec_center"
]),
float
(
config
[
"obs_setting"
][
"image_rot"
]))
# print(pos_img,chip.pix_scale)
obj
.
drawObj_slitless
(
obj
.
drawObj_slitless
(
tel
=
tel
,
tel
=
tel
,
pos_img
=
pos_img
,
pos_img
=
pos_img
,
...
@@ -470,7 +478,7 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -470,7 +478,7 @@ class TestSpecDisperse(unittest.TestCase):
def
test_SLSImage_rotation
(
self
):
def
test_SLSImage_rotation
(
self
):
from
astropy.wcs
import
WCS
from
astropy.wcs
import
WCS
configFn
=
'
/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_C6/csst-simulation/config/
config_C6.yaml'
configFn
=
'config_C6.yaml'
with
open
(
configFn
,
"r"
)
as
stream
:
with
open
(
configFn
,
"r"
)
as
stream
:
try
:
try
:
...
@@ -485,7 +493,8 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -485,7 +493,8 @@ class TestSpecDisperse(unittest.TestCase):
dec
=
float
(
config
[
"obs_setting"
][
"dec_center"
])
dec
=
float
(
config
[
"obs_setting"
][
"dec_center"
])
pa
=
float
(
config
[
"obs_setting"
][
"image_rot"
])
pa
=
float
(
config
[
"obs_setting"
][
"image_rot"
])
header_wcs1
=
generateExtensionHeader
(
chip
.
rotate_angle
=
0
header_wcs1
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -495,18 +504,19 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -495,18 +504,19 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
0
)
extName
=
'raw'
)
center
=
np
.
array
([
chip
.
npix_x
/
2
,
chip
.
npix_y
/
2
])
center
=
np
.
array
([
chip
.
npix_x
/
2
,
chip
.
npix_y
/
2
])
h_wcs1
=
WCS
(
header_wcs1
)
h_wcs1
=
WCS
(
header_wcs1
)
x1
,
y1
=
center
+
[
100
,
0
]
x1
,
y1
=
center
+
[
100
,
0
]
sky_1
=
h_wcs1
.
pixel_to_world
(
x1
,
y1
)
sky_1
=
h_wcs1
.
pixel_to_world
(
x1
,
y1
)
chip
=
Chip
(
1
,
config
=
config
)
rot_angle
=
1
rot_angle
=
1
header_wcs2
=
generateExtensionHeader
(
chip
.
rotate_angle
=
rot_angle
header_wcs2
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -516,19 +526,21 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -516,19 +526,21 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
rot_angle
)
extName
=
'raw'
)
h_wcs2
=
WCS
(
header_wcs2
)
h_wcs2
=
WCS
(
header_wcs2
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
print
(
angle
)
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
# print("rotation angle:" ,rot_angle ,chip.rotate_angle, angle)
# self.assertTrue(rot_angle - angle < np.abs(0.001))
rot_angle
=
10
rot_angle
=
10
header_wcs2
=
generateExtensionHeader
(
chip
.
rotate_angle
=
rot_angle
header_wcs2
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -538,19 +550,20 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -538,19 +550,20 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
rot_angle
)
extName
=
'raw'
)
h_wcs2
=
WCS
(
header_wcs2
)
h_wcs2
=
WCS
(
header_wcs2
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
print
(
angle
)
#
print(
"rotation angle:", rot_angle, chip.rotate_angle,
angle)
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
rot_angle
=
50
rot_angle
=
50
header_wcs2
=
generateExtensionHeader
(
chip
.
rotate_angle
=
rot_angle
header_wcs2
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -560,15 +573,15 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -560,15 +573,15 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
rot_angle
)
extName
=
'raw'
)
h_wcs2
=
WCS
(
header_wcs2
)
h_wcs2
=
WCS
(
header_wcs2
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
print
(
angle
)
#
print(
rot_angle -
angle)
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
...
@@ -577,8 +590,8 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -577,8 +590,8 @@ class TestSpecDisperse(unittest.TestCase):
ra
=
float
(
config
[
"obs_setting"
][
"ra_center"
])
ra
=
float
(
config
[
"obs_setting"
][
"ra_center"
])
dec
=
float
(
config
[
"obs_setting"
][
"dec_center"
])
dec
=
float
(
config
[
"obs_setting"
][
"dec_center"
])
pa
=
float
(
config
[
"obs_setting"
][
"image_rot"
])
pa
=
float
(
config
[
"obs_setting"
][
"image_rot"
])
chip
.
rotate_angle
=
0
header_wcs1
=
generateExtensionHeader
(
header_wcs1
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -588,10 +601,10 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -588,10 +601,10 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
0
)
extName
=
'raw'
)
center
=
np
.
array
([
chip
.
npix_x
/
2
,
chip
.
npix_y
/
2
])
center
=
np
.
array
([
chip
.
npix_x
/
2
,
chip
.
npix_y
/
2
])
h_wcs1
=
WCS
(
header_wcs1
)
h_wcs1
=
WCS
(
header_wcs1
)
...
@@ -599,7 +612,8 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -599,7 +612,8 @@ class TestSpecDisperse(unittest.TestCase):
sky_1
=
h_wcs1
.
pixel_to_world
(
x1
,
y1
)
sky_1
=
h_wcs1
.
pixel_to_world
(
x1
,
y1
)
rot_angle
=
1
rot_angle
=
1
header_wcs2
=
generateExtensionHeader
(
chip
.
rotate_angle
=
rot_angle
header_wcs2
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -609,19 +623,20 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -609,19 +623,20 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
rot_angle
)
extName
=
'raw'
)
h_wcs2
=
WCS
(
header_wcs2
)
h_wcs2
=
WCS
(
header_wcs2
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
print
(
angle
)
#
print(
rot_angle -
angle)
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
rot_angle
=
10
rot_angle
=
10
header_wcs2
=
generateExtensionHeader
(
chip
.
rotate_angle
=
rot_angle
header_wcs2
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -631,19 +646,20 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -631,19 +646,20 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
rot_angle
)
extName
=
'raw'
)
h_wcs2
=
WCS
(
header_wcs2
)
h_wcs2
=
WCS
(
header_wcs2
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
print
(
angle
)
#
print(
rot_angle -
angle)
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
rot_angle
=
50
rot_angle
=
50
header_wcs2
=
generateExtensionHeader
(
chip
.
rotate_angle
=
rot_angle
header_wcs2
=
generateExtensionHeader
(
chip
,
xlen
=
chip
.
npix_x
,
xlen
=
chip
.
npix_x
,
ylen
=
chip
.
npix_y
,
ylen
=
chip
.
npix_y
,
ra
=
ra
,
ra
=
ra
,
...
@@ -653,15 +669,15 @@ class TestSpecDisperse(unittest.TestCase):
...
@@ -653,15 +669,15 @@ class TestSpecDisperse(unittest.TestCase):
readout
=
chip
.
read_noise
,
readout
=
chip
.
read_noise
,
dark
=
chip
.
dark_noise
,
dark
=
chip
.
dark_noise
,
saturation
=
90000
,
saturation
=
90000
,
p
siz
e
=
chip
.
pix_scale
,
p
ixel_scal
e
=
chip
.
pix_scale
,
row_num
=
chip
.
rowID
,
row_num
=
chip
.
rowID
,
col_num
=
chip
.
colID
,
col_num
=
chip
.
colID
,
extName
=
'raw'
,
center_rot
=
rot_angle
)
extName
=
'raw'
)
h_wcs2
=
WCS
(
header_wcs2
)
h_wcs2
=
WCS
(
header_wcs2
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
x2
,
y2
=
h_wcs2
.
world_to_pixel
(
sky_1
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
angle
=
getAngle132
(
x1
,
y1
,
0
,
x2
,
y2
,
0
,
center
[
0
],
center
[
1
],
0
)
print
(
angle
)
#
print(
rot_angle -
angle)
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
self
.
assertTrue
(
rot_angle
-
angle
<
np
.
abs
(
0.001
))
...
...
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