From 0ca58f1dc2437d2a2e205d0cfca7f86499ecda5a Mon Sep 17 00:00:00 2001 From: yuedong Date: Wed, 25 May 2022 13:45:42 +0800 Subject: [PATCH] add options to switch off difference in bias/gain of 16 channels --- ObservationSim/Instrument/Chip/Chip.py | 28 ++-- config/config_NGP_dev.yaml | 218 +++++++++++++++++++++++++ run_sim.py | 6 + 3 files changed, 241 insertions(+), 11 deletions(-) create mode 100644 config/config_NGP_dev.yaml diff --git a/ObservationSim/Instrument/Chip/Chip.py b/ObservationSim/Instrument/Chip/Chip.py index ecda623..aeeda18 100755 --- a/ObservationSim/Instrument/Chip/Chip.py +++ b/ObservationSim/Instrument/Chip/Chip.py @@ -440,11 +440,14 @@ class Chip(FocalPlane): self.logger.info(" Adding Bias level and 16-channel non-uniformity") else: print(" Adding Bias level and 16-channel non-uniformity") - img = effects.AddBiasNonUniform16(img, - bias_level=float(config["ins_effects"]["bias_level"]), - nsecy = 2, nsecx=8, - seed=SeedBiasNonuni+self.chipID, - logger=self.logger) + if config["ins_effects"]["bias_16channel"] == True: + img = effects.AddBiasNonUniform16(img, + bias_level=float(config["ins_effects"]["bias_level"]), + nsecy = 2, nsecx=8, + seed=SeedBiasNonuni+self.chipID, + logger=self.logger) + elif config["ins_effects"]["bias_16channel"] == False: + img += self.bias_level # Apply Nonlinearity on the chip image if config["ins_effects"]["non_linear"] == True: @@ -477,17 +480,20 @@ class Chip(FocalPlane): readout_noise = galsim.GaussianNoise(rng=rng_readout, sigma=self.read_noise) img.addNoise(readout_noise) - # Apply Gain & Quantization if self.logger is not None: self.logger.info(" Applying Gain (and 16 channel non-uniformity) & Quantization") else: print(" Applying Gain (and 16 channel non-uniformity) & Quantization", flush=True) - img = effects.ApplyGainNonUniform16( - img, gain=self.gain, - nsecy = 2, nsecx=8, - seed=SeedGainNonuni+self.chipID, - logger=self.logger) + if config["ins_effects"]["gain_16channel"] == True: + img = effects.ApplyGainNonUniform16( + img, gain=self.gain, + nsecy = 2, nsecx=8, + seed=SeedGainNonuni+self.chipID, + logger=self.logger) + elif config["ins_effects"]["gain_16channel"] == False: + img /= self.gain + img.array[img.array > 65535] = 65535 img.replaceNegative(replace_value=0) img.quantize() diff --git a/config/config_NGP_dev.yaml b/config/config_NGP_dev.yaml new file mode 100644 index 0000000..4bd4256 --- /dev/null +++ b/config/config_NGP_dev.yaml @@ -0,0 +1,218 @@ +--- +############################################### +# +# Configuration file for CSST simulation +# CSST-Sim Group, 2021/10/07, version 0.3 +# +############################################### + +# 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: "/public/home/fangyuedong/sim_code_release/CSST/test/" +work_dir: "/public/home/fangyuedong/test/CSST/workplace/" +data_dir: "/data/simudata/CSSOSDataProductsSims/data/" +run_name: "TEST_16channel_off" + +# (Optional) a file of point list +# if you just want to run default pointing: +# - pointing_dir: null +# - pointing_file: null +pointing_dir: "/data/simudata/CSSOSDataProductsSims/data/" +pointing_file: "pointing_test_NGP_2.17.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: "All" + + # 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: [0] + + # 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: [24] + + # Whether to enable astrometric modeling + # astrometric_lib: "libshao.so" + enable_astrometric_model: True + + # Cut by saturation/limiting magnitude in which band? + cut_in_band: "g" + +############################################### +# Input path setting +############################################### + +# Default path settings for WIDE survey simulation +input_path: + cat_dir: "OnOrbitCalibration/CTargets20211231" + star_cat: "CT-NGP_r1.8_G28.hdf5" + galaxy_cat: "galaxyCats_r_3.0_healpix_shift_192.859500_27.128300.hdf5" + +SED_templates_path: + star_SED: "Catalog_20210126/SpecLib.hdf5" + galaxy_SED: "Templates/Galaxy/" + +############################################### +# 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: "/data/simudata/CSSOSDataProductsSims/data/csstPSFdata/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 (not available yet) + # "extra": from seprate file + shear_type: "constant" + + # For constant shear filed + reduced_g1: 0.026 + reduced_g2: 0.015 + + # 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 diff --git a/run_sim.py b/run_sim.py index ee4ee57..d38182f 100755 --- a/run_sim.py +++ b/run_sim.py @@ -40,6 +40,12 @@ def run_sim(Catalog): if args.work_dir is not None: config['work_dir'] = args.work_dir + # Some default values + if "bias_16channel" not in config: + config["bias_16channel"] = False + if "gain_16channel" not in config: + config["gain_16channel"] = False + # Generate lists pointings based on the input pointing list (or default # pointing RA, DEC) and "config["obs_setting"]["run_pointings"]". # "config['obs_setting']['np_cal']"" is the number of CAL pointings which will be -- GitLab