Commit baad5514 authored by Yan Zhaojun's avatar Yan Zhaojun
Browse files

test

parent 132ee572
Pipeline #3994 passed with stage
in 0 seconds
......@@ -213,7 +213,7 @@ def flux2ill(wave, flux):
def ill2flux(E):
# use template from sky_bkg (background_spec_hst.dat)
filename = '../MCI_inputData/refs/background_spec_hst.dat'
filename = self.information['dir_path']+'MCI_inputData/refs/background_spec_hst.dat'
cat_spec = pd.read_csv(filename, sep='\s+', header=None, comment='#')
wave0 = cat_spec[0].values # A
spec0 = cat_spec[2].values # erg/s/cm^2/A/arcsec^2
......@@ -276,7 +276,7 @@ def zodiacal(ra, dec, time):
lamda = abs(lb_obj.lon.degree - lb_sun.lon.degree)
# interpolated zodical surface brightness at 0.5 um
zodi = pd.read_csv('../MCI_inputData/refs/zodi_map.dat', sep='\s+', header=None, comment='#')
zodi = pd.read_csv(self.information['dir_path']+'MCI_inputData/refs/zodi_map.dat', sep='\s+', header=None, comment='#')
beta_angle = np.array([0, 5, 10, 15, 20, 25, 30, 45, 60, 75])
lamda_angle = np.array([0, 5, 10, 15, 20, 25, 30, 35, 40, 45,
60, 75, 90, 105, 120, 135, 150, 165, 180])
......@@ -289,7 +289,7 @@ def zodiacal(ra, dec, time):
zodi_obj = f(beta, lamda) #
# read the zodical spectrum in the ecliptic
cat_spec = pd.read_csv('../MCI_inputData/refs/solar_spec.dat', sep='\s+', header=None, comment='#')
cat_spec = pd.read_csv(self.information['dir_path']+'MCI_inputData/refs/solar_spec.dat', sep='\s+', header=None, comment='#')
wave = cat_spec[0].values # A
spec0 = cat_spec[1].values #
zodi_norm = 252 #
......@@ -398,7 +398,7 @@ class StrayLight(object):
self.equator = coord.SkyCoord(radec[0]*u.degree, radec[1]*u.degree,frame='icrs')
self.ecliptic = self.equator.transform_to('barycentrictrueecliptic')
self.pointing = transRaDec2D(radec[0], radec[1])
self.slcdll = ctypes.CDLL('../MCI_inputData/refs/libstraylight.so') #dylib
self.slcdll = ctypes.CDLL(self.information['dir_path']+'MCI_inputData/refs/libstraylight.so') #dylib
self.slcdll.Calculate.argtypes = [ctypes.c_double, ctypes.POINTER(ctypes.c_double),
ctypes.POINTER(ctypes.c_double), ctypes.POINTER(ctypes.c_double),
......@@ -1003,7 +1003,7 @@ def cal_PSF_new(channel,wfetimes,oversampling):
#waven
# waven=4
# fieldn=10
file='../MCI_inputData/MCI_wavefront/wave_'+str(waven+1)+'/wavefront/opd_'+str(i+1)+'.mat'
file=self.information['dir_path']+'MCI_inputData/MCI_wavefront/wave_'+str(waven+1)+'/wavefront/opd_'+str(i+1)+'.mat'
data=sio.loadmat(file)
opd=data['opd'] ## opd data;
psf[channel][i,:,:]=opd2psf(wfetimes*opd, cwave[channel],oversampling)
......@@ -1031,7 +1031,7 @@ def cal_PSF_new(channel,wfetimes,oversampling):
newd=fits.HDUList([hdu1,hdu2,hdu3])
PSFfilename='../MCI_inputData/PSF/PSF_'+channel+'.fits'
PSFfilename=self.information['dir_path']+'MCI_inputData/PSF/PSF_'+channel+'.fits'
newd.writeto(PSFfilename,overwrite=True)
......@@ -1055,7 +1055,7 @@ def cal_Filter_PSF(wfetimes):
wavelist =np.array([255, 337,419,501,583,665,747,829,911,1000])
filterP=np.load('../MCI_inputData/MCI_filters/mci_filterPWTC.npy',allow_pickle=True).item()
filterP=np.load(self.information['dir_path']+'MCI_inputData/MCI_filters/mci_filterPWTC.npy',allow_pickle=True).item()
fn=np.arange(1,101,1) ### PSF field point
ffx= 0.1+ 0.02222222*((fn-1)%10)
......@@ -1097,7 +1097,7 @@ def cal_Filter_PSF(wfetimes):
#waven
# waven=4
# fieldn=10
file='../MCI_input/MCI_wavefront/wave_'+str(waven+1)+'/wavefront/opd_'+str(ii+1)+'.mat'
file=self.information['dir_path']+'MCI_input/MCI_wavefront/wave_'+str(waven+1)+'/wavefront/opd_'+str(ii+1)+'.mat'
data=sio.loadmat(file)
opd=data['opd'] ## opd data;
for kk in range(7):
......@@ -1111,7 +1111,7 @@ def cal_Filter_PSF(wfetimes):
if ii==0:
psf[filtername]['psf_iwave'][kk]=wavek
np.save('../MCI_inputData/PSF/'+filtername+'_PSF.npy', psf[filtername])
np.save(self.information['dir_path']+'mci_sim_result/'+filtername+'_PSF.npy', psf[filtername])
return
......@@ -1258,10 +1258,10 @@ class MCIsimulator():
self.information['I_filters']=["z", "y", "F815N", "CBI", "F925N", "F960M", "F968N", "F845M" ,"F850LP" ,"F814W"]
#### load telescope efficiency data
self.tel_eff=np.load('../MCI_inputData/tel_eff/tel_eff.npy',allow_pickle=True).item()
self.tel_eff=np.load(self.information['dir_path']+('MCI_inputData/tel_eff/tel_eff.npy',allow_pickle=True).item()
#### load MCI filter data
self.filterP=np.load('../MCI_inputData/MCI_filters/mci_filterPWTC.npy',allow_pickle=True).item()
self.filterP=np.load(self.information['dir_path']+'MCI_inputData/MCI_filters/mci_filterPWTC.npy',allow_pickle=True).item()
###########################################################################
......@@ -1270,10 +1270,25 @@ class MCIsimulator():
result_day=now.strftime("%Y-%m-%d")
#self.result_path='../MCI_simData_'+result_day
if os.getcwd() =='/home/zjyan/work/MCI/simulator':
self.result_path='/data/mci_simData/'+result_day ### CSST1
# if os.getcwd() =='/home/zjyan/work/MCI/simulator':
# self.result_path='/data/mci_simData/'+result_day ### CSST1
# else:
# self.result_path='/home/yan/MCI/simData/'+result_day ### my PC
if self.information['dir_path'] == '/nfsdata/share/simulation-unittest/mci_sim/':
self.result_path = self.information['dir_path'] + \
'mci_sim_result/'+result_day
else:
self.result_path='/home/yan/MCI/simData/'+result_day ### my PC
home_path = os.environ['HOME']
if home_path == '/home/yan':
self.result_path = '../MCI_simData/'+self.source+ss+result_day
else:
self.result_path = '/data/mcisimdata/'+result_day
if os.path.isdir(self.result_path)==False:
os.mkdir(self.result_path)
......@@ -1547,13 +1562,13 @@ class MCIsimulator():
self.filter_psf=dict()
filtername=self.filter_g
self.filter_psf['g']=np.load('../MCI_inputData/PSF/'+filtername+'_PSF.npy', allow_pickle=True).item()
self.filter_psf['g']=np.load(information['dir_path']+'MCI_inputData/PSF/'+filtername+'_PSF.npy', allow_pickle=True).item()
filtername=self.filter_r
self.filter_psf['r']=np.load('../MCI_inputData/PSF/'+filtername+'_PSF.npy', allow_pickle=True).item()
self.filter_psf['r']=np.load(information['dir_path']+'MCI_inputData/PSF/'+filtername+'_PSF.npy', allow_pickle=True).item()
filtername=self.filter_i
self.filter_psf['i']=np.load('../MCI_inputData/PSF/'+filtername+'_PSF.npy', allow_pickle=True).item()
self.filter_psf['i']=np.load(information['dir_path']+'MCI_inputData/PSF/'+filtername+'_PSF.npy', allow_pickle=True).item()
return
......@@ -2388,19 +2403,19 @@ class MCIsimulator():
"""
# read solar template
solar_template = pd.read_csv('../MCI_inputData/refs/solar_spec.dat', sep='\s+',
solar_template = pd.read_csv(information['dir_path']+'MCI_inputData/refs/solar_spec.dat', sep='\s+',
header=None, comment='#')
template_wave = solar_template[0].values
template_flux = solar_template[1].values
# read earth shine surface brightness
earthshine_curve = pd.read_csv('../MCI_inputData/refs/earthshine.dat',
earthshine_curve = pd.read_csv(information['dir_path']+'MCI_inputData/refs/earthshine.dat',
header=None, comment='#')
angle = earthshine_curve[0].values
surface_brightness = earthshine_curve[1].values
# read V-band throughtput
cat_filter_V = pd.read_csv('../MCI_inputData/refs/filter_Bessell_V.dat', sep='\s+',
cat_filter_V = pd.read_csv(information['dir_path']+'MCI_inputData/refs/filter_Bessell_V.dat', sep='\s+',
header=None, comment='#')
filter_wave = cat_filter_V[0].values
filter_response = cat_filter_V[1].values
......@@ -2467,7 +2482,7 @@ class MCIsimulator():
lamda = abs(lb_obj.lon.degree - lb_sun.lon.degree)
# interpolated zodical surface brightness at 0.5 um
zodi = pd.read_csv('../MCI_inputData/refs/zodi_map.dat', sep='\s+', header=None, comment='#')
zodi = pd.read_csv(information['dir_path']+'MCI_inputData/refs/zodi_map.dat', sep='\s+', header=None, comment='#')
beta_angle = np.array([0, 5, 10, 15, 20, 25, 30, 45, 60, 75])
lamda_angle = np.array([0, 5, 10, 15, 20, 25, 30, 35, 40, 45,
60, 75, 90, 105, 120, 135, 150, 165, 180])
......@@ -2476,7 +2491,7 @@ class MCIsimulator():
zodi_obj = f(beta, lamda) # 10^�? W m�? sr�? um�?
# read the zodical spectrum in the ecliptic
cat_spec = pd.read_csv('../MCI_inputData/refs/solar_spec.dat', sep='\s+', header=None, comment='#')
cat_spec = pd.read_csv(information['dir_path']+'MCI_inputData/refs/solar_spec.dat', sep='\s+', header=None, comment='#')
wave = cat_spec[0].values # A
spec0 = cat_spec[1].values # 10^-8 W m^�? sr^�? μm^�?
zodi_norm = 252 # 10^-8 W m^�? sr^�? μm^�?
......@@ -2671,7 +2686,7 @@ class MCIsimulator():
print('k2=',k2)
#
filename='../MCI_inputData/galaxy_Input/noLens_SED_IMG_0.025_230626/Lens_img_cut_IMG_'+str(k2+1)+'.fits'
filename=information['dir_path']+'MCI_inputData/galaxy_Input/Lens_SED_IMG_0.025_230626/Lens_img_cut_IMG_'+str(k2+1)+'.fits'
self.log.info('galaxy_Input image path is: %s' %(filename))
......@@ -2682,7 +2697,7 @@ class MCIsimulator():
srcs_cat=fits.open(filename)
#### load galaxy SED fitsfile ###
filename='../MCI_inputData/galaxy_Input/noLens_SED_IMG_0.025_230626/Lens_img_cut_SED_'+str(k2+1)+'.fits'
filename=information['dir_path']+'MCI_inputData/galaxy_Input/Lens_SED_IMG_0.025_230626/Lens_img_cut_SED_'+str(k2+1)+'.fits'
srcs_sed=fits.open(filename)
self.log.info('galaxy_Input SED path is: %s' %(filename))
......@@ -3322,7 +3337,7 @@ class MCIsimulator():
.. Warning:: This method does not work if the input file has exactly one line.
"""
#######################################################################
cosmetics = np.loadtxt('../MCI_inputData/data/Cosmetics_g.txt')
cosmetics = np.loadtxt(information['dir_path']+'MCI_inputData/data/Cosmetics_g.txt')
x = np.round(cosmetics[:, 0]).astype(int) ## row number
y = np.round(cosmetics[:, 1]).astype(int) ## col number
......@@ -3339,7 +3354,7 @@ class MCIsimulator():
self.log.info('x=%i, y=%i, value=%f' % (xc, yc, val))
######################################################################
#######################################################################
cosmetics = np.loadtxt('../MCI_inputData/data/Cosmetics_r.txt')
cosmetics = np.loadtxt(self.information['dir_path']+'MCI_inputData/data/Cosmetics_r.txt')
x = np.round(cosmetics[:, 0]).astype(int) ## row number
y = np.round(cosmetics[:, 1]).astype(int) ## col number
......@@ -3356,7 +3371,7 @@ class MCIsimulator():
self.log.info('x=%i, y=%i, value=%f' % (xc, yc, val))
##############################################################################
#######################################################################
cosmetics = np.loadtxt('../MCI_inputData/data/Cosmetics_i.txt')
cosmetics = np.loadtxt(self.information['dir_path']+'MCI_inputData/data/Cosmetics_i.txt')
x = np.round(cosmetics[:, 0]).astype(int) ## row number
y = np.round(cosmetics[:, 1]).astype(int) ## col number
......@@ -4000,7 +4015,7 @@ class MCIsimulator():
if self.orbit_pars[-1,0]<t2jd: ## orbit parameters are not in currenct txt file
self.orbit_file_num=self.orbit_file_num+1
fn='../MCI_inputData/TianCe/orbit20160925/'+str(self.orbit_file_num)+'.txt';
fn=self.information['dir_path']+'MCI_inputData/TianCe/orbit20160925/'+str(self.orbit_file_num)+'.txt';
self.orbit_pars=np.loadtxt(fn);
self.orbit_exp_num=0
......@@ -5129,7 +5144,7 @@ class MCIsimulator():
for k in range(1,50,1):
fn='../MCI_inputData/TianCe/orbit20160925/'+str(k)+'.txt';
fn=self.information['dir_path']+'MCI_inputData/TianCe/orbit20160925/'+str(k)+'.txt';
d=np.loadtxt(fn);
for kk in range(len(d[:,0])):
......@@ -5159,7 +5174,7 @@ class MCIsimulator():
else:
fn='../MCI_inputData/TianCe/orbit20160925/'+str(k+1)+'.txt';
fn=self.information['dir_path']+'MCI_inputData/TianCe/orbit20160925/'+str(k+1)+'.txt';
d=np.loadtxt(fn);
self.orbit_pars=d
......
[TEST]
### user should define file path below
inData_path =/home/yan/MCI_sim_Fabu/MCI_inputData
dir_path=mci_sim/MCI_inputData/
result_path =/home/yan/MCI_sim_Fabu/mci_sim_result
result_path=mci_sim/mci_sim_result/
#size of the output image array, xsize is column, ysize is row, xsize = 9216,ysize = 9232
xsize = 1000
ysize = 1000
xsize =9216
ysize =9232
##prescan and overscan , do not change!!!
##overscanx = column, overscany =row
prescan = 27
overscan = 320
###sourcein = XDF, DARK, FLAT, BIAS
sourcein=XDF
##################################################
#### ####
####Control flags (can be yes/no) ####
####Control flags (can be yes/no, true/false) ####
##################################################
cosmicRays = yes
darknoise = yes
cosmetics = yes
radiationDamage= no
radiationDamage= yes
bleeding = yes
......@@ -45,7 +39,7 @@ TianceEffect = yes
intscale = yes
ghosts = yes
ghosts = no
shutterEffect = yes
......@@ -57,12 +51,15 @@ appFatt = no
sky_shift_rot = yes
distortion = no
distortion = yes
sim_star = yes
sim_galaxy = yes
save_starpsf = no
save_cosmicrays = no
##############################################
##############################################
......@@ -76,15 +73,15 @@ dark = 0.001
exptime = 300.0
###PNRU matrix sigma
prnu_sigma=0.001
flatsigma=0.001
### cosmicray coveringFraction
coveringFraction=1.0
coveringFraction=0.1
#offset from the object, note that at the moment this is fixed, but in reality a focal plane position dependent.
ghostOffsetX = 50
ghostOffsetY = 50
ghostOffsetX = 100
ghostOffsetY = 100
ghostRatio = 1e-04
......@@ -95,7 +92,8 @@ treering=0.1
fatter=1.0
difusion=0.1
### the choosen Filters in three CCDs
filter_g=u
filter_r=F555W
......
......@@ -11,12 +11,12 @@ Modified-History:
import unittest
import os
from csst_ifs_sim import csst_ifs_sim
import subprocess
from csst_mci_sim import mci_sim
import sys
class TestDemoFunction(unittest.TestCase):
def test_ifs_sim_1(self):
def test_mci_sim_1(self):
"""
Aim
---
......@@ -32,17 +32,17 @@ class TestDemoFunction(unittest.TestCase):
This case aims to test whether the demo function returns `1` if input is `None`.
"""
# demo function test
dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'ifs_sim/')
dir_path = os.path.join(os.environ['UNIT_TEST_DATA_ROOT'],'mci_sim/')
print(dir_path)
print(sys.version )
###configfile = dir_path+'IFS_inputdata/configData/IFS_sim_C90.config'
configfile = './ifs_data/IFS_sim_C90.config'
configfile = './mci_data/mci_all_9K.config'
sourcein = 'SCI'
print(configfile)
csst_ifs_sim.runIFSsim(sourcein, configfile, dir_path, 1, 'no')
mci_sim.runMCIsim(sourcein, configfile, dir_path, 1)
self.assertEqual(
1 , 1,
"case 1: SCI sim passes.",
......
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