Loading ObservationSim/Instrument/Chip/Chip.py +140 −7 Original line number Original line Diff line number Diff line Loading @@ -529,12 +529,26 @@ class Chip(FocalPlane): print(" Applying Non-Linearity on the Bias image", flush=True) print(" Applying Non-Linearity on the Bias image", flush=True) BiasCombImg = effects.NonLinearity(GSImage=BiasCombImg, beta1=5.e-7, beta2=0) BiasCombImg = effects.NonLinearity(GSImage=BiasCombImg, beta1=5.e-7, beta2=0) ###########################START ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) BiasCombImg = chip_utils.AddPreScan(GSImage=BiasCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) BiasCombImg = chip_utils.formatOutput(GSImage=BiasCombImg) self.nsecy = 1 self.nsecx = 16 ###########################END # Apply Bad lines # Apply Bad lines if config["ins_effects"]["add_badcolumns"] == True: if config["ins_effects"]["add_badcolumns"] == True: BiasCombImg = effects.BadColumns(BiasCombImg-float(self.bias_level)+5, seed=SeedBadColumns, chipid=self.chipID, logger=self.logger) + float(self.bias_level)-5 BiasCombImg = effects.BadColumns(BiasCombImg-float(self.bias_level)+5, seed=SeedBadColumns, chipid=self.chipID, logger=self.logger) + float(self.bias_level)-5 BiasCombImg, self.gain_channel = effects.ApplyGainNonUniform16(BiasCombImg, gain=self.gain, BiasCombImg, self.gain_channel = effects.ApplyGainNonUniform16(BiasCombImg, gain=self.gain, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedGainNonuni+self.chipID, seed=SeedGainNonuni+self.chipID, logger=self.logger) logger=self.logger) # BiasCombImg = effects.AddOverscan( # BiasCombImg = effects.AddOverscan( Loading Loading @@ -606,8 +620,61 @@ class Chip(FocalPlane): print(" Applying Non-Linearity on the Flat image", flush=True) print(" Applying Non-Linearity on the Flat image", flush=True) FlatCombImg = effects.NonLinearity(GSImage=FlatCombImg, beta1=5.e-7, beta2=0) FlatCombImg = effects.NonLinearity(GSImage=FlatCombImg, beta1=5.e-7, beta2=0) ###if config["ins_effects"]["cte_trail"] == True: ### FlatCombImg = effects.CTE_Effect(GSImage=FlatCombImg, threshold=3) ###########################START pre1 = self.prescan_x #27 over1= self.overscan_x #71 pre2 = self.prescan_y #0 #4 over2= self.overscan_y #84 #80 if config["ins_effects"]["cte_trail"] == True: if config["ins_effects"]["cte_trail"] == True: FlatCombImg = effects.CTE_Effect(GSImage=FlatCombImg, threshold=3) chip_utils.log_info(msg=" Apply CTE Effect", logger=self.logger) ###img = effects.CTE_Effect(GSImage=img, threshold=27) ###CTI_modeling ### 2*8 -> 1*16 img-layout FlatCombImg = chip_utils.formatOutput(GSImage=FlatCombImg) self.nsecy = 1 self.nsecx = 16 img_arr = FlatCombImg.array ny, nx = img_arr.shape dx = int(nx/self.nsecx) dy = int(ny/self.nsecy) newimg = galsim.Image(nx, int(ny+over2), init_value=0) for ichannel in range(16): print('\n***add CTI effects: pointing-{:} chip-{:} channel-{:}***'.format(pointing_ID, self.chipID, ichannel+1)) #nx,ny,noverscan,nsp,nmax = 4608,4616,84,3,10 noverscan,nsp,nmax = over2,3,10 beta,w,c = 0.478,84700,0 t = np.array([0.74,7.7,37],dtype=np.float32) rho_trap = np.array([0.6,1.6,1.4],dtype=np.float32) trap_seeds = np.array([0,1000,10000],dtype=np.int32) + ichannel + self.chipID*16 release_seed = 50 + ichannel + pointing_ID*30 + self.chipID*16 newimg.array[:, 0+ichannel*dx:dx+ichannel*dx] = CTI_sim(img_arr[:, 0+ichannel*dx:dx+ichannel*dx],dx,dy,noverscan,nsp,nmax,beta,w,c,t,rho_trap,trap_seeds,release_seed) newimg.wcs = FlatCombImg.wcs del FlatCombImg FlatCombImg = newimg ### 1*16 -> 2*8 img-layout img = chip_utils.formatRevert(GSImage=FlatCombImg) self.nsecy = 2 self.nsecx = 8 ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) if config["ins_effects"]["cte_trail"] == False: FlatCombImg = chip_utils.AddPreScan(GSImage=FlatCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) if config["ins_effects"]["cte_trail"] == True: FlatCombImg = chip_utils.AddPreScan(GSImage=FlatCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=0) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) FlatCombImg = chip_utils.formatOutput(GSImage=FlatCombImg) self.nsecy = 1 self.nsecx = 16 ###########################END # Add Hot Pixels or/and Dead Pixels # Add Hot Pixels or/and Dead Pixels rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) Loading @@ -627,7 +694,7 @@ class Chip(FocalPlane): # img += float(config["ins_effects"]["bias_level"]) # img += float(config["ins_effects"]["bias_level"]) FlatCombImg = effects.AddBiasNonUniform16(FlatCombImg, FlatCombImg = effects.AddBiasNonUniform16(FlatCombImg, bias_level=biaslevel, bias_level=biaslevel, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedBiasNonuni+self.chipID, seed=SeedBiasNonuni+self.chipID, logger=self.logger) logger=self.logger) Loading @@ -639,7 +706,7 @@ class Chip(FocalPlane): FlatCombImg.addNoise(readout_noise) FlatCombImg.addNoise(readout_noise) FlatCombImg, self.gain_channel = effects.ApplyGainNonUniform16(FlatCombImg, gain=self.gain, FlatCombImg, self.gain_channel = effects.ApplyGainNonUniform16(FlatCombImg, gain=self.gain, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedGainNonuni+self.chipID, seed=SeedGainNonuni+self.chipID, logger=self.logger) logger=self.logger) # FlatCombImg = effects.AddOverscan(FlatCombImg, overscan=overscan, gain=self.gain, widthl=27, widthr=27, widtht=8, widthb=8) # FlatCombImg = effects.AddOverscan(FlatCombImg, overscan=overscan, gain=self.gain, widthl=27, widthr=27, widtht=8, widthb=8) Loading Loading @@ -702,6 +769,19 @@ class Chip(FocalPlane): cr_map[cr_map < 0] = 0 cr_map[cr_map < 0] = 0 crmap_gsimg = galsim.Image(cr_map, dtype=np.uint16) crmap_gsimg = galsim.Image(cr_map, dtype=np.uint16) del cr_map del cr_map ###########################START ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) crmap_gsimg = chip_utils.AddPreScan(GSImage=crmap_gsimg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) crmap_gsimg = chip_utils.formatOutput(GSImage=crmap_gsimg) self.nsecy = 1 self.nsecx = 16 ###########################END chip_utils.outputCal( chip_utils.outputCal( chip=self, chip=self, img=crmap_gsimg, img=crmap_gsimg, Loading @@ -725,8 +805,61 @@ class Chip(FocalPlane): print(" Applying Non-Linearity on the Dark image", flush=True) print(" Applying Non-Linearity on the Dark image", flush=True) DarkCombImg = effects.NonLinearity(GSImage=DarkCombImg, beta1=5.e-7, beta2=0) DarkCombImg = effects.NonLinearity(GSImage=DarkCombImg, beta1=5.e-7, beta2=0) ###if config["ins_effects"]["cte_trail"] == True: ### DarkCombImg = effects.CTE_Effect(GSImage=DarkCombImg, threshold=3) ###########################START pre1 = self.prescan_x #27 over1= self.overscan_x #71 pre2 = self.prescan_y #0 #4 over2= self.overscan_y #84 #80 if config["ins_effects"]["cte_trail"] == True: chip_utils.log_info(msg=" Apply CTE Effect", logger=self.logger) ###img = effects.CTE_Effect(GSImage=img, threshold=27) ###CTI_modeling ### 2*8 -> 1*16 img-layout DarkCombImg = chip_utils.formatOutput(GSImage=DarkCombImg) self.nsecy = 1 self.nsecx = 16 img_arr = DarkCombImg.array ny, nx = img_arr.shape dx = int(nx/self.nsecx) dy = int(ny/self.nsecy) newimg = galsim.Image(nx, int(ny+over2), init_value=0) for ichannel in range(16): print('\n***add CTI effects: pointing-{:} chip-{:} channel-{:}***'.format(pointing_ID, self.chipID, ichannel+1)) #nx,ny,noverscan,nsp,nmax = 4608,4616,84,3,10 noverscan,nsp,nmax = over2,3,10 beta,w,c = 0.478,84700,0 t = np.array([0.74,7.7,37],dtype=np.float32) rho_trap = np.array([0.6,1.6,1.4],dtype=np.float32) trap_seeds = np.array([0,1000,10000],dtype=np.int32) + ichannel + self.chipID*16 release_seed = 50 + ichannel + pointing_ID*30 + self.chipID*16 newimg.array[:, 0+ichannel*dx:dx+ichannel*dx] = CTI_sim(img_arr[:, 0+ichannel*dx:dx+ichannel*dx],dx,dy,noverscan,nsp,nmax,beta,w,c,t,rho_trap,trap_seeds,release_seed) newimg.wcs = DarkCombImg.wcs del DarkCombImg DarkCombImg = newimg ### 1*16 -> 2*8 img-layout DarkCombImg = chip_utils.formatRevert(GSImage=DarkCombImg) self.nsecy = 2 self.nsecx = 8 ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) if config["ins_effects"]["cte_trail"] == False: DarkCombImg = chip_utils.AddPreScan(GSImage=DarkCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) if config["ins_effects"]["cte_trail"] == True: if config["ins_effects"]["cte_trail"] == True: DarkCombImg = effects.CTE_Effect(GSImage=DarkCombImg, threshold=3) DarkCombImg = chip_utils.AddPreScan(GSImage=DarkCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=0) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) DarkCombImg = chip_utils.formatOutput(GSImage=DarkCombImg) self.nsecy = 1 self.nsecx = 16 ###########################END # Add Hot Pixels or/and Dead Pixels # Add Hot Pixels or/and Dead Pixels rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) Loading @@ -746,7 +879,7 @@ class Chip(FocalPlane): # img += float(config["ins_effects"]["bias_level"]) # img += float(config["ins_effects"]["bias_level"]) DarkCombImg = effects.AddBiasNonUniform16(DarkCombImg, DarkCombImg = effects.AddBiasNonUniform16(DarkCombImg, bias_level=biaslevel, bias_level=biaslevel, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedBiasNonuni+self.chipID, seed=SeedBiasNonuni+self.chipID, logger=self.logger) logger=self.logger) Loading @@ -759,7 +892,7 @@ class Chip(FocalPlane): DarkCombImg, self.gain_channel = effects.ApplyGainNonUniform16( DarkCombImg, self.gain_channel = effects.ApplyGainNonUniform16( DarkCombImg, gain=self.gain, DarkCombImg, gain=self.gain, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedGainNonuni+self.chipID, seed=SeedGainNonuni+self.chipID, logger=self.logger) logger=self.logger) # DarkCombImg = effects.AddOverscan( # DarkCombImg = effects.AddOverscan( Loading config/config_C6_dev.yaml +12 −12 Original line number Original line Diff line number Diff line Loading @@ -9,15 +9,15 @@ # Base diretories and naming setup # Base diretories and naming setup # Can add some of the command-line arguments here as well; # Can add some of the command-line arguments here as well; # OK to pass either way or both, as long as they are consistent # OK to pass either way or both, as long as they are consistent work_dir: "/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_new_sim/csst-simulation/" work_dir: "/share/simudata/CSSOSDataProductsSims/data/CSSTSimImage_C8/" data_dir: "/Volumes/EAGET/C6_data/inputData/" data_dir: "/share/simudata/CSSOSDataProductsSims/data/" run_name: "C6_new_sim_2sq_run1" run_name: "testRun_cal" project_cycle: 6 project_cycle: 6 run_counter: 1 run_counter: 1 # Whether to use MPI # Whether to use MPI run_option: run_option: use_mpi: NO use_mpi: YES # NOTE: "n_threads" paramters is currently not used in the backend # NOTE: "n_threads" paramters is currently not used in the backend # simulation codes. It should be implemented later in the web frontend # simulation codes. It should be implemented later in the web frontend # in order to config the number of threads to request from NAOC cluster # in order to config the number of threads to request from NAOC cluster Loading Loading @@ -67,7 +67,7 @@ obs_setting: # "FGS": simulate FGS chips only (31-42) # "FGS": simulate FGS chips only (31-42) # "All": simulate full focal plane # "All": simulate full focal plane # "CALIBRATION": falt, bias, dark with or without postflash # "CALIBRATION": falt, bias, dark with or without postflash survey_type: "CALIBRATION" survey_type: "Photometric" #"LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null #"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', #'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' #'LED8': '760', 'LED9': '940', 'LED10': '940', 'LED11': '1050', 'LED12': '1050','LED13': '340', 'LED14': '365' Loading Loading @@ -95,11 +95,11 @@ obs_setting: # if you just want to run default pointing: # if you just want to run default pointing: # - pointing_dir: null # - pointing_dir: null # - pointing_file: null # - pointing_file: null pointing_dir: "/Volumes/EAGET/C6_data/inputData/" pointing_dir: "/share/simudata/CSSOSDataProductsSims/data/" pointing_file: "pointing_radec_246.5_40.dat" pointing_file: "pointing_radec_246.5_40.dat" # Number of calibration pointings # Number of calibration pointings np_cal: 0 np_cal: 3 # Run specific pointing(s): # Run specific pointing(s): # - give a list of indexes of pointings: [ip_1, ip_2...] # - give a list of indexes of pointings: [ip_1, ip_2...] Loading @@ -111,10 +111,10 @@ obs_setting: # - give a list of indexes of chips: [ip_1, ip_2...] # - give a list of indexes of chips: [ip_1, ip_2...] # - run all chips: null # - run all chips: null # Note: for all pointings # Note: for all pointings run_chips: [5] run_chips: null # Whether to enable astrometric modeling # Whether to enable astrometric modeling enable_astrometric_model: False enable_astrometric_model: True # Whether to enable straylight model # Whether to enable straylight model enable_straylight_model: True enable_straylight_model: True Loading @@ -137,7 +137,7 @@ psf_setting: # Which PSF model to use: # Which PSF model to use: # "Gauss": simple gaussian profile # "Gauss": simple gaussian profile # "Interp": Interpolated PSF from sampled ray-tracing data # "Interp": Interpolated PSF from sampled ray-tracing data psf_model: "Gauss" psf_model: "Interp" # PSF size [arcseconds] # PSF size [arcseconds] # radius of 80% energy encircled # radius of 80% energy encircled Loading Loading @@ -169,12 +169,12 @@ ins_effects: # switches # switches # Note: bias_16channel, gain_16channel, and shutter_effect # Note: bias_16channel, gain_16channel, and shutter_effect # is currently not applicable to "FGS" observations # is currently not applicable to "FGS" observations field_dist: NO # Whether to add field distortions field_dist: YES # Whether to add field distortions add_back: YES # Whether to add sky background add_back: YES # Whether to add sky background add_dark: YES # Whether to add dark noise add_dark: YES # Whether to add dark noise add_readout: YES # 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 add_bias: YES # Whether to add bias-level to images add_prescan: OFF add_prescan: YES bias_16channel: YES # Whether to add different biases for 16 channels bias_16channel: YES # Whether to add different biases for 16 channels gain_16channel: YES # Whether to make different gains for 16 channels gain_16channel: YES # Whether to make different gains for 16 channels shutter_effect: YES # Whether to add shutter effect shutter_effect: YES # Whether to add shutter effect Loading Loading
ObservationSim/Instrument/Chip/Chip.py +140 −7 Original line number Original line Diff line number Diff line Loading @@ -529,12 +529,26 @@ class Chip(FocalPlane): print(" Applying Non-Linearity on the Bias image", flush=True) print(" Applying Non-Linearity on the Bias image", flush=True) BiasCombImg = effects.NonLinearity(GSImage=BiasCombImg, beta1=5.e-7, beta2=0) BiasCombImg = effects.NonLinearity(GSImage=BiasCombImg, beta1=5.e-7, beta2=0) ###########################START ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) BiasCombImg = chip_utils.AddPreScan(GSImage=BiasCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) BiasCombImg = chip_utils.formatOutput(GSImage=BiasCombImg) self.nsecy = 1 self.nsecx = 16 ###########################END # Apply Bad lines # Apply Bad lines if config["ins_effects"]["add_badcolumns"] == True: if config["ins_effects"]["add_badcolumns"] == True: BiasCombImg = effects.BadColumns(BiasCombImg-float(self.bias_level)+5, seed=SeedBadColumns, chipid=self.chipID, logger=self.logger) + float(self.bias_level)-5 BiasCombImg = effects.BadColumns(BiasCombImg-float(self.bias_level)+5, seed=SeedBadColumns, chipid=self.chipID, logger=self.logger) + float(self.bias_level)-5 BiasCombImg, self.gain_channel = effects.ApplyGainNonUniform16(BiasCombImg, gain=self.gain, BiasCombImg, self.gain_channel = effects.ApplyGainNonUniform16(BiasCombImg, gain=self.gain, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedGainNonuni+self.chipID, seed=SeedGainNonuni+self.chipID, logger=self.logger) logger=self.logger) # BiasCombImg = effects.AddOverscan( # BiasCombImg = effects.AddOverscan( Loading Loading @@ -606,8 +620,61 @@ class Chip(FocalPlane): print(" Applying Non-Linearity on the Flat image", flush=True) print(" Applying Non-Linearity on the Flat image", flush=True) FlatCombImg = effects.NonLinearity(GSImage=FlatCombImg, beta1=5.e-7, beta2=0) FlatCombImg = effects.NonLinearity(GSImage=FlatCombImg, beta1=5.e-7, beta2=0) ###if config["ins_effects"]["cte_trail"] == True: ### FlatCombImg = effects.CTE_Effect(GSImage=FlatCombImg, threshold=3) ###########################START pre1 = self.prescan_x #27 over1= self.overscan_x #71 pre2 = self.prescan_y #0 #4 over2= self.overscan_y #84 #80 if config["ins_effects"]["cte_trail"] == True: if config["ins_effects"]["cte_trail"] == True: FlatCombImg = effects.CTE_Effect(GSImage=FlatCombImg, threshold=3) chip_utils.log_info(msg=" Apply CTE Effect", logger=self.logger) ###img = effects.CTE_Effect(GSImage=img, threshold=27) ###CTI_modeling ### 2*8 -> 1*16 img-layout FlatCombImg = chip_utils.formatOutput(GSImage=FlatCombImg) self.nsecy = 1 self.nsecx = 16 img_arr = FlatCombImg.array ny, nx = img_arr.shape dx = int(nx/self.nsecx) dy = int(ny/self.nsecy) newimg = galsim.Image(nx, int(ny+over2), init_value=0) for ichannel in range(16): print('\n***add CTI effects: pointing-{:} chip-{:} channel-{:}***'.format(pointing_ID, self.chipID, ichannel+1)) #nx,ny,noverscan,nsp,nmax = 4608,4616,84,3,10 noverscan,nsp,nmax = over2,3,10 beta,w,c = 0.478,84700,0 t = np.array([0.74,7.7,37],dtype=np.float32) rho_trap = np.array([0.6,1.6,1.4],dtype=np.float32) trap_seeds = np.array([0,1000,10000],dtype=np.int32) + ichannel + self.chipID*16 release_seed = 50 + ichannel + pointing_ID*30 + self.chipID*16 newimg.array[:, 0+ichannel*dx:dx+ichannel*dx] = CTI_sim(img_arr[:, 0+ichannel*dx:dx+ichannel*dx],dx,dy,noverscan,nsp,nmax,beta,w,c,t,rho_trap,trap_seeds,release_seed) newimg.wcs = FlatCombImg.wcs del FlatCombImg FlatCombImg = newimg ### 1*16 -> 2*8 img-layout img = chip_utils.formatRevert(GSImage=FlatCombImg) self.nsecy = 2 self.nsecx = 8 ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) if config["ins_effects"]["cte_trail"] == False: FlatCombImg = chip_utils.AddPreScan(GSImage=FlatCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) if config["ins_effects"]["cte_trail"] == True: FlatCombImg = chip_utils.AddPreScan(GSImage=FlatCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=0) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) FlatCombImg = chip_utils.formatOutput(GSImage=FlatCombImg) self.nsecy = 1 self.nsecx = 16 ###########################END # Add Hot Pixels or/and Dead Pixels # Add Hot Pixels or/and Dead Pixels rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) Loading @@ -627,7 +694,7 @@ class Chip(FocalPlane): # img += float(config["ins_effects"]["bias_level"]) # img += float(config["ins_effects"]["bias_level"]) FlatCombImg = effects.AddBiasNonUniform16(FlatCombImg, FlatCombImg = effects.AddBiasNonUniform16(FlatCombImg, bias_level=biaslevel, bias_level=biaslevel, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedBiasNonuni+self.chipID, seed=SeedBiasNonuni+self.chipID, logger=self.logger) logger=self.logger) Loading @@ -639,7 +706,7 @@ class Chip(FocalPlane): FlatCombImg.addNoise(readout_noise) FlatCombImg.addNoise(readout_noise) FlatCombImg, self.gain_channel = effects.ApplyGainNonUniform16(FlatCombImg, gain=self.gain, FlatCombImg, self.gain_channel = effects.ApplyGainNonUniform16(FlatCombImg, gain=self.gain, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedGainNonuni+self.chipID, seed=SeedGainNonuni+self.chipID, logger=self.logger) logger=self.logger) # FlatCombImg = effects.AddOverscan(FlatCombImg, overscan=overscan, gain=self.gain, widthl=27, widthr=27, widtht=8, widthb=8) # FlatCombImg = effects.AddOverscan(FlatCombImg, overscan=overscan, gain=self.gain, widthl=27, widthr=27, widtht=8, widthb=8) Loading Loading @@ -702,6 +769,19 @@ class Chip(FocalPlane): cr_map[cr_map < 0] = 0 cr_map[cr_map < 0] = 0 crmap_gsimg = galsim.Image(cr_map, dtype=np.uint16) crmap_gsimg = galsim.Image(cr_map, dtype=np.uint16) del cr_map del cr_map ###########################START ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) crmap_gsimg = chip_utils.AddPreScan(GSImage=crmap_gsimg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) crmap_gsimg = chip_utils.formatOutput(GSImage=crmap_gsimg) self.nsecy = 1 self.nsecx = 16 ###########################END chip_utils.outputCal( chip_utils.outputCal( chip=self, chip=self, img=crmap_gsimg, img=crmap_gsimg, Loading @@ -725,8 +805,61 @@ class Chip(FocalPlane): print(" Applying Non-Linearity on the Dark image", flush=True) print(" Applying Non-Linearity on the Dark image", flush=True) DarkCombImg = effects.NonLinearity(GSImage=DarkCombImg, beta1=5.e-7, beta2=0) DarkCombImg = effects.NonLinearity(GSImage=DarkCombImg, beta1=5.e-7, beta2=0) ###if config["ins_effects"]["cte_trail"] == True: ### DarkCombImg = effects.CTE_Effect(GSImage=DarkCombImg, threshold=3) ###########################START pre1 = self.prescan_x #27 over1= self.overscan_x #71 pre2 = self.prescan_y #0 #4 over2= self.overscan_y #84 #80 if config["ins_effects"]["cte_trail"] == True: chip_utils.log_info(msg=" Apply CTE Effect", logger=self.logger) ###img = effects.CTE_Effect(GSImage=img, threshold=27) ###CTI_modeling ### 2*8 -> 1*16 img-layout DarkCombImg = chip_utils.formatOutput(GSImage=DarkCombImg) self.nsecy = 1 self.nsecx = 16 img_arr = DarkCombImg.array ny, nx = img_arr.shape dx = int(nx/self.nsecx) dy = int(ny/self.nsecy) newimg = galsim.Image(nx, int(ny+over2), init_value=0) for ichannel in range(16): print('\n***add CTI effects: pointing-{:} chip-{:} channel-{:}***'.format(pointing_ID, self.chipID, ichannel+1)) #nx,ny,noverscan,nsp,nmax = 4608,4616,84,3,10 noverscan,nsp,nmax = over2,3,10 beta,w,c = 0.478,84700,0 t = np.array([0.74,7.7,37],dtype=np.float32) rho_trap = np.array([0.6,1.6,1.4],dtype=np.float32) trap_seeds = np.array([0,1000,10000],dtype=np.int32) + ichannel + self.chipID*16 release_seed = 50 + ichannel + pointing_ID*30 + self.chipID*16 newimg.array[:, 0+ichannel*dx:dx+ichannel*dx] = CTI_sim(img_arr[:, 0+ichannel*dx:dx+ichannel*dx],dx,dy,noverscan,nsp,nmax,beta,w,c,t,rho_trap,trap_seeds,release_seed) newimg.wcs = DarkCombImg.wcs del DarkCombImg DarkCombImg = newimg ### 1*16 -> 2*8 img-layout DarkCombImg = chip_utils.formatRevert(GSImage=DarkCombImg) self.nsecy = 2 self.nsecx = 8 ### prescan & overscan if config["ins_effects"]["add_prescan"] == True: chip_utils.log_info(msg=" Apply pre/over-scan", logger=self.logger) if config["ins_effects"]["cte_trail"] == False: DarkCombImg = chip_utils.AddPreScan(GSImage=DarkCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=over2) if config["ins_effects"]["cte_trail"] == True: if config["ins_effects"]["cte_trail"] == True: DarkCombImg = effects.CTE_Effect(GSImage=DarkCombImg, threshold=3) DarkCombImg = chip_utils.AddPreScan(GSImage=DarkCombImg, pre1=pre1, pre2=pre2, over1=over1, over2=0) ### 1*16 output if config["ins_effects"]["format_output"] == True: chip_utils.log_info(msg=" Apply 1*16 format", logger=self.logger) DarkCombImg = chip_utils.formatOutput(GSImage=DarkCombImg) self.nsecy = 1 self.nsecx = 16 ###########################END # Add Hot Pixels or/and Dead Pixels # Add Hot Pixels or/and Dead Pixels rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) rgbadpix = Generator(PCG64(int(SeedDefective+self.chipID))) Loading @@ -746,7 +879,7 @@ class Chip(FocalPlane): # img += float(config["ins_effects"]["bias_level"]) # img += float(config["ins_effects"]["bias_level"]) DarkCombImg = effects.AddBiasNonUniform16(DarkCombImg, DarkCombImg = effects.AddBiasNonUniform16(DarkCombImg, bias_level=biaslevel, bias_level=biaslevel, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedBiasNonuni+self.chipID, seed=SeedBiasNonuni+self.chipID, logger=self.logger) logger=self.logger) Loading @@ -759,7 +892,7 @@ class Chip(FocalPlane): DarkCombImg, self.gain_channel = effects.ApplyGainNonUniform16( DarkCombImg, self.gain_channel = effects.ApplyGainNonUniform16( DarkCombImg, gain=self.gain, DarkCombImg, gain=self.gain, nsecy = 2, nsecx=8, nsecy = self.nsecy, nsecx=self.nsecx, seed=SeedGainNonuni+self.chipID, seed=SeedGainNonuni+self.chipID, logger=self.logger) logger=self.logger) # DarkCombImg = effects.AddOverscan( # DarkCombImg = effects.AddOverscan( Loading
config/config_C6_dev.yaml +12 −12 Original line number Original line Diff line number Diff line Loading @@ -9,15 +9,15 @@ # Base diretories and naming setup # Base diretories and naming setup # Can add some of the command-line arguments here as well; # Can add some of the command-line arguments here as well; # OK to pass either way or both, as long as they are consistent # OK to pass either way or both, as long as they are consistent work_dir: "/Users/zhangxin/Work/SlitlessSim/CSST_SIM/CSST_new_sim/csst-simulation/" work_dir: "/share/simudata/CSSOSDataProductsSims/data/CSSTSimImage_C8/" data_dir: "/Volumes/EAGET/C6_data/inputData/" data_dir: "/share/simudata/CSSOSDataProductsSims/data/" run_name: "C6_new_sim_2sq_run1" run_name: "testRun_cal" project_cycle: 6 project_cycle: 6 run_counter: 1 run_counter: 1 # Whether to use MPI # Whether to use MPI run_option: run_option: use_mpi: NO use_mpi: YES # NOTE: "n_threads" paramters is currently not used in the backend # NOTE: "n_threads" paramters is currently not used in the backend # simulation codes. It should be implemented later in the web frontend # simulation codes. It should be implemented later in the web frontend # in order to config the number of threads to request from NAOC cluster # in order to config the number of threads to request from NAOC cluster Loading Loading @@ -67,7 +67,7 @@ obs_setting: # "FGS": simulate FGS chips only (31-42) # "FGS": simulate FGS chips only (31-42) # "All": simulate full focal plane # "All": simulate full focal plane # "CALIBRATION": falt, bias, dark with or without postflash # "CALIBRATION": falt, bias, dark with or without postflash survey_type: "CALIBRATION" survey_type: "Photometric" #"LED": ['LED1','LED2','LED3','LED4','LED5','LED6','LED7','LED8','LED9','LED10','LED11','LED12','LED13','LED14'] or null #"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', #'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' #'LED8': '760', 'LED9': '940', 'LED10': '940', 'LED11': '1050', 'LED12': '1050','LED13': '340', 'LED14': '365' Loading Loading @@ -95,11 +95,11 @@ obs_setting: # if you just want to run default pointing: # if you just want to run default pointing: # - pointing_dir: null # - pointing_dir: null # - pointing_file: null # - pointing_file: null pointing_dir: "/Volumes/EAGET/C6_data/inputData/" pointing_dir: "/share/simudata/CSSOSDataProductsSims/data/" pointing_file: "pointing_radec_246.5_40.dat" pointing_file: "pointing_radec_246.5_40.dat" # Number of calibration pointings # Number of calibration pointings np_cal: 0 np_cal: 3 # Run specific pointing(s): # Run specific pointing(s): # - give a list of indexes of pointings: [ip_1, ip_2...] # - give a list of indexes of pointings: [ip_1, ip_2...] Loading @@ -111,10 +111,10 @@ obs_setting: # - give a list of indexes of chips: [ip_1, ip_2...] # - give a list of indexes of chips: [ip_1, ip_2...] # - run all chips: null # - run all chips: null # Note: for all pointings # Note: for all pointings run_chips: [5] run_chips: null # Whether to enable astrometric modeling # Whether to enable astrometric modeling enable_astrometric_model: False enable_astrometric_model: True # Whether to enable straylight model # Whether to enable straylight model enable_straylight_model: True enable_straylight_model: True Loading @@ -137,7 +137,7 @@ psf_setting: # Which PSF model to use: # Which PSF model to use: # "Gauss": simple gaussian profile # "Gauss": simple gaussian profile # "Interp": Interpolated PSF from sampled ray-tracing data # "Interp": Interpolated PSF from sampled ray-tracing data psf_model: "Gauss" psf_model: "Interp" # PSF size [arcseconds] # PSF size [arcseconds] # radius of 80% energy encircled # radius of 80% energy encircled Loading Loading @@ -169,12 +169,12 @@ ins_effects: # switches # switches # Note: bias_16channel, gain_16channel, and shutter_effect # Note: bias_16channel, gain_16channel, and shutter_effect # is currently not applicable to "FGS" observations # is currently not applicable to "FGS" observations field_dist: NO # Whether to add field distortions field_dist: YES # Whether to add field distortions add_back: YES # Whether to add sky background add_back: YES # Whether to add sky background add_dark: YES # Whether to add dark noise add_dark: YES # Whether to add dark noise add_readout: YES # 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 add_bias: YES # Whether to add bias-level to images add_prescan: OFF add_prescan: YES bias_16channel: YES # Whether to add different biases for 16 channels bias_16channel: YES # Whether to add different biases for 16 channels gain_16channel: YES # Whether to make different gains for 16 channels gain_16channel: YES # Whether to make different gains for 16 channels shutter_effect: YES # Whether to add shutter effect shutter_effect: YES # Whether to add shutter effect Loading