Commit 0ca58f1d authored by Fang Yuedong's avatar Fang Yuedong
Browse files

add options to switch off difference in bias/gain of 16 channels

parent 5a850797
Loading
Loading
Loading
Loading
+17 −11
Original line number Diff line number Diff line
@@ -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")
            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)
        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()
+218 −0
Original line number Diff line number Diff line
---
###############################################
#
#  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
+6 −0
Original line number Diff line number Diff line
@@ -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