Commit fc33cf07 authored by JX's avatar JX 😵
Browse files

Merge remote-tracking branch 'origin/develop'

parents edd720e6 59814d64
Pipeline #4233 passed with stage
in 0 seconds
numpy==1.26.4
astropy==6.0.1
scipy==1.11.4
GalSim==2.5.2
PyYAML==6.0.1
mpi4py==3.1.6
sep==1.2.1
healpy==1.16.6
h5py==3.11.0
Cython==3.0.6
numba==0.59.1
psutil==5.9.8
toml==0.10.2
lmfit==1.2.2
\ No newline at end of file
from ObservationSim.ObservationSim import Observation
from ObservationSim._util import parse_args, make_run_dirs, generate_pointing_list
from pkg_resources import get_distribution
from importlib.metadata import version
import os
import yaml
import shutil
......@@ -24,7 +24,7 @@ def run_sim():
None
"""
# Get version of CSSTSim Package
__version__ = get_distribution("CSSTSim").version
__version__ = version("CSSTSim")
# Get run datetime
now = datetime.datetime.now()
......@@ -97,9 +97,7 @@ def run_sim():
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"])
obs.runExposure_MPI_PointingList(pointing_list=pointing_list)
if __name__=='__main__':
run_sim()
......@@ -58,23 +58,32 @@ cti_module = [CTypes('ObservationSim.Instrument.Chip.libCTI.libmoduleCTI',
# name = "slssim_disperse",
# ext_modules = cythonize(extensions),
# )
# 读取依赖列表requirements.txt
# 忽略#开头或者版本号不明确指定的条目
with open("requirements.txt", "r") as f:
requirements = [
req.strip()
for req in f.readlines()
if not req.startswith("#") and req.__contains__("==")
]
setup(name='CSSTSim',
version='2.1.0',
packages=find_packages(),
install_requires=[
# 'numpy>=1.18.5',
# 'galsim>=2.2.4',
# 'pyyaml>=5.3.1',
# 'astropy>=4.0.1',
# 'scipy>=1.5.0',
# 'mpi4py>=3.0.3',
# 'sep>=1.0.3',
# 'healpy>=1.14.0',
# 'h5py>=2.10.0',
# 'Cython>=0.29.21',
# 'numba>=0.50.1'
],
# install_requires=[
# # 'numpy>=1.18.5',
# # 'galsim>=2.2.4',
# # 'pyyaml>=5.3.1',
# # 'astropy>=4.0.1',
# # 'scipy>=1.5.0',
# # 'mpi4py>=3.0.3',
# # 'sep>=1.0.3',
# # 'healpy>=1.14.0',
# # 'h5py>=2.10.0',
# # 'Cython>=0.29.21',
# # 'numba>=0.50.1'
# ],
package_data = {
'ObservationSim.Astrometry.lib': ['libshao.so'],
'ObservationSim.Instrument.Chip.libBF': ['libmoduleBF.so'],
......@@ -89,11 +98,14 @@ setup(name='CSSTSim',
'ObservationSim.Instrument.data.sls_conf': ['*.conf', '*.fits'],
'ObservationSim.Instrument.data.flatCube': ['*.fits'],
'Catalog.data': ['*.fits','*.so'],
'ObservationSim.Config.Header':['*.header','*.lst'],
'ObservationSim.Config.Header':['*.fits','*.lst'],
'ObservationSim.Straylight.data': ['*.dat'],
'ObservationSim.Straylight.data.sky': ['*.dat'],
'ObservationSim.Straylight.lib': ['*'],
},
python_requires=">=3.11", # Python版本要求
install_requires=requirements,
ext_modules = cythonize(extensions) + df_module + cti_module,
cmdclass={'build_ext': build_ext}
)
......@@ -24,7 +24,6 @@ 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
......
......@@ -80,7 +80,7 @@ class detModule_coverage(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(detModule_coverage, self).__init__(methodName)
##self.dataPath = "/public/home/chengliang/CSSOSDataProductsSims/csst-simulation/tests/UNIT_TEST_DATA" ##os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_fz_gc1')
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_fz_msc')
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc')
self.iccd = 1
......
......@@ -39,7 +39,7 @@ def defineFilt(chip):
class PSFInterpModule_coverage(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(PSFInterpModule_coverage, self).__init__(methodName)
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_fz_msc')
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc')
self.iccd = 8
def test_loadPSFSet(self):
......
......@@ -145,16 +145,22 @@ class TestSpecDisperse(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(TestSpecDisperse,self).__init__(methodName)
self.filePath('csst_fz_gc0')
self.filePath('csst_msc_sim/test_sls_and_straylight')
# self.conff = conff
# self.throughputf = throughputf
def filePath(self, file_name):
fn = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), file_name)
self.conff= os.path.join(fn, 'CSST_GI2.conf')
self.throughputf= os.path.join(fn, 'GI.Throughput.1st.fits')
self.testDir = fn
self.outDataFn = os.path.join(fn,'output')
if os.path.isdir(self.outDataFn):
pass
else:
os.mkdir(self.outDataFn)
def test_rotate901(self):
m = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]])
......@@ -231,16 +237,16 @@ class TestSpecDisperse(unittest.TestCase):
ids1 = wave_pix[ids] > 6500
print('Spec disperse flux test')
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.plot(wave_pix, wave_flux)
plt.plot(sed['WAVELENGTH'], sed['FLUX'])
plt.xlim(6200, 10000)
plt.ylim(1, 3)
plt.yscale('log')
plt.xlabel('$\lambda$')
plt.ylabel('$F\lambda$')
plt.legend(['extracted', 'input'])
plt.show()
# plt.figure()
# plt.plot(wave_pix, wave_flux)
# plt.plot(sed['WAVELENGTH'], sed['FLUX'])
# plt.xlim(6200, 10000)
# plt.ylim(1, 3)
# plt.yscale('log')
# plt.xlabel('$\lambda$')
# plt.ylabel('$F\lambda$')
# plt.legend(['extracted', 'input'])
# plt.show()
def test_Specdistperse2(self):
......@@ -303,16 +309,16 @@ class TestSpecDisperse(unittest.TestCase):
self.assertTrue(fwhmx/deltLamda_pix*pix_scale - psf_fwhm < np.abs(0.02))
# 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)
plt.figure()
plt.plot(wave_pix, wave_flux)
plt.plot(sed['WAVELENGTH'], sed['FLUX'])
plt.xlim(6200, 10000)
plt.ylim(1, 75)
plt.yscale('log')
plt.xlabel('$\lambda$')
plt.ylabel('$F\lambda$')
plt.legend(['extracted', 'input'])
plt.show()
# plt.figure()
# plt.plot(wave_pix, wave_flux)
# plt.plot(sed['WAVELENGTH'], sed['FLUX'])
# plt.xlim(6200, 10000)
# plt.ylim(1, 75)
# plt.yscale('log')
# plt.xlabel('$\lambda$')
# plt.ylabel('$F\lambda$')
# plt.legend(['extracted', 'input'])
# plt.show()
def test_Specdistperse3(self):
......@@ -484,7 +490,7 @@ class TestSpecDisperse(unittest.TestCase):
print('Spec double disperse test')
from astropy.io import fits
fits.writeto('test.fits',chip.img.array, overwrite = True)
fits.writeto(os.path.join(self.outDataFn,'test_sls_doubleDisp.fits'),chip.img.array, overwrite = True)
# plt.figure()
# plt.imshow(chip.img.array)
......
......@@ -74,7 +74,7 @@ class TestStraylight(unittest.TestCase):
# print(file_name)
# fn = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), file_name)
# self.pointingData = np.loadtxt(os.path.join(fn, 'Straylight_test.dat'), dtype=np.double)
self.filePath('csst_fz_gc0')
self.filePath('csst_msc_sim/test_sls_and_straylight')
self.filter = filter
self.grating = grating
......
......@@ -60,7 +60,7 @@ def defineFilt(chip):
class detModule_coverage(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(detModule_coverage, self).__init__(methodName)
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_fz_msc')
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc')
self.iccd = 1
def test_add_dark(self):
......
......@@ -17,7 +17,7 @@ class DetTest(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(DetTest,self).__init__(methodName)
self.filePath('csst_fz_gc0')
self.filePath('csst_msc_sim/test_sls_and_straylight')
def filePath(self, file_name):
self.datafn = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), file_name)
......@@ -138,15 +138,15 @@ class DetTest(unittest.TestCase):
newimg.write(os.path.join(self.outDataFn,'test_badlines.fits'))
del newimg,img
def test_cte(self):
img = galsim.Image(200,200,init_value=1000)
img.array[50,80] = 1e4
img.array[150,150] = 3e4
newimgcol = Effects.CTE_Effect(copy.deepcopy(img),direction='column')
newimgrow = Effects.CTE_Effect(copy.deepcopy(img),direction='row')
newimgcol.write(os.path.join(self.outDataFn,'test_ctecol.fits'))
newimgrow.write(os.path.join(self.outDataFn,'test_cterow.fits'))
del img,newimgcol,newimgrow
# def test_cte(self):
# img = galsim.Image(200,200,init_value=1000)
# img.array[50,80] = 1e4
# img.array[150,150] = 3e4
# newimgcol = Effects.CTE_Effect(copy.deepcopy(img),direction='column')
# newimgrow = Effects.CTE_Effect(copy.deepcopy(img),direction='row')
# newimgcol.write(os.path.join(self.outDataFn,'test_ctecol.fits'))
# newimgrow.write(os.path.join(self.outDataFn,'test_cterow.fits'))
# del img,newimgcol,newimgrow
def test_readnoise(self):
img = galsim.Image(200,200,init_value=1000)
......
......@@ -97,8 +97,8 @@ def _load_gals(file_path):
param['av'] = 0.0
param['redden'] = 0
pcs = h5.File("/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/sedlibs/"+"pcs.h5", "r")
lamb = h5.File("/public/share/yangxuliu/CSSOSDataProductsSims/data_50sqDeg/sedlibs/"+"lamb.h5", "r")
pcs = h5.File(os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc/sedlibs/pcs.h5'), "r")
lamb = h5.File(os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc/sedlibs/lamb.h5'), "r")
lamb_gal = lamb['lamb'][()]
pcs = pcs['pcs'][()]
......@@ -158,7 +158,7 @@ def defineFilt(chip):
class imagingModule_coverage(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(imagingModule_coverage, self).__init__(methodName)
self.dataPath = "/public/home/chengliang/CSSOSDataProductsSims/csst-simulation/tests/UNIT_TEST_DATA" ##os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_fz_gc1')
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc')
self.iccd = 8
def test_imaging(self):
......@@ -170,7 +170,7 @@ class imagingModule_coverage(unittest.TestCase):
print(chip.cen_pix_x, chip.cen_pix_y)
obj = _load_gals("UNIT_TEST_DATA/galaxies_C6_bundle000287.h5")
obj = _load_gals(os.path.join(self.dataPath, 'galaxies_C6_bundle000287.h5')) #("UNIT_TEST_DATA/galaxies_C6_bundle000287.h5")
sed_data = obj['sed']
norm_filt = None
......
......@@ -81,7 +81,7 @@ def defineFilt(chip):
class detModule_coverage(unittest.TestCase):
def __init__(self, methodName='runTest'):
super(detModule_coverage, self).__init__(methodName)
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_fz_msc')
self.dataPath = os.path.join(os.getenv('UNIT_TEST_DATA_ROOT'), 'csst_msc_sim/csst_fz_msc')
self.iccd = 1
def test_add_prescan_overscan(self):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment