Commit 12488ec1 authored by xin's avatar xin
Browse files

fix bug:spec line shift 3-5 A; add C,D,E order spec and extract spec

parent 7231bb80
''' '''
Author: zx Author: zx
Date: 2021-04-08 13:49:35 Date: 2021-04-08 13:49:35
LastEditTime: 2022-06-28 19:20:23 LastEditTime: 2023-02-24 00:53:19
LastEditors: xin zhangxinbjfu@gmail.com LastEditors: xin zhangxinbjfu@gmail.com
Description: In User Settings Edit Description: In User Settings Edit
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/SpecDisperser/SpecDisperser.py FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/SpecDisperser/SpecDisperser.py
...@@ -150,6 +150,8 @@ class SpecDisperser(object): ...@@ -150,6 +150,8 @@ class SpecDisperser(object):
lam_intep * 1e-10)), integrate=0, left=0, lam_intep * 1e-10)), integrate=0, left=0,
right=0) right=0)
# self.writerSensitivityFile(conffile = self.grating_conf_file, beam = beam, w = lam_beam[lam_index], sens = ysensitivity[lam_index])
ysens[lam_index] = interp.interp_conserve_c(lam_beam[lam_index], lam_intep, bean_thr_spec, integrate=1, left=0, ysens[lam_index] = interp.interp_conserve_c(lam_beam[lam_index], lam_intep, bean_thr_spec, integrate=1, left=0,
right=0) right=0)
...@@ -201,13 +203,19 @@ class SpecDisperser(object): ...@@ -201,13 +203,19 @@ class SpecDisperser(object):
originOut_x = origin_in[1] + dx0_in - 1 originOut_x = origin_in[1] + dx0_in - 1
originOut_y = origin_in[0] + dy0_in - 1 originOut_y = origin_in[0] + dy0_in - 1
return model, originOut_x, originOut_y, dxpix, dypix, lam_beam[lam_index],ysens[lam_index] return model, originOut_x, originOut_y, dxpix, dypix, lam_beam,ysens
def writerSensitivityFile(self, conffile = '', beam = '', w = None, sens = None): # def writerSensitivityFile(self, conffile = '', beam = '', w = None, sens = None):
orders={'A':'1st','B':'0st','C':'2st'} # orders={'A':'1st','B':'0st','C':'2st'}
sens_file_name = conffile[0:-5]+'_sensitivity_'+ orders[beam] + '.fits' # sens_file_name = conffile[0:-5]+'_sensitivity_'+ orders[beam] + '.fits'
# if not os.path.exists(sens_file_name) == True:
# senstivity_out = Table(array([w,sens]).T, names=('WAVELENGTH', 'SENSITIVITY'))
# senstivity_out.write(sens_file_name, format='fits')
def writerSensitivityFile(self, conffile='', beam='', w=None, sens=None):
orders = {'A': '1st', 'B': '0st', 'C': '2st', 'D': '-1st', 'E': '-2st'}
sens_file_name = conffile[0:-5] + '_sensitivity_' + orders[beam] + '.fits'
if not os.path.exists(sens_file_name) == True: if not os.path.exists(sens_file_name) == True:
senstivity_out = Table(array([w,sens]).T, names=('WAVELENGTH', 'SENSITIVITY')) senstivity_out = Table(array([w, sens]).T, names=('WAVELENGTH', 'SENSITIVITY'))
senstivity_out.write(sens_file_name, format='fits') senstivity_out.write(sens_file_name, format='fits')
......
''' '''
Author: zx Author: zx
Date: 2021-04-08 13:49:35 Date: 2021-04-08 13:49:35
LastEditTime: 2022-05-17 09:36:01 LastEditTime: 2023-02-23 23:28:07
LastEditors: xin zhangxinbjfu@gmail.com LastEditors: xin zhangxinbjfu@gmail.com
Description: In User Settings Edit Description: In User Settings Edit
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/simDemo.py FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/simDemo.py
...@@ -13,6 +13,8 @@ class Config(object): ...@@ -13,6 +13,8 @@ class Config(object):
def __init__(self, dataDir = '/data/'): def __init__(self, dataDir = '/data/'):
self.conFiles = {'GU': dataDir + 'conf/CSST_GU2.conf', 'GV': dataDir + 'conf/CSST_GV2.conf', 'GI': dataDir + 'conf/CSST_GI2.conf'} self.conFiles = {'GU': dataDir + 'conf/CSST_GU2.conf', 'GV': dataDir + 'conf/CSST_GV2.conf', 'GI': dataDir + 'conf/CSST_GI2.conf'}
self.thrFisle = {'GU': dataDir + 'conf/GU.Throughput', 'GV': dataDir + 'conf/GV.Throughput', 'GI': dataDir + 'conf/GI.Throughput'} self.thrFisle = {'GU': dataDir + 'conf/GU.Throughput', 'GV': dataDir + 'conf/GV.Throughput', 'GI': dataDir + 'conf/GI.Throughput'}
self.senFisle = {'GU': dataDir + 'conf/CSST_GU.sensitivity', 'GV': dataDir + 'conf/CSST_GV.sensitivity', 'GI': dataDir + 'conf/CSST_GI.sensitivity'} self.senFisle = {'GU': dataDir + 'conf/CSST_GU.sensitivity.', 'GV': dataDir + 'conf/CSST_GV.sensitivity.', 'GI': dataDir + 'conf/CSST_GI.sensitivity.'}
self.orderIDs = {'A': '1st', 'B': '0st', 'C': '2st', 'D': '-1st', 'E': '-2st'} self.orderIDs = {'A': '1st', 'B': '0st', 'C': '2st', 'D': '-1st', 'E': '-2st'}
self.bandRanges = {'GU':[2550, 4000], 'GV': [4000,6200], 'GI': [6200, 10000]} self.bandRanges = {'GU':[2550, 4000], 'GV': [4000,6200], 'GI': [6200, 10000]}
# self.senFisle = {'GU': dataDir + 'conf/CSST_GU_sensitivity_', 'GV': dataDir + 'conf/CSST_GV_sensitivity_', 'GI': dataDir + 'conf/CSST_GI_sensitivity_'}
# self.orderIDs = {'A': '1st', 'B': '0st', 'D': '2st', 'C': '-1st', 'E': '-2st'}
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
''' '''
Author: zx Author: zx
Date: 2021-04-08 13:49:35 Date: 2021-04-08 13:49:35
LastEditTime: 2022-07-05 14:58:42 LastEditTime: 2023-02-24 00:57:20
LastEditors: xin zhangxinbjfu@gmail.com LastEditors: xin zhangxinbjfu@gmail.com
Description: In User Settings Edit Description: In User Settings Edit
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/simDemo.py FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/simDemo.py
...@@ -80,9 +80,15 @@ class SpecGenerator(object): ...@@ -80,9 +80,15 @@ class SpecGenerator(object):
specConfile = self.config.conFiles[self.grating] specConfile = self.config.conFiles[self.grating]
throughput_f = self.config.senFisle[self.grating] + '.' + self.config.orderIDs[self.beam] + '.fits' throughput_f = self.config.senFisle[self.grating] + self.config.orderIDs[self.beam] + '.fits'
sed = self.generateSEDfromFiles(self.sedFile,2000,10000,0.5) sed = self.generateSEDfromFiles(self.sedFile,2500,10000,0.01)
x_nominal = int(np.floor(self.xcenter + 0.5))
y_nominal = int(np.floor(self.ycenter + 0.5))
dx = self.xcenter - x_nominal+0.5
dy = self.ycenter - y_nominal+0.5
offset = galsim.PositionD(dx, dy)
# print(skybg) # print(skybg)
# print(specConfile) # print(specConfile)
...@@ -99,13 +105,17 @@ class SpecGenerator(object): ...@@ -99,13 +105,17 @@ class SpecGenerator(object):
conv_gal = galsim.Convolve([gal_ell,self.psf]) conv_gal = galsim.Convolve([gal_ell,self.psf])
stamp = conv_gal.drawImage(wcs=galsim.PixelScale(self.p_size))*self.t*self.expNum*math.pi*(self.aper/2)*(self.aper/2) stamp = conv_gal.drawImage(wcs=galsim.PixelScale(self.p_size), offset=offset)*self.t*self.expNum*math.pi*(self.aper/2)*(self.aper/2)
stamp.setOrigin(0,0)
origin_star = [y_nominal - (stamp.center.y - stamp.ymin),
x_nominal - (stamp.center.x - stamp.xmin)]
origin_star = [self.ycenter - (stamp.center.y - stamp.ymin), origin_star = [y_nominal - (stamp.center.y - stamp.ymin),
self.xcenter - (stamp.center.x - stamp.xmin)] x_nominal - (stamp.center.x - stamp.xmin)]
sdp = SpecDisperser.SpecDisperser(orig_img=stamp, xcenter=self.xcenter, sdp = SpecDisperser.SpecDisperser(orig_img=stamp, xcenter=x_nominal,
ycenter=self.ycenter, origin=origin_star, ycenter=y_nominal, origin=origin_star,
tar_spec=sed, tar_spec=sed,
conf=specConfile, conf=specConfile,
isAlongY=0) isAlongY=0)
...@@ -151,6 +161,14 @@ class SpecGenerator(object): ...@@ -151,6 +161,14 @@ class SpecGenerator(object):
fluxRatio = pFlux/tFlux fluxRatio = pFlux/tFlux
if fluxRatio>limitfluxratio: if fluxRatio>limitfluxratio:
break break
f1 = spec_orders[self.beam][0][y_cent_pos-i:y_cent_pos+i+1].sum(0)
f2 = spec_orders[self.beam][0].sum(0)
ratio_vec = np.zeros_like(f1)
nozero_flag = f2 != 0
ratio_vec[nozero_flag] = f1[nozero_flag]/f2[nozero_flag]
# ratio_vec = spec_orders[self.beam][0][y_cent_pos-i:y_cent_pos+i+1].sum(0)/spec_orders[self.beam][0].sum(0)
y_range = i y_range = i
# print(y_range, fluxRatio) # print(y_range, fluxRatio)
y_len_pix = 2 * y_range + 1 y_len_pix = 2 * y_range + 1
...@@ -162,19 +180,35 @@ class SpecGenerator(object): ...@@ -162,19 +180,35 @@ class SpecGenerator(object):
wave_flux = np.zeros(wave_pix.shape[0]) wave_flux = np.zeros(wave_pix.shape[0])
err_flux = np.zeros(wave_pix.shape[0]) err_flux = np.zeros(wave_pix.shape[0])
specRangeImg = [] specRangeImg = []
for i in np.arange(1, wave_pix.shape[0] - 1):
w = wave_pix[i] true_center = stamp.center + galsim.PositionD(self.xcenter-x_nominal, self.ycenter-y_nominal)
wavePos_x = true_center.x + wave_pos - wave_pos[0]
wavePos_x_interp = np.arange(int(wavePos_x[0]), int(wavePos_x[-1]))
lam_trace = np.interp(wavePos_x_interp,wavePos_x,wave_pix)
wave_flux = np.zeros(lam_trace.shape[0])
err_flux = np.zeros(lam_trace.shape[0])
for i in np.arange(1, lam_trace.shape[0] - 1):
w = lam_trace[i]
wave2pix_pos=wavePos_x_interp[i]
if (bRange[0] <= w <= bRange[1]): if (bRange[0] <= w <= bRange[1]):
thp_w = thp_i(w) thp_w = thp_i(w)
deltW = np.abs(w - wave_pix[i - 1]) / 2 + np.abs(wave_pix[i + 1] - w) / 2 deltW = np.abs(w - lam_trace[i - 1]) / 2 + np.abs(lam_trace[i + 1] - w) / 2
f = spec_pix[wave_pos[0] - 1 + i] f = spec_pix[wave2pix_pos]
f = f / self.t / thp_w / deltW /self.expNum f_ratio = ratio_vec[wave2pix_pos]
err = err2_pix[wave_pos[0] - 1 + i] if f_ratio==0:
f_ratio=1
f = f / self.t / thp_w / deltW /self.expNum/f_ratio
err = err2_pix[wave2pix_pos]
# err = err/ t / deltW # err = err/ t / deltW
err = np.sqrt(err)/ self.t / deltW/ thp_w /self.expNum err = np.sqrt(err)/ self.t / deltW/ thp_w /self.expNum/f_ratio
specRangeImg.append(wave2pix_pos)
# err = err / thp_w # err = err / thp_w
specRangeImg.append(wave_pos[0] - 1 + i)
else: else:
f = 0 f = 0
err = 0 err = 0
...@@ -191,14 +225,20 @@ class SpecGenerator(object): ...@@ -191,14 +225,20 @@ class SpecGenerator(object):
saturePix[0] = Aimg_cal[ids].shape[0] saturePix[0] = Aimg_cal[ids].shape[0]
saturePix[1] = Aimg_cal.shape[0]*Aimg_cal.shape[1] saturePix[1] = Aimg_cal.shape[0]*Aimg_cal.shape[1]
saturePix[2] = saturePix[0]/saturePix[1] saturePix[2] = saturePix[0]/saturePix[1]
saturePix[3] = fluxRatio saturePix[3] = 1
saturePix[4] = np.amax(Aimg_cal) saturePix[4] = np.amax(Aimg_cal)
saturePix[5] = np.amin(Aimg_cal) saturePix[5] = np.amin(Aimg_cal)
idx = (wave_pix >= bRange[0]-100)
idx1 = (wave_pix[idx] <= bRange[1]+100)
specTab = Table(np.array([wave_pix[idx][idx1], wave_flux[idx][idx1], err_flux[idx][idx1]]).T,names=('WAVELENGTH', 'FLUX','ERR')) idx = (lam_trace >= bRange[0]-100)
idx1 = (lam_trace[idx] <= bRange[1]+100)
w_select = lam_trace[idx][idx1]
f_select = wave_flux[idx][idx1]
e_select = err_flux[idx][idx1]
lam_index = np.argsort(w_select)
specTab = Table(np.array([w_select[lam_index], f_select[lam_index], e_select[lam_index]]).T,names=('WAVELENGTH', 'FLUX','ERR'))
# spec_orig = np.loadtxt(sedFile) # spec_orig = np.loadtxt(sedFile)
...@@ -214,21 +254,43 @@ class SpecGenerator(object): ...@@ -214,21 +254,43 @@ class SpecGenerator(object):
def generateSpec1dforStar(self,limitfluxratio = 0.8): def generateSpec1dforStar(self,limitfluxratio = 0.8):
import matplotlib.pyplot as plt
specConfile = self.config.conFiles[self.grating] specConfile = self.config.conFiles[self.grating]
throughput_f = self.config.senFisle[self.grating] + '.' + self.config.orderIDs[self.beam] + '.fits' throughput_f = self.config.senFisle[self.grating] + self.config.orderIDs[self.beam] + '.fits'
sed = self.generateSEDfromFiles(self.sedFile,2000,10000,0.5) sed = self.generateSEDfromFiles(self.sedFile,2500,10000,0.01)
x_nominal = int(np.floor(self.xcenter + 0.5))
y_nominal = int(np.floor(self.ycenter + 0.5))
dx = self.xcenter - x_nominal+0.5
dy = self.ycenter - y_nominal+0.5
offset = galsim.PositionD(dx, dy)
star = galsim.DeltaFunction()
# star = star.withFlux(tel.pupil_area * exptime)
star = galsim.Convolve(self.psf, star)
stamp = star.drawImage(wcs=galsim.PixelScale(self.p_size), offset=offset,nx=100, ny=100)*self.t*self.expNum*math.pi*(self.aper/2)*(self.aper/2)
stamp.setOrigin(0,0)
# print(stamp.center)
# kk = np.where(stamp.array == np.amax(stamp.array))
# print(kk[0][0], kk[1][0])
# plt.figure()
# plt.imshow(stamp.array)
# ttt = np.sum(stamp.array)
# stamp.array[:,:]=0
# stamp.array[stamp.center.y, stamp.center.x] = ttt
stamp = self.psf.drawImage(wcs=galsim.PixelScale(self.p_size))*self.t*self.expNum*math.pi*(self.aper/2)*(self.aper/2)
origin_star = [self.ycenter - (stamp.center.y - stamp.ymin), # stamp = self.psf.drawImage(wcs=galsim.PixelScale(self.p_size))*self.t*self.expNum*math.pi*(self.aper/2)*(self.aper/2)
self.xcenter - (stamp.center.x - stamp.xmin)]
sdp = SpecDisperser.SpecDisperser(orig_img=stamp, xcenter=self.xcenter, origin_star = [y_nominal - (stamp.center.y - stamp.ymin),
ycenter=self.ycenter, origin=origin_star, x_nominal - (stamp.center.x - stamp.xmin)]
sdp = SpecDisperser.SpecDisperser(orig_img=stamp, xcenter=x_nominal,
ycenter=y_nominal, origin=origin_star,
tar_spec=sed, tar_spec=sed,
conf=specConfile, conf=specConfile,
isAlongY=0) isAlongY=0)
...@@ -274,6 +336,13 @@ class SpecGenerator(object): ...@@ -274,6 +336,13 @@ class SpecGenerator(object):
fluxRatio = pFlux/tFlux fluxRatio = pFlux/tFlux
if fluxRatio>limitfluxratio: if fluxRatio>limitfluxratio:
break break
f1 = spec_orders[self.beam][0][y_cent_pos-i:y_cent_pos+i+1].sum(0)
f2 = spec_orders[self.beam][0].sum(0)
ratio_vec = np.zeros_like(f1)
nozero_flag = f2 != 0
ratio_vec[nozero_flag] = f1[nozero_flag]/f2[nozero_flag]
# ratio_vec = spec_orders[self.beam][0][y_cent_pos-i:y_cent_pos+i+1].sum(0)/spec_orders[self.beam][0].sum(0)
y_range = i y_range = i
# print(y_range, fluxRatio) # print(y_range, fluxRatio)
y_len_pix = 2 * y_range + 1 y_len_pix = 2 * y_range + 1
...@@ -282,23 +351,35 @@ class SpecGenerator(object): ...@@ -282,23 +351,35 @@ class SpecGenerator(object):
err2_pix[i] = sum(Aimg_orig[y_cent_pos-y_range:y_cent_pos+y_range+1, i]) + (self.skybg + self.dark)*self.t * y_len_pix * self.expNum + self.readout*self.readout * y_len_pix * self.expNum err2_pix[i] = sum(Aimg_orig[y_cent_pos-y_range:y_cent_pos+y_range+1, i]) + (self.skybg + self.dark)*self.t * y_len_pix * self.expNum + self.readout*self.readout * y_len_pix * self.expNum
bRange = self.config.bandRanges[self.grating] bRange = self.config.bandRanges[self.grating]
wave_flux = np.zeros(wave_pix.shape[0])
err_flux = np.zeros(wave_pix.shape[0])
specRangeImg = [] specRangeImg = []
for i in np.arange(1, wave_pix.shape[0] - 1): true_center = stamp.center + galsim.PositionD(self.xcenter-x_nominal, self.ycenter-y_nominal)
w = wave_pix[i] wavePos_x = true_center.x + wave_pos - wave_pos[0]
wavePos_x_interp = np.arange(int(wavePos_x[0]), int(wavePos_x[-1]))
lam_trace = np.interp(wavePos_x_interp,wavePos_x,wave_pix)
wave_flux = np.zeros(lam_trace.shape[0])
err_flux = np.zeros(lam_trace.shape[0])
for i in np.arange(1, lam_trace.shape[0] - 1):
w = lam_trace[i]
wave2pix_pos=wavePos_x_interp[i]
if (bRange[0] <= w <= bRange[1]): if (bRange[0] <= w <= bRange[1]):
thp_w = thp_i(w) thp_w = thp_i(w)
deltW = np.abs(w - wave_pix[i - 1]) / 2 + np.abs(wave_pix[i + 1] - w) / 2 deltW = np.abs(w - lam_trace[i - 1]) / 2 + np.abs(lam_trace[i + 1] - w) / 2
f = spec_pix[wave_pos[0] - 1 + i] f = spec_pix[wave2pix_pos]
f = f / self.t / thp_w / deltW /self.expNum f_ratio = ratio_vec[wave2pix_pos]
err = err2_pix[wave_pos[0] - 1 + i] if f_ratio==0:
f_ratio=1
f = f / self.t / thp_w / deltW /self.expNum/f_ratio
err = err2_pix[wave2pix_pos]
# err = err/ t / deltW # err = err/ t / deltW
err = np.sqrt(err)/ self.t / deltW/ thp_w /self.expNum err = np.sqrt(err)/ self.t / deltW/ thp_w /self.expNum/f_ratio
specRangeImg.append(wave_pos[0] - 1 + i) specRangeImg.append(wave2pix_pos)
# err = err / thp_w # err = err / thp_w
else: else:
f = 0 f = 0
...@@ -316,14 +397,19 @@ class SpecGenerator(object): ...@@ -316,14 +397,19 @@ class SpecGenerator(object):
saturePix[0] = Aimg_cal[ids].shape[0] saturePix[0] = Aimg_cal[ids].shape[0]
saturePix[1] = Aimg_cal.shape[0]*Aimg_cal.shape[1] saturePix[1] = Aimg_cal.shape[0]*Aimg_cal.shape[1]
saturePix[2] = saturePix[0]/saturePix[1] saturePix[2] = saturePix[0]/saturePix[1]
saturePix[3] = fluxRatio saturePix[3] = 1
saturePix[4] = np.amax(Aimg_cal) saturePix[4] = np.amax(Aimg_cal)
saturePix[5] = np.amin(Aimg_cal) saturePix[5] = np.amin(Aimg_cal)
idx = (wave_pix >= bRange[0]-100) idx = (lam_trace >= bRange[0]-100)
idx1 = (wave_pix[idx] <= bRange[1]+100) idx1 = (lam_trace[idx] <= bRange[1]+100)
w_select = lam_trace[idx][idx1]
f_select = wave_flux[idx][idx1]
e_select = err_flux[idx][idx1]
lam_index = np.argsort(w_select)
specTab = Table(np.array([wave_pix[idx][idx1], wave_flux[idx][idx1], err_flux[idx][idx1]]).T,names=('WAVELENGTH', 'FLUX','ERR')) specTab = Table(np.array([w_select[lam_index], f_select[lam_index], e_select[lam_index]]).T,names=('WAVELENGTH', 'FLUX','ERR'))
# spec_orig = np.loadtxt(sedFile) # spec_orig = np.loadtxt(sedFile)
......
...@@ -422,12 +422,12 @@ class Example(QMainWindow): ...@@ -422,12 +422,12 @@ class Example(QMainWindow):
g_pa = float(self.gpaText.text()) g_pa = float(self.gpaText.text())
g_q = float(self.gqText.text()) g_q = float(self.gqText.text())
specTab, specImg, img, sutPix=specG.generateSpec1dforGal(s_n = g_sn, re = g_re, pa = g_pa,q_ell = g_q,limitfluxratio=0.8) specTab, specImg, img, sutPix=specG.generateSpec1dforGal(s_n = g_sn, re = g_re, pa = g_pa,q_ell = g_q,limitfluxratio=0.8)
self.outinfo.setText('saturation: 90000 e- , saturation pixel number: %d, total pixel number: %d, saturation ratio: %f, pixel value maximun: %d e-, pixel value minimum: %d e-'%(sutPix[0],sutPix[1],sutPix[2],sutPix[4],sutPix[5])) self.outinfo.setText('saturation: 90000 e- , saturation pixel number: %d, total pixel number: %d, saturation ratio: %f, pixel value maximun: %d e-, pixel value minimum: %d e-'%(sutPix[0],sutPix[1],sutPix[2],sutPix[4],sutPix[5]))
# self.outinfo.adjustSize() # self.outinfo.adjustSize()
spec_orig = np.loadtxt(sedFn) spec_orig = np.loadtxt(sedFn)
self.fig.add_line(specTab['WAVELENGTH'],specTab['FLUX']/sutPix[3], spec_orig[:,0], spec_orig[:,1],specImg, grating) self.fig.add_line(specTab['WAVELENGTH'],specTab['FLUX'], spec_orig[:,0], spec_orig[:,1],specImg, grating)
self.fig.draw() self.fig.draw()
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
This source diff could not be displayed because it is too large. You can view the blob instead.
'''
Author: xin zhangxinbjfu@gmail.com
Date: 2022-08-18 23:13:26
LastEditors: xin zhangxinbjfu@gmail.com
LastEditTime: 2023-02-24 01:05:33
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_1d_sim/sls_1d_gitlab/sls_1d_spec/example/sim_demo1.py
Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
'''
from SpecGen.SpecGenerator import SpecGenerator from SpecGen.SpecGenerator import SpecGenerator
from SpecGen.Config import Config from SpecGen.Config import Config
...@@ -15,9 +23,12 @@ if __name__ == '__main__': ...@@ -15,9 +23,12 @@ if __name__ == '__main__':
config = Config(dataDir = dataDir) config = Config(dataDir = dataDir)
sedFn = dataDir + 'sed/sed_44575.txt' sedFn = dataDir + 'sed/sed_44575.txt'
psf = galsim.Gaussian(fwhm=0.39) psf = galsim.Gaussian(fwhm=0.39)
specG = SpecGenerator(sedFn = sedFn, grating = 'GI', beam = 'A', aper = 2.0, xcenter = 2000,ycenter = 5000, p_size = 0.074, psf = psf, skybg = 0.3, dark = 0.02, readout = 5, t = 150, expNum = 1,config = config) specG = SpecGenerator(sedFn = sedFn, grating = 'GI', beam = 'A', aper = 2.0, xcenter = 2000.,ycenter = 5000., p_size = 0.074, psf = psf, skybg = 0.3, dark = 0.02, readout = 5, t = 150., expNum = 1,config = config)
specTab, specImg, img, satPix=specG.generateSpec1dforStar() specTab, specImg, img, satPix=specG.generateSpec1dforStar()
# specG = SpecGenerator(sedFn = sedFn, grating = 'GI', beam = 'A', aper = 2.0, xcenter = 2000.,ycenter = 5000, p_size = 0.074, psf = psf, skybg = 0.3, dark = 0.02, readout = 5, t = 150., expNum = 1,config = config)
# specTab, specImg, img, satPix=specG.generateSpec1dforGal(s_n = 1.0, re = 0.5, pa = 90,q_ell = 1.0,limitfluxratio=0.8)
fits.writeto("specImg.fits",specImg,overwrite=True) fits.writeto("specImg.fits",specImg,overwrite=True)
fits.writeto("DImg.fits",img,overwrite=True) fits.writeto("DImg.fits",img,overwrite=True)
specTab.write("specTab.fits",overwrite=True) specTab.write("specTab.fits",overwrite=True)
......
python setup.py install python setup.py develop
pip install -e . pip install -e .
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Author: xin zhangxinbjfu@gmail.com Author: xin zhangxinbjfu@gmail.com
Date: 2022-04-29 16:13:01 Date: 2022-04-29 16:13:01
LastEditors: xin zhangxinbjfu@gmail.com LastEditors: xin zhangxinbjfu@gmail.com
LastEditTime: 2022-07-05 15:33:36 LastEditTime: 2023-02-21 16:31:07
FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/setup.py FilePath: /undefined/Users/zhangxin/Work/SlitlessSim/sls_lit_demo/setup.py
Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
''' '''
...@@ -42,10 +42,10 @@ setup( ...@@ -42,10 +42,10 @@ setup(
packages=['SpecDisperser', 'SpecDisperser/disperse_c'], packages=['SpecDisperser', 'SpecDisperser/disperse_c'],
install_requires=[ install_requires=[
'galsim', # 'galsim',
'numpy', # 'numpy',
'scipy', # 'scipy',
'astropy', # 'astropy',
], ],
ext_modules = cythonize(extensions), ext_modules = cythonize(extensions),
......
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