From d2cef5098c42bb139efb32ca581bdf8a96473495 Mon Sep 17 00:00:00 2001 From: "chenwei@shao.ac.cn" Date: Fri, 19 May 2023 16:17:11 +0800 Subject: [PATCH] build --- .../inspectionProfiles/profiles_settings.xml | 6 + LICENSE | 21 + README.md | 6 +- csst_ifs_sim/CTI/CTI.py | 495 ++++ csst_ifs_sim/CTI/__init__.py | 0 csst_ifs_sim/__init__.py | 0 csst_ifs_sim/csst_ifs_sim.py | 2624 +++++++++++++++++ csst_ifs_sim/ifs_so/__init__.py | 0 .../cdm03.cpython-37m-x86_64-linux-gnu.so | Bin 0 -> 175816 bytes .../cdm03.cpython-38-x86_64-linux-gnu.so | Bin 0 -> 182992 bytes ...cdm03bidir.cpython-37m-x86_64-linux-gnu.so | Bin 0 -> 192640 bytes .../cdm03bidir.cpython-38-x86_64-linux-gnu.so | Bin 0 -> 203248 bytes csst_ifs_sim/support/IFSinstrumentModel.py | 55 + csst_ifs_sim/support/__init__.py | 0 csst_ifs_sim/support/cosmicrays.py | 424 +++ csst_ifs_sim/support/logger.py | 40 + ifs_data/__init__.py | 0 setup.py | 36 + 18 files changed, 3704 insertions(+), 3 deletions(-) create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 LICENSE create mode 100644 csst_ifs_sim/CTI/CTI.py create mode 100644 csst_ifs_sim/CTI/__init__.py create mode 100644 csst_ifs_sim/__init__.py create mode 100644 csst_ifs_sim/csst_ifs_sim.py create mode 100644 csst_ifs_sim/ifs_so/__init__.py create mode 100644 csst_ifs_sim/ifs_so/cdm03.cpython-37m-x86_64-linux-gnu.so create mode 100644 csst_ifs_sim/ifs_so/cdm03.cpython-38-x86_64-linux-gnu.so create mode 100644 csst_ifs_sim/ifs_so/cdm03bidir.cpython-37m-x86_64-linux-gnu.so create mode 100644 csst_ifs_sim/ifs_so/cdm03bidir.cpython-38-x86_64-linux-gnu.so create mode 100644 csst_ifs_sim/support/IFSinstrumentModel.py create mode 100644 csst_ifs_sim/support/__init__.py create mode 100644 csst_ifs_sim/support/cosmicrays.py create mode 100644 csst_ifs_sim/support/logger.py create mode 100644 ifs_data/__init__.py create mode 100644 setup.py diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a9b5e74 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 CSST-L1 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index f9a5328..aed373c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Ifs +# csst_ifs_common @@ -15,14 +15,14 @@ Already a pro? Just edit this README.md and make it your own. Want to make it ea ``` cd existing_repo -git remote add origin https://csst-tb.bao.ac.cn/code/shaosim/ifs.git +git remote add origin https://csst-tb.bao.ac.cn/code/csst-l1/ifs/csst_ifs_common.git git branch -M main git push -uf origin main ``` ## Integrate with your tools -- [ ] [Set up project integrations](https://csst-tb.bao.ac.cn/code/shaosim/ifs/-/settings/integrations) +- [ ] [Set up project integrations](http://10.3.10.28/code/csst-l1/ifs/csst_ifs_common/-/settings/integrations) ## Collaborate with your team diff --git a/csst_ifs_sim/CTI/CTI.py b/csst_ifs_sim/CTI/CTI.py new file mode 100644 index 0000000..48c87cb --- /dev/null +++ b/csst_ifs_sim/CTI/CTI.py @@ -0,0 +1,495 @@ +""" +Charge Transfer Inefficiency +============================ + +This file contains a simple class to run a CDM03 CTI model developed by Alex Short (ESA). + +This now contains both the official CDM03 and a new version that allows different trap +parameters in parallel and serial direction. + +:requires: NumPy +:requires: CDM03 (FORTRAN code, f2py -c -m cdm03bidir cdm03bidir.f90) + +:version: 0.35 +""" +import numpy as np + +# try: +# import cdm03bidir +# #import cdm03bidirTest as cdm03bidir #for testing purposes only +# except ImportError: +# print('import CTI module') +# #print ('No CDM03bidir module available, please compile it: f2py -c -m cdm03bidir cdm03bidir.f90') + + + +#CDM03bidir +class CDM03bidir(): + """ + Class to run CDM03 CTI model, class Fortran routine to perform the actual CDM03 calculations. + + :param settings: input parameters + :type settings: dict + :param data: input data to be radiated + :type data: ndarray + :param log: instance to Python logging + :type log: logging instance + """ + def __init__(self, settings, data, log=None): + """ + Class constructor. + + :param settings: input parameters + :type settings: dict + :param data: input data to be radiated + :type data: ndarray + :param log: instance to Python logging + :type log: logging instance + """ + self.data = data + self.values = dict(quads=(0,1,2,3), xsize=2048, ysize=2066, dob=0.0, rdose=8.0e9) + self.values.update(settings) + self.log = log + self._setupLogger() + + #default CDM03 settings + self.params = dict(beta_p=0.6, beta_s=0.6, fwc=200000., vth=1.168e7, vg=6.e-11, t=20.48e-3, + sfwc=730000., svg=1.0e-10, st=5.0e-6, parallel=1., serial=1.) + #update with inputs + self.params.update(self.values) + + #read in trap information + trapdata = np.loadtxt(self.values['parallelTrapfile']) + if trapdata.ndim > 1: + self.nt_p = trapdata[:, 0] + self.sigma_p = trapdata[:, 1] + self.taur_p = trapdata[:, 2] + else: + #only one trap species + self.nt_p = [trapdata[0],] + self.sigma_p = [trapdata[1],] + self.taur_p = [trapdata[2],] + + trapdata = np.loadtxt(self.values['serialTrapfile']) + if trapdata.ndim > 1: + self.nt_s = trapdata[:, 0] + self.sigma_s = trapdata[:, 1] + self.taur_s = trapdata[:, 2] + else: + #only one trap species + self.nt_s = [trapdata[0],] + self.sigma_s = [trapdata[1],] + self.taur_s = [trapdata[2],] + + #scale thibaut's values + if 'thibaut' in self.values['parallelTrapfile']: + self.nt_p /= 0.576 #thibaut's values traps / pixel + self.sigma_p *= 1.e4 #thibaut's values in m**2 + if 'thibaut' in self.values['serialTrapfile']: + self.nt_s *= 0.576 #thibaut's values traps / pixel #should be division? + self.sigma_s *= 1.e4 #thibaut's values in m**2 + + + def _setupLogger(self): + """ + Set up the logger. + """ + self.logger = True + if self.log is None: + self.logger = False + + + def radiateFullCCD(self): + """ + This routine allows the whole CCD to be run through a radiation damage mode. + The routine takes into account the fact that the amplifiers are in the corners + of the CCD. The routine assumes that the CCD is using four amplifiers. + + There is an excess of .copy() calls, which should probably be cleaned up. However, + given that I had problem with the Fortran code, I have kept the calls. If memory + becomes an issue then this should be cleaned. + + :return: radiation damaged image + :rtype: ndarray + """ + ydim, xdim = self.data.shape + out = np.zeros((xdim, ydim)) + + #transpose the data, because Python has different convention than Fortran + data = self.data.transpose().copy() + + for quad in self.values['quads']: + if self.logger: + self.log.info('Adding CTI to Q%i' % quad) + + if quad == 0: + d = data[0:self.values['xsize'], 0:self.values['ysize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[0:self.values['xsize'], 0:self.values['ysize']] = tmp + elif quad == 1: + d = data[self.values['xsize']:, :self.values['ysize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['xsize']:, :self.values['ysize']] = tmp + elif quad == 2: + d = data[:self.values['xsize'], self.values['ysize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[:self.values['xsize'], self.values['ysize']:] = tmp + elif quad == 3: + d = data[self.values['xsize']:, self.values['ysize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['xsize']:, self.values['ysize']:] = tmp + else: + print( 'ERROR -- too many quadrants!!' ) + self.log.error('Too many quadrants! This method allows only four quadrants.') + + return out.transpose() + + + def radiateFullCCD2(self): + """ + This routine allows the whole CCD to be run through a radiation damage mode. + The routine takes into account the fact that the amplifiers are in the corners + of the CCD. The routine assumes that the CCD is using four amplifiers. + + There is an excess of .copy() calls, which should probably be cleaned up. However, + given that I had problem with the Fortran code, I have kept the calls. If memory + becomes an issue then this should be cleaned. + + :return: radiation damaged image + :rtype: ndarray + """ + ydim, xdim = self.data.shape + out = np.empty((ydim, xdim)) + + #transpose the data, because Python has different convention than Fortran + data = self.data.copy() + + for quad in self.values['quads']: + if self.logger: + self.log.info('Adding CTI to Q%i' % quad) + + if quad == 0: + d = data[:self.values['ysize'], :self.values['xsize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[:self.values['ysize'], :self.values['xsize']] = tmp + elif quad == 1: + d = data[:self.values['ysize'], self.values['xsize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[:self.values['ysize'], self.values['xsize']:] = tmp + elif quad == 2: + d = data[self.values['ysize']:, :self.values['xsize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['ysize']:, :self.values['xsize']] = tmp + elif quad == 3: + d = data[self.values['ysize']:, self.values['xsize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['ysize']:, self.values['xsize']:] = tmp + else: + print( 'ERROR -- too many quadrants!!') + self.log.error('Too many quadrants! This method allows only four quadrants.') + + return out + + + def applyRadiationDamage(self, data, iquadrant=0): + """ + Apply radian damage based on FORTRAN CDM03 model. The method assumes that + input data covers only a single quadrant defined by the iquadrant integer. + + :param data: imaging data to which the CDM03 model will be applied to. + :type data: ndarray + + :param iquandrant: number of the quadrant to process + :type iquandrant: int + + cdm03 - Function signature:: + + sout = cdm03(sinp,iflip,jflip,dob,rdose,in_nt,in_sigma,in_tr,[xdim,ydim,zdim]) + Required arguments: + sinp : input rank-2 array('d') with bounds (xdim,ydim) + iflip : input int + jflip : input int + dob : input float + rdose : input float + in_nt : input rank-1 array('d') with bounds (zdim) + in_sigma : input rank-1 array('d') with bounds (zdim) + in_tr : input rank-1 array('d') with bounds (zdim) + Optional arguments: + xdim := shape(sinp,0) input int + ydim := shape(sinp,1) input int + zdim := len(in_nt) input int + Return objects: + sout : rank-2 array('d') with bounds (xdim,ydim) + + .. Note:: Because Python/NumPy arrays are different row/column based, one needs + to be extra careful here. NumPy.asfortranarray will be called to get + an array laid out in Fortran order in memory. Before returning the + array will be laid out in memory in C-style (row-major order). + + :return: image that has been run through the CDM03 model + :rtype: ndarray + """"" + #return data + + iflip = iquadrant / 2 + jflip = iquadrant % 2 + + params = [self.params['beta_p'], self.params['beta_s'], self.params['fwc'], self.params['vth'], + self.params['vg'], self.params['t'], self.params['sfwc'], self.params['svg'], self.params['st'], + self.params['parallel'], self.params['serial']] + + if self.logger: + self.log.info('nt_p=' + str(self.nt_p)) + self.log.info('nt_s=' + str(self.nt_s)) + self.log.info('sigma_p= ' + str(self.sigma_p)) + self.log.info('sigma_s= ' + str(self.sigma_s)) + self.log.info('taur_p= ' + str(self.taur_p)) + self.log.info('taur_s= ' + str(self.taur_s)) + self.log.info('dob=%f' % self.values['dob']) + self.log.info('rdose=%e' % self.values['rdose']) + self.log.info('xsize=%i' % data.shape[1]) + self.log.info('ysize=%i' % data.shape[0]) + self.log.info('quadrant=%i' % iquadrant) + self.log.info('iflip=%i' % iflip) + self.log.info('jflip=%i' % jflip) + +################################################################################# +###modify + import sys + #sys.path.append('../so') + from ifs_so import cdm03bidir + # from ifs_so.cdm03.cpython-38-x86_64-linux-gnu import cdm03bidir + # import cdm03bidir + CTIed = cdm03bidir.cdm03(np.asfortranarray(data), + jflip, iflip, + self.values['dob'], self.values['rdose'], + self.nt_p, self.sigma_p, self.taur_p, + self.nt_s, self.sigma_s, self.taur_s, + params, + [data.shape[0], data.shape[1], len(self.nt_p), len(self.nt_s), len(self.params)]) + + + return np.asanyarray(CTIed) + +################################################################################################################# + + + +class CDM03(): + """ + Class to run CDM03 CTI model, class Fortran routine to perform the actual CDM03 calculations. + + :param data: input data to be radiated + :type data: ndarray + :param input: input parameters + :type input: dictionary + :param log: instance to Python logging + :type log: logging instance + """ + def __init__(self, input, data, log=None): + """ + Class constructor. + + :param data: input data to be radiated + :type data: ndarray + :param input: input parameters + :type input: dictionary + :param log: instance to Python logging + :type log: logging instance + """ + try: + import cdm03 + except ImportError: + print( 'No CDM03 module available, please compile it: f2py -c -m cdm03 cdm03.f90') + + self.data = data + self.values = dict(quads=(0,1,2,3), xsize=2048, ysize=2066, dob=0.0, rdose=8.0e9) + self.values.update(input) + self.log = log + self._setupLogger() + + + def _setupLogger(self): + """ + Set up the logger. + """ + self.logger = True + if self.log is None: + self.logger = False + + + def radiateFullCCD(self): + """ + This routine allows the whole CCD to be run through a radiation damage mode. + The routine takes into account the fact that the amplifiers are in the corners + of the CCD. The routine assumes that the CCD is using four amplifiers. + + There is an excess of .copy() calls, which should probably be cleaned up. However, + given that I had problem with the Fortran code, I have kept the calls. If memory + becomes an issue then this should be cleaned. + + :return: radiation damaged image + :rtype: ndarray + """ + ydim, xdim = self.data.shape + out = np.zeros((xdim, ydim)) + + #transpose the data, because Python has different convention than Fortran + data = self.data.transpose().copy() + + for quad in self.values['quads']: + if self.logger: + self.log.info('Adding CTI to Q%i' % quad) + + if quad == 0: + d = data[0:self.values['xsize'], 0:self.values['ysize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[0:self.values['xsize'], 0:self.values['ysize']] = tmp + elif quad == 1: + d = data[self.values['xsize']:, :self.values['ysize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['xsize']:, :self.values['ysize']] = tmp + elif quad == 2: + d = data[:self.values['xsize'], self.values['ysize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[:self.values['xsize'], self.values['ysize']:] = tmp + elif quad == 3: + d = data[self.values['xsize']:, self.values['ysize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['xsize']:, self.values['ysize']:] = tmp + else: + print ('ERROR -- too many quadrants!!') + self.log.error('Too many quadrants! This method allows only four quadrants.') + + return out.transpose() + + + def radiateFullCCD2(self): + """ + This routine allows the whole CCD to be run through a radiation damage mode. + The routine takes into account the fact that the amplifiers are in the corners + of the CCD. The routine assumes that the CCD is using four amplifiers. + + There is an excess of .copy() calls, which should probably be cleaned up. However, + given that I had problem with the Fortran code, I have kept the calls. If memory + becomes an issue then this should be cleaned. + + :return: radiation damaged image + :rtype: ndarray + """ + ydim, xdim = self.data.shape + out = np.empty((ydim, xdim)) + + #transpose the data, because Python has different convention than Fortran + data = self.data.copy() + + for quad in self.values['quads']: + if self.logger: + self.log.info('Adding CTI to Q%i' % quad) + + if quad == 0: + d = data[:self.values['ysize'], :self.values['xsize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[:self.values['ysize'], :self.values['xsize']] = tmp + elif quad == 1: + d = data[:self.values['ysize'], self.values['xsize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[:self.values['ysize'], self.values['xsize']:] = tmp + elif quad == 2: + d = data[self.values['ysize']:, :self.values['xsize']].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['ysize']:, :self.values['xsize']] = tmp + elif quad == 3: + d = data[self.values['ysize']:, self.values['xsize']:].copy() + tmp = self.applyRadiationDamage(d, iquadrant=quad).copy() + out[self.values['ysize']:, self.values['xsize']:] = tmp + else: + print ('ERROR -- too many quadrants!!') + self.log.error('Too many quadrants! This method allows only four quadrants.') + + return out + + + def applyRadiationDamage(self, data, iquadrant=0): + """ + Apply radian damage based on FORTRAN CDM03 model. The method assumes that + input data covers only a single quadrant defined by the iquadrant integer. + + :param data: imaging data to which the CDM03 model will be applied to. + :type data: ndarray + + :param iquandrant: number of the quadrant to process + :type iquandrant: int + + cdm03 - Function signature:: + + sout = cdm03(sinp,iflip,jflip,dob,rdose,in_nt,in_sigma,in_tr,[xdim,ydim,zdim]) + Required arguments: + sinp : input rank-2 array('d') with bounds (xdim,ydim) + iflip : input int + jflip : input int + dob : input float + rdose : input float + in_nt : input rank-1 array('d') with bounds (zdim) + in_sigma : input rank-1 array('d') with bounds (zdim) + in_tr : input rank-1 array('d') with bounds (zdim) + Optional arguments: + xdim := shape(sinp,0) input int + ydim := shape(sinp,1) input int + zdim := len(in_nt) input int + Return objects: + sout : rank-2 array('d') with bounds (xdim,ydim) + + .. Note:: Because Python/NumPy arrays are different row/column based, one needs + to be extra careful here. NumPy.asfortranarray will be called to get + an array laid out in Fortran order in memory. Before returning the + array will be laid out in memory in C-style (row-major order). + + :return: image that has been run through the CDM03 model + :rtype: ndarray + """ + #read in trap information + trapdata = np.loadtxt(self.values['trapfile']) + nt = trapdata[:, 0] + sigma = trapdata[:, 1] + taur = trapdata[:, 2] + + iflip = iquadrant / 2 + jflip = iquadrant % 2 + + if self.logger: + self.log.info('nt=' + str(nt)) + self.log.info('sigma= ' + str(sigma)) + self.log.info('taur= ' + str(taur)) + self.log.info('dob=%f' % self.values['dob']) + self.log.info('rdose=%e' % self.values['rdose']) + self.log.info('xsize=%i' % data.shape[1]) + self.log.info('ysize=%i' % data.shape[0]) + self.log.info('quadrant=%i' % iquadrant) + self.log.info('iflip=%i' % iflip) + self.log.info('jflip=%i' % jflip) + + + # #call Fortran routine + # CTIed = cdm03.cdm03(np.asfortranarray(data), + # iflip, jflip, + # self.values['dob'], self.values['rdose'], + # nt, sigma, taur) + ###modify + import sys + sys.path.append('../CTI') + import cdm03 + + ################################################################################# + + CTIed = cdm03.cdm03(np.asfortranarray(data), + jflip, iflip, + self.values['dob'], self.values['rdose'], + nt,sigma,taur ) + + + return np.asanyarray(CTIed) + + +################################################################################################################# + diff --git a/csst_ifs_sim/CTI/__init__.py b/csst_ifs_sim/CTI/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/csst_ifs_sim/__init__.py b/csst_ifs_sim/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/csst_ifs_sim/csst_ifs_sim.py b/csst_ifs_sim/csst_ifs_sim.py new file mode 100644 index 0000000..1dbd918 --- /dev/null +++ b/csst_ifs_sim/csst_ifs_sim.py @@ -0,0 +1,2624 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" + +@author: yan +""" + +""" +The CSST IFS Image Simulator +============================================= + +This file contains an image simulator for the CSST IFS. + +The approximate sequence of events in the simulator is as follows: + + #. Read in a configuration file, which defines for example, + detector characteristics (bias, dark and readout noise, gain, + plate scale and pixel scale, oversampling factor, exposure time etc.). + #. Read in another file containing charge trap definitions (for CTI modelling). + #. Read in a file defining the cosmic rays (trail lengths and cumulative distributions). + + #. Load the wavefront aberration data used to calculate PSF with defined wavelength and field of view. + + #. Apply calibration unit flux to mimic flat field exposures [optional]. + #. Apply a multiplicative flat-field map to emulate pixel-to-pixel non-uniformity [optional]. + + #. Add cosmic ray tracks onto the CCD with random positions but known distribution [optional]. + #. Apply detector charge bleeding in column direction [optional]. + #. Add constant dark current and background light from Zodiacal light [optional]. + #. Add photon (Poisson) noise [optional] + #. Add cosmetic defects from an input file [optional]. + #. Add overscan regions in the serial direction [optional]. + #. Apply the CDM03 radiation damage model [optional]. + #. Apply non-linearity model to the pixel data [optional]. + #. Add readout noise selected from a Gaussian distribution [optional]. + #. Convert from electrons to ADUs using a given gain factor. + #. Add a given bias level and discretise the counts (the output is going to be in 16bit unsigned integers). + #. Finally the simulated image is converted to a FITS file. + +:version: 2023.04 + + +Future Work +----------- + +.. todo:: + + #. + #. + #. ...... + +Contact Information: zhaojunyan@shao.ac.cn + +------- + +""" + +from scipy.integrate import simps +import pandas as pd +from datetime import datetime, timedelta +import julian +from astropy.coordinates import get_sun +from astropy.time import Time +from astropy import units as u + +from astropy.coordinates import SkyCoord, EarthLocation + +from scipy import interpolate + +import numpy as np + +import scipy.io as sio + +from astropy.io import fits + +from scipy.signal import fftconvolve + +import galsim + +from scipy import ndimage + +import cmath + +import os, sys + +import configparser as ConfigParser + +from optparse import OptionParser + +sys.path.append('../') + +from CTI import CTI +from support import logger as lg +from support import cosmicrays +from support import IFSinstrumentModel + +############################################################################### + +def str2time(strTime): + if len(strTime)>20:# + msec=int(float('0.'+strTime[20:])*1000000) # + str2=strTime[0:19]+' '+str(msec) + return datetime.strptime(str2,'%Y %m %d %H %M %S %f') + +#datetime to mjd +def time2mjd(dateT): + t0=datetime(1858,11,17,0,0,0,0)# + mjd=(dateT-t0).days + mjd_s=dateT.hour*3600.0+dateT.minute*60.0+dateT.second+dateT.microsecond/1000000.0 + return mjd+mjd_s/86400.0 + +def time2jd(dateT): + t0=datetime(1858,11,17,0,0,0,0)# + mjd=(dateT-t0).days + mjd_s=dateT.hour*3600.0+dateT.minute*60.0+dateT.second+dateT.microsecond/1000000.0 + return mjd+mjd_s/86400.0++2400000.5 + +#mjd to datetime +def mjd2time(mjd): + t0=datetime(1858,11,17,0,0,0,0)# + return t0+timedelta(days=mjd) + +def jd2time(jd): + mjd=jd2mjd(jd) + return mjd2time(mjd) + +#mjd to jd +def mjd2jd(mjd): + return mjd+2400000.5 + +def jd2mjd(jd): + return jd-2400000.5 + +def dt2hmd(dt): + ## dt is datetime + hour=dt.hour + minute=dt.minute + second=dt.second + if hour<10: + str_h='0'+str(hour) + else: + str_h=str(hour) + + if minute<10: + str_m='0'+str(minute) + else: + str_m=str(minute) + + if second<10: + str_d='0'+str(second+dt.microsecond*1e-6) + else: + str_d=str(second+dt.microsecond*1e-6) + + return str_h+':'+str_m+':'+str_d + +############################################################################### + +############################################################################### + +def deg2HMS(ra, dec, rou=False): + '''convert deg to ra's HMS or dec's DHS''' + RA, DEC, rs, ds = '000000', '000000', '', '' + if dec: + if str(dec)[0] == '-': + ds, dec = '-', abs(dec) + deg = int(dec) + decM = abs(int((dec-deg)*60)) + + if rou: + decS = round((abs((dec-deg)*60)-decM)*60,1) + else: + decS = int((abs((dec-deg)*60)-decM)*60) + + if deg ==0: + deg ="00" + elif deg <10: + deg = "0%s"%deg + + if decM ==0: + decM ="00" + elif decM <10: + decM = "0%s"%decM + + if decS ==0: + decS ="00" + elif decS <10: + decS = "0%s"%decS + + DEC = '{0}{1}{2}{3}'.format(ds, deg, decM, decS) + + if ra: + if str(ra)[0] == '-': + rs, ra = '-', abs(ra) + raH = int(ra/15) + raM = int(((ra/15)-raH)*60) + + if rou: + raS = round(((((ra/15)-raH)*60)-raM)*60,1) + else: + raS = int(((((ra/15)-raH)*60)-raM)*60) + + if raH ==0: + raH = "00" + + elif raH <10: + raH = "0%s"%raH + + if raM ==0: + raM = "00" + elif raM <10: + raM = "0%s"%raM + + if raS ==0: + raS = "00" + + elif raS <10: + raS = "0%s"%raS + + RA = '{0}{1}{2}{3}'.format(rs, raH, raM, raS) + + if ds=='-': + return RA+DEC + else: + return RA+'+'+DEC +############################################################################### + +########################################################### +def beta_angle( x_sat, y_sat, z_sat, vx_sat, vy_sat, vz_sat, ra_obj, dec_obj): + + # get the vector for next motion + x_sat2 = x_sat + vx_sat + y_sat2 = y_sat + vy_sat + z_sat2 = z_sat + vz_sat + + vector1 = np.stack((x_sat, y_sat, z_sat), axis=0) + vector2 = np.stack((x_sat2, y_sat2, z_sat2), axis=0) + vector_normal = np.cross(vector1, vector2) + + location_normal = EarthLocation.from_geocentric(vector_normal[0], + vector_normal[1], + vector_normal[2], + unit=u.km) + radec_normal = SkyCoord(ra=location_normal.lon, + dec=location_normal.lat, + frame='gcrs') + lb_normal = radec_normal.transform_to('geocentrictrueecliptic') + + + radec_sun = SkyCoord(ra=ra_obj*u.degree, dec=dec_obj*u.degree, frame='gcrs') + lb_sun = radec_sun.transform_to('geocentrictrueecliptic') + + # get the angle between normal and solar + angle = 90 - lb_normal.separation(lb_sun).degree + + return angle + +########################################################## +########################################################## +def LSR_velocity(ra,dec,velocity,Obstime): + + local = EarthLocation.from_geodetic(lat=22.349368*u.deg, lon=113.584068*u.deg, height=10*u.m) + ### convert ra and dec to + source = SkyCoord(ra*u.deg, dec*u.deg,frame='icrs', unit=(u.hourangle,u.deg) ) + l = source.galactic.l.deg + b = source.galactic.b.deg + c = SkyCoord(l=l*u.degree, b=b*u.degree, frame='galactic') + c_icrs = c.transform_to('icrs') + barycorr = c_icrs.radial_velocity_correction(obstime=Time(Obstime), location=local) + velocity = velocity + barycorr.value/1000 + #print(barycorr.value/1000) + l = l * np.pi / 180 + b = b * np.pi / 180 + return velocity + 9 * np.cos(l) * np.cos(b) + 12 * np.sin(l) * np.cos(b) + 7 * np.sin(b) + +############################################################################### +def rotation_yan(x0,y0,x1,y1,angle): + #% point A (x0,y0) + #% point B(x1,y1) + #% roate angle ,point B rotate with point A + alpha=angle/180*3.1415926 #% in radians + x2=(x1-x0)*np.cos(alpha)-(y1-y0)*np.sin(alpha)+x0 + y2=(x1-x0)*np.sin(alpha)+(y1-y0)*np.cos(alpha)+y0 + return x2, y2 +###################################################################### +def centroid(data): + h,w = np.shape(data) + x = np.arange(0,w) + y = np.arange(0,h) + x1=np.ones((1,h)) + y1=np.ones((w,1)) + cx=(np.dot(np.dot(x1,data),y)) /(np.dot(np.dot(x1,data),y1)) + cy=(np.dot(np.dot(x ,data),y1)) /(np.dot(np.dot(x1,data),y1)) + return np.float64(cx),np.float64(cy) +#################################################################### +def SpecCube2photon(data,wave): + # calcutle photons from original spec cube data, + # data: input data, two-dimentional, unit : 1e-17 erg/s/A/cm^2 + # wave: the relative wavefront, unit in nm; + planckh= 6.62620*10**-27 # % erg s; + cc=2.99792458*10**17 # in nm/s + # fov2=0.01 # in arcsec^2 + # telarea=3.1415926*100*100 # in cm^2, + fluxlam=1e-17*data # convert original unit to unit of erg/s/A/cm^2 + lam=wave # wave in nm ;; + ephoton=planckh*cc/lam # in erg/photon, + Nphoton =fluxlam/ephoton # in unit of photons/cm2/s/A + return Nphoton + +###################################################################### + +###################################################################### +def zero_pad(image, shape, position='corner'): + """ + Extends image to a certain size with zeros + Parameters + ---------- + image: real 2d `np.ndarray` + Input image + shape: tuple of int + Desired output shape of the image + position : str, optional + The position of the input image in the output one: + * 'corner' + top-left corner (default) + * 'center' + centered + Returns + ------- + padded_img: real `np.ndarray` + The zero-padded image + """ + shape = np.asarray(shape, dtype=int) + imshape = np.asarray(image.shape, dtype=int) + + if np.alltrue(imshape == shape): + return image + + if np.any(shape <= 0): + raise ValueError("ZERO_PAD: null or negative shape given") + + dshape = shape - imshape + if np.any(dshape < 0): + raise ValueError("ZERO_PAD: target size smaller than source one") + + pad_img = np.zeros(shape, dtype=image.dtype) + + idx, idy = np.indices(imshape) + + if position == 'center': + if np.any(dshape % 2 != 0): + raise ValueError("ZERO_PAD: source and target shapes " + "have different parity.") + offx, offy = dshape // 2 + else: + offx, offy = (0, 0) + + pad_img[idx + offx, idy + offy] = image + + return pad_img + +def anySampledPSF(wavefront, pupil , Q , sizeout): + ''' + written on 2020.12.04 by Yan @Shao + % wavefront sampled in the united circle; + % pupil function samped as wavefront; + % sample ratio Q=lambda/D/pixel; + % lambda is wavelength; + % D is diameter; + % pixel is in arcsec; + % or sample ratio Q=lambda*f/D/pixelsize + % f is focal length; + % pixelsize is the actural size of the detector; + % make sure all the varia have the same unit; + % the returned PSF has sum value of 1 + ''' + + m,n = np.shape(wavefront) + + phase=2.0*np.pi*wavefront #% the phase of the input wavefront; + + ####generalized pupil function of channel1; + if Q>=1: + pk1=zero_pad(pupil*np.exp(cmath.sqrt(-1)*(phase)),( int(np.floor(m*Q)),int(np.floor(m*Q))), position='corner') + psf=abs(np.fft.fftshift(np.fft.fft2(pk1)))**2 + #psf=psf/psf.sum() + else: #%%% case: Q<1 + # %fft method + if Q>=0.5: #% in this case Q<1 and Q>=0.5 + pk1=zero_pad(pupil*np.exp(cmath.sqrt(-1)*(phase)), (int(2*np.floor(m*Q)),int(2*np.floor(m*Q))), position='corner') + mypsf=np.fft.fft2(pk1); + t=mypsf[0::2,0::2]; + psf=abs(np.fft.fftshift(t))**2 + #psf=mypsf3/mypsf3.sum(); + + else: + if Q>=0.25: + pk1=zero_pad(pupil*np.exp(cmath.sqrt(-1)*(phase)),( int(4*np.floor(m*Q)),int(4*np.floor(m*Q))), position='corner') + mypsf=np.fft.fft2(pk1); + t=mypsf[0::4,0::4]; + psf=abs(np.fft.fftshift(t))**2 + #psf=mypsf3/mypsf3.sum(); + else: + print('---- Q<0.25 , stop running') + sys.exit(0) + ######################################################################################## + mm,nn=np.shape(psf) + if np.mod(sizeout,2)==0: + Nx=sizeout/2-1 + else: + Nx=(sizeout+1)/2-1 + + + if max(mm,nn)3*sigma: + + SpmOut=1.0/20000 + else: + + column=np.where(d==min(d)) + SpmOut=Qt[column[0]]*np.exp(-(lam-wave[column[0]])**2/2/sigma**2) + + return SpmOut + +##################################################################################### +#################################################################################################################### + +def processArgs(printHelp=False): + """ + Processes command line arguments. + """ + parser = OptionParser() + + parser.add_option('-c', '--configfile', dest='configfile', + help="Name of the configuration file", metavar="string") + parser.add_option('-s', '--section', dest='section', + help="Name of the section of the config file [SCIENCE]", metavar="string") + parser.add_option('-q', '--quadrant', dest='quadrant', help='CCD quadrant to simulate [0, 1, 2, 3]', + metavar='int') + parser.add_option('-x', '--xCCD', dest='xCCD', help='CCD number in X-direction within the FPA matrix', + metavar='int') + parser.add_option('-y', '--yCCD', dest='yCCD', help='CCD number in Y-direction within the FPA matrix', + metavar='int') + parser.add_option('-d', '--debug', dest='debug', action='store_true', + help='Debugging mode on') + parser.add_option('-t', '--test', dest='test', action='store_true', + help='Run unittest') + parser.add_option('-f', '--fixed', dest='fixed', help='Use a fixed seed for the random number generators', + metavar='int') + if printHelp: + parser.print_help() + else: + return parser.parse_args() +############################################################################################## +class IFSsimulator(): + """ + CSST IFS Simulator + + The image that is being build is in:: + + self.image + self.image_b blue channel + self.image_r red channel + + :param opts: OptionParser instance + :type opts: OptionParser instance + """ + + def __init__(self, opts): + """ + Class Constructor. + + :param opts: OptionParser instance + :type opts: OptionParser instance + + """ + + #################################### + + self.configfile = opts.configfile + + if opts.section is None: + ####self.section = 'DEFAULT' + self.section = 'TEST' #####simulation section; + + else: + self.section = opts.section + + #load instrument model, these values are also stored in the FITS header + self.information = IFSinstrumentModel.IFSinformation() + + #update settings with defaults + self.information.update(dict(quadrant=int(0), + ccdx=int(0), + ccdy=int(0), + psfoversampling=1.0, + ccdxgap=1.643, + ccdygap=8.116, + fullwellcapacity=90000, + readouttime=4, + rdose=8.0e9, + coveringfraction=0.5 )) + + ###################################################################### + self.configure() #print the configfile name and path; + + self.information.update(dict( + + cosmicraylengths =self.information['indata_path']+'/cdf_cr_length.dat', + cosmicraydistance=self.information['indata_path']+'/cdf_cr_total.dat', + parallelTrapfile =self.information['indata_path']+'/cdm_euclid_parallel.dat', + serialTrapfile =self.information['indata_path']+'/cdm_euclid_serial.dat', + cosmeticsfile_b =self.information['indata_path']+'/Cosmetics_b.txt', + cosmeticsfile_r =self.information['indata_path']+'/Cosmetics_r.txt' )) + + # public system information + self.pixelscale=0.1 # the pixel size is 0.1 arcsec + self.pixelsize=15 # the pixel physical size is 15 micron + self.Fnum=15.469875 # the f number= focal_length/D; + self.telD=2 # tht telescope size is 2 meter, diamter size; + self.telarea=3.1415926*(self.telD/2)**2*100*100 # telescope square in cm^2 + self.fov2=0.01 # the pixel square + self.planckh= 6.62620*1e-27 # % erg s; + self.cc=2.99792458*1e17 # in nm/s + self.light_FWHM=0.175 + self.HgArsigma=self.light_FWHM/2.35; ## sigma value of the light source; + + #### load system optical and CCD efficiency data + matfn0=self.information['indata_path']+'/TotalQ200923.mat' + da0=sio.loadmat(matfn0) + self.optical_blue_Q=da0['opticalQ_1'] # optical efficiency of blue channel + self.optical_red_Q =da0['opticalQ_2'] # optical efficiency of red channel + self.CCD_Qe=da0['ccdQE'] # red channel + + ############################################################# load all useful data; + ############### load wavefront data; + matfn2=self.information['indata_path']+'/opd_638nm.mat' + da2=sio.loadmat(matfn2) + opd0=da2['opd'] # opd unit is in meter + self.opd0=opd0*1e9 # convert opd to nm + self.pupil=abs(opd0)>0.0 + #################### + + da=fits.open(self.information['indata_path']+'/opd1.fits') + self.opd1=da[0].data + + da=fits.open(self.information['indata_path']+'/opd2.fits') + self.opd2=da[0].data + + da=fits.open(self.information['indata_path']+'/opd3.fits') + self.opd3=da[0].data + + + ################################################################################ + ## slice information; the slice is put in vertial direction; + # the silce long size is 64 pixels + slice_blue=dict() + slice_red =dict() + + randRedpos=np.array([0.52835362, 1.1105926 , -0.81667794, 0.88860884, -2.78092636, + -0.15810022, -1.56726852, -0.71601855, -1.31768647, 1.73107581, + 0.4933876 , 2.83673377, 0.22226286, -0.02634998, 0.35539383, + -0.91989574, -2.44856212, 0.91020484, -3.03097852, -1.11638071, + 1.28360669, -0.12521128, -0.3907698 , 0.70183575, 1.00578099, + 1.67339662, 0.18067182, -0.56303075, 0.40959616, 1.45518379, + -0.93194744, 0.41492972]) + + randBluepos=np.array([ 0.97449008, -0.21371406, -1.62513338, -3.06938604, 1.72615283, + 0.73333374, 0.80923919, -0.9418576 , -0.16806578, -1.04416631, + 2.20155068, -0.0900156 , 0.07597706, 0.76208373, 0.29426592, + -0.89434703, 0.34017826, 1.16936499, 0.10977829, -1.31179539, + -0.50859787, -1.01891651, -0.95791581, -1.53018041, 0.88358827, + 0.07837641, -0.86157157, -1.18070438, 0.53970599, 1.4913733 , + 2.10938775, 1.23213412]) + + ##################### + for i in range(32): + if i==0: + slice_blue['py']=np.zeros(32) + slice_blue['px']=np.zeros(32) + + slice_red['py']=np.zeros(32) + slice_red['px']=np.zeros(32) + + if i<16: + slice_blue['py'][i]=50+randBluepos[i]*4 + slice_blue['px'][i]=3.55/0.015*i+166.0 + + + slice_red['py'][i]=50+randBluepos[i]*4 + slice_red['px'][i]=3.55/0.015*i+1190.0 + + else: + slice_blue['py'][i]=50+250+randBluepos[i]*4 + slice_blue['px'][i]=3.55/0.015*(i-16)+166.0+118 + + + slice_red['py'][i]=50+250+randBluepos[i]*4 + slice_red['px'][i]=3.55/0.015*(i-16)+1190.0+118 + ####### + + self.slice_blue=slice_blue + self.slice_red=slice_red + + ############################################################################### + maskSlice=dict() + maskSlit=dict() + sizeout=100 + for k in range(32): + maskSlice[str(k)]=np.zeros((sizeout,sizeout)) + maskSlice[str(k)][2*k+18:2*k+20, int(sizeout/2)-32:int(sizeout/2)+32]=1 + + maskSlit[str(k)]=np.zeros((sizeout,sizeout)) + maskSlit[str(k)][2*k+18:2*k+20, int(sizeout/2)-37:int(sizeout/2)+37]=1 + + self.maskSlice=maskSlice + self.maskSlit =maskSlit + ################################################################################################ + + + + +############################################################################3 + def readConfigs(self): + """ + Reads the config file information using configParser and sets up a logger. + """ + self.config = ConfigParser.RawConfigParser() + + self.config.read_file(open(self.configfile)) + + +############################################################################### + + + def processConfigs(self): + """ + Processes configuration information and save the information to a dictionary self.information. + + The configuration file may look as follows:: + + [TEST] + + + For explanation of each field, see /data/test.config. Note that if an input field does not exist, + then the values are taken from the default instrument model as described in + support.IFSinstrumentModel.VISinformation(). Any of the defaults can be overwritten by providing + a config file with a correct field name. + """ + #parse options and update the information dictionary + options = self.config.options(self.section) + + settings = {} + + for option in options: + try: + settings[option] = self.config.getint(self.section, option) + except ValueError: + try: + settings[option] = self.config.getfloat(self.section, option) + except ValueError: + settings[option] = self.config.get(self.section, option) + + self.information.update(settings) + + self.cosmicRays = self.config.getboolean(self.section, 'cosmicRays') + self.darknoise = self.config.getboolean(self.section, 'darknoise') + self.cosmetics = self.config.getboolean(self.section, 'cosmetics') + self.radiationDamage = self.config.getboolean(self.section, 'radiationDamage') + + self.bleeding = self.config.getboolean(self.section, 'bleeding') + + self.skyback = self.config.getboolean(self.section, 'skyback') + + + #these don't need to be in the config file + + try: + self.nonlinearity = self.config.getboolean(self.section, 'nonlinearity') + except: + self.nonlinearity = False + + try: + self.flatfieldM = self.config.getboolean(self.section, 'flatfieldM') + except: + self.flatfieldM = False + + try: + self.readoutNoise = self.config.getboolean(self.section, 'readoutNoise') + except: + self.readoutNoise = True + + #################################################################### + self.booleans = dict(nonlinearity=self.nonlinearity, + flatfieldM=self.flatfieldM, + cosmicRays=self.cosmicRays, + darknoise=self.darknoise, + cosmetics=self.cosmetics, + radiationDamage=self.radiationDamage, + bleeding=self.bleeding, + skyback =self.skyback) + ##################################################################### + + now=datetime.now() + + result_day=now.strftime("%Y-%m-%d") + + self.result_path=self.information['result_path']+'/'+result_day + + if os.path.isdir(self.result_path)==False: + os.mkdir(self.result_path) + os.mkdir(self.result_path+'/log_file') + os.mkdir(self.result_path+'/sky_Data') + + now=datetime.now() + + data_time=now.strftime("%Y-%m-%d-%H-%M-%S") + + self.log = lg.setUpLogger(self.result_path+'/log_file/IFS_'+'_'+data_time+'.log') + + self.log.info('STARTING A NEW SIMULATION') + + self.log.info(self.information) + + return + ######################################################################################### + +####################################################################### + + + def readCosmicRayInformation(self): + """ + Reads in the cosmic ray track information from two input files. + + Stores the information to a dictionary called cr. + """ + self.log.info('Reading in cosmic ray information from %s and %s' % (self.information['cosmicraylengths'], + self.information['cosmicraydistance'])) + + crLengths = np.loadtxt(self.information['cosmicraylengths']) + crDists = np.loadtxt(self.information['cosmicraydistance']) + + self.cr = dict(cr_u=crLengths[:, 0], cr_cdf=crLengths[:, 1], cr_cdfn=np.shape(crLengths)[0], + cr_v=crDists[:, 0], cr_cde=crDists[:, 1], cr_cden=np.shape(crDists)[0]) + +############################################################################################## + + + def configure(self): + """ + Configures the simulator with input information and creates and empty array to which the final image will + be build on. + """ + self.readConfigs() + + self.processConfigs() + + self.log.info('Read in the configuration files and created an empty array') + +################################################################################################################# + + def MakeFlatMatrix(self, img, seed): + #### + ysize, xsize=img.shape + np.random.seed(seed) + r1,r2,r3,r4 = np.random.random(4) + a1 = -0.5 + 0.2*r1 + a2 = -0.5 + 0.2*r2 + a3 = r3+5 + a4 = r4+5 + xmin,xmax,ymin,ymax = 0, xsize,0, ysize + Flty, Fltx = np.mgrid[ymin:ymax, xmin:xmax] + np.random.seed(seed) + p1,p2,bg=np.random.poisson(1000, 3) + Fltz = 1e-6*(a1 * (Fltx-p1) ** 2 + a2 * (Flty-p2) ** 2 - a3*Fltx - a4*Flty) + bg*20 + FlatMat = Fltz/np.mean(Fltz) + + return FlatMat + + ######################################################################################################### + def addLampFlux(self): + """ + Include flux from the calibration source. + """ + + + self.image_b += fits.getdata(self.information['flatflux']) + + self.image_r += fits.getdata(self.information['flatflux']) + + self.log.info('Flux from the calibration unit included (%s)' % self.information['flatflux']) + + + def applyflatfield(self): + """ + Applies multiplicative flat field to emulate pixel-to-pixel non-uniformity. + + Because the pixel-to-pixel non-uniformity effect (i.e. multiplicative) flat fielding takes place + before CTI and other effects, the flat field file must be the same size as the pixels that see + the sky. + """ + + ### + flat_b=self.MakeFlatMatrix(self.image_b, 100) + + flat_r=self.MakeFlatMatrix(self.image_r, 200) + + self.image_b *= flat_b + + self.image_r *= flat_r + + self.log.info('Applied flatfield to images.') + + return + + ######################################################## + +############################################################################### + def addCosmicRays(self): + """ + Add cosmic rays to the arrays based on a power-law intensity distribution for tracks. + Cosmic ray properties (such as location and angle) are chosen from random Uniform distribution. + For details, see the documentation for the cosmicrays class in the support package. + """ + self.readCosmicRayInformation() + self.cr['exptime'] = self.information['exptime'] #to scale the number of cosmics with exposure time + + #cosmic ray image + crImage_b = np.zeros((2048, 4096), dtype=np.float64) + + crImage_r = np.zeros((3072, 6144), dtype=np.float64) + + #cosmic ray instance + cosmics_b = cosmicrays.cosmicrays(self.log, crImage_b, crInfo=self.cr) + cosmics_r = cosmicrays.cosmicrays(self.log, crImage_r, crInfo=self.cr) + + + #add cosmic rays up to the covering fraction + #CCD_cr = cosmics.addUpToFraction(self.information['coveringFraction'], limit=None) + + CCD_cr_b = cosmics_b.addUpToFraction(self.information['coveringfraction'], limit=None) + CCD_cr_r = cosmics_r.addUpToFraction(self.information['coveringfraction'], limit=None) + + + #paste the information + self.image_b += CCD_cr_b + self.image_r += CCD_cr_r + + + #count the covering factor + area_cr_b = np.count_nonzero(CCD_cr_b) + area_cr_r = np.count_nonzero(CCD_cr_r) + + #self.log.info('The cosmic ray covering factor is %i pixels ' % area_cr) + self.log.info('The cosmic ray in blue channel covering factor is %i pixels ' % area_cr_b) + self.log.info('The cosmic ray in red channel covering factor is %i pixels ' % area_cr_r) + + ######################################################### + +######################################################################### + +######################################################################### + + + def applyDarkCurrent(self): + """ + Apply dark current. Scales the dark with the exposure time. + + Additionally saves the image without noise to a FITS file. + """ + + self.log.info('Added dark current to bule and red channel' ) + + ########## blue zone 1 + self.image_b[0:1024,0:2048] += self.information['exptime'] * self.information['dark1_b'] + + ########## zone 4 ################# + self.image_b[1024:2048,0:2048] += self.information['exptime'] * self.information['dark4_b'] + + ########## zone 2 ################### + self.image_b[0:1024,2048:4096] += self.information['exptime'] * self.information['dark2_b'] + + ########## zone 3 + self.image_b[1024:2048,2048:4096]+= self.information['exptime'] * self.information['dark3_b'] + + + + ########## red zone 1 + self.image_r[0:1536, 0:3072] += self.information['exptime'] * self.information['dark1_r'] + ########## zone 4 ################# + + self.image_r[1536:3712,0:3072] += self.information['exptime'] * self.information['dark4_r'] + + ########## zone 2 ################### + self.image_r[0:1536,3072:6144] += self.information['exptime'] * self.information['dark2_r'] + + ########## zone 3 + self.image_r[1536:3072,3072:6144] += self.information['exptime'] * self.information['dark3_r'] + + +#######################################################################################################3 + + def applyCosmicBackground(self): + """ + Apply dark the cosmic background. Scales the background with the exposure time. + + Additionally saves the image without noise to a FITS file. + """ + + #add background + bcgr = self.information['exptime'] * self.information['cosmic_bkgd'] + #self.image += bcgr + self.image_b += bcgr + self.image_r += bcgr + + self.log.info('Added cosmic background = %f' % bcgr) + + if self.cosmicRays: + #self.imagenoCR += bcgr + self.imagenoCR_b += bcgr + self.imagenoCR_r += bcgr + + ########################################################################################## + + + +############################################################################## + def applyPoissonNoise(self): + """ + Add Poisson noise to the image. + """ + + rounded = np.rint(self.image_b) ### round to + residual = self.image_b.copy() - rounded #ugly workaround for multiple rounding operations... + rounded[rounded < 0.0] = 0.0 + + np.random.seed() + self.image_b = np.random.poisson(rounded).astype(np.float64) + self.log.info('Added Poisson noise on channel blue') + self.image_b += residual + + rounded = np.rint(self.image_r) ### round to + residual = self.image_r.copy() - rounded #ugly workaround for multiple rounding operations... + rounded[rounded < 0.0] = 0.0 + + np.random.seed() + self.image_r = np.random.poisson(rounded).astype(np.float64) + self.log.info('Added Poisson noise on channel red') + self.image_r += residual + + +################################################################################################################### + + def applyCosmetics(self): + """ + Apply cosmetic defects described in the input file. + + Warning:: This method does not work if the input file has exactly one line. + """ + cosmetics = np.loadtxt(self.information['cosmeticsfile_b']) + + x = np.round(cosmetics[:, 0]).astype(int) + y = np.round(cosmetics[:, 1]).astype(int) + value = cosmetics[:, 2] + + cosmetics_b=np.zeros((3712,6784)) + cosmetics_r=np.zeros((3712,6784)) + self.log.info('Adding cosmetic defects to blue channel:' ) + for xc, yc, val in zip(x, y, value): + if 0 <= xc <= 6784 and 0 <= yc <= 3712: + #self.image[yc, xc] = val + self.image_b[yc, xc] = val + cosmetics_b[yc,xc]=val + self.log.info('x=%i, y=%i, value=%f' % (xc, yc, val)) +###################################################################################################### + + cosmetics = np.loadtxt(self.information['cosmeticsfile_r']) + + x = np.round(cosmetics[:, 0]).astype(int) + y = np.round(cosmetics[:, 1]).astype(int) + value = cosmetics[:, 2] + + + self.log.info('Adding cosmetic defects to red channel:' ) + + for xc, yc, val in zip(x, y, value): + if 0 <= xc <= 6784 and 0 <= yc <= 3712: + #self.image[yc, xc] = val + self.image_r[yc, xc] = val + cosmetics_r[yc,xc]=val + self.log.info('x=%i, y=%i, value=%f' % (xc, yc, val)) + + +################################################################################ + + + def applyRadiationDamage(self): + """ + Applies CDM03 radiation model to the image being constructed. + + .. seealso:: Class :`CDM03` + """ + + + self.log.debug('Starting to apply radiation damage model...') + #at this point we can give fake data... + cti = CTI.CDM03bidir(self.information, [], log=self.log) + #here we need the right input data + self.image_b = cti.applyRadiationDamage(self.image_b.copy().transpose(), iquadrant=self.information['quadrant']).transpose() + self.log.info('Radiation damage added.') + + + self.log.debug('Starting to apply radiation damage model...') + #at this point we can give fake data... + cti = CTI.CDM03bidir(self.information, [], log=self.log) + #here we need the right input data + self.image_r = cti.applyRadiationDamage(self.image_r.copy().transpose(), iquadrant=self.information['quadrant']).transpose() + self.log.info('Radiation damage added.') +################################################################################## + + + def applyNonlinearity(self): + """ + Applies a CCD273 non-linearity model to the image being constructed. + """ + + self.log.debug('Starting to apply non-linearity model...') + self.image_b = IFSinstrumentModel.CCDnonLinearityModel(self.image_b.copy()) + + self.log.info('Non-linearity effects included.') + + + self.log.debug('Starting to apply non-linearity model...') + self.image_r = IFSinstrumentModel.CCDnonLinearityModel(self.image_r.copy()) + + self.log.info('Non-linearity effects included.') + +##################################################################################### + def applyReadoutNoise(self): + """ + Applies readout noise to the image being constructed. + + The noise is drawn from a Normal (Gaussian) distribution with average=0.0 and std=readout noise. + """ + + + self.log.info('readnoise added in blue channel') + ########## blue zone 1 + np.random.seed() + self.image_b[0:1856,0:3392] += np.random.normal(loc=0.0, scale=self.information['rn1_b'], size=(1856,3392)) + + ########## zone 4 ################# + np.random.seed() + self.image_b[1856:3712,0:3392] += np.random.normal(loc=0.0, scale=self.information['rn4_b'], size=(1856,3392)) + + ########## zone 2 ################### + np.random.seed() + self.image_b[0:1856,3392:6784] += np.random.normal(loc=0.0, scale=self.information['rn2_b'], size=(1856,3392)) + + ########## zone 3 + np.random.seed() + self.image_b[1856:3712,3392:6784]+= np.random.normal(loc=0.0, scale=self.information['rn3_b'], size=(1856,3392)) + + + ############################################################################ + + self.log.info('readnoise added in blue channel') + + + ########## red zone 1 + np.random.seed() + self.image_r[0:1856, 0:3392] += np.random.normal(loc=0.0, scale=self.information['rn1_r'], size=(1856,3392)) + + ########## zone 4 ################# + np.random.seed() + self.image_r[1856:3712,0:3392] += np.random.normal(loc=0.0, scale=self.information['rn4_r'], size=(1856,3392)) + + ########## zone 2 ################### + np.random.seed() + self.image_r[0:1856,3392:6784] += np.random.normal(loc=0.0, scale=self.information['rn2_r'], size=(1856,3392)) + + ########## zone 3 + np.random.seed() + self.image_r[1856:3712,3392:6784]+= np.random.normal(loc=0.0, scale=self.information['rn3_r'], size=(1856,3392)) + +########################################################################################## + + def electrons2ADU(self): + """ + Convert from electrons to ADUs using the value read from the configuration file. + """ + + + ############################################################### + + self.log.info('Converting from electrons to ADUs using a factor of gain' ) + + ########## blue zone 1 + self.image_b[0:1856,0:3392] /= self.information['gain1_b'] + + ########## zone 4 ################# + self.image_b[1856:3712,0:3392] /= self.information['gain4_b'] + + ########## zone 2 ################### + self.image_b[0:1856,3392:6784] /= self.information['gain2_b'] + + ########## zone 3 + self.image_b[1856:3712,3392:6784]/= self.information['gain3_b'] + + ############################################################################ + + ########## red zone 1 + self.image_r[0:1856, 0:3392] /= self.information['gain1_r'] + + ########## zone 4 ################# + self.image_r[1856:3712,0:3392] /= self.information['gain4_r'] + + ########## zone 2 ################### + self.image_r[0:1856,3392:6784] /= self.information['gain2_r'] + + ########## zone 3 + self.image_r[1856:3712,3392:6784] /= self.information['gain3_r'] + + ##########################################################################3 + + + #################################################################################### + + def applyBias(self): + """ + Adds a bias level to the image being constructed. + + The value of bias is read from the configure file and stored + in the information dictionary (key bias). + """ + + + ########## blue zone 1 + self.image_b[0:1856,0:3392] += self.information['bias1_b'] + + ########## zone 4 ################# + self.image_b[1856:3712,0:3392] += self.information['bias4_b'] + + ########## zone 2 ################### + self.image_b[0:1856,3392:6784] += self.information['bias2_b'] + + ########## zone 3 + self.image_b[1856:3712,3392:6784] += self.information['bias3_b'] + + self.log.info('Bias counts were added to the blue image' ) + + ############################################################################ + + ########## red zone 1 + self.image_r[0:1856, 0:3392] += self.information['bias1_r'] + + ########## zone 4 ################# + self.image_r[1856:3712,0:3392] += self.information['bias4_r'] + + ########## zone 2 ################### + self.image_r[0:1856,3392:6784] += self.information['bias2_r'] + + ########## zone 3 + self.image_r[1856:3712,3392:6784] += self.information['bias3_r'] + + ########################################################################## + + self.log.info('Bias counts were added to the red image' ) + +############################################################################### + +############################################################################### + + def applyBleeding_yan(self): + """ + Apply bleeding along the CCD columns if the number of electrons in a pixel exceeds the full-well capacity. + + Bleeding is modelled in the parallel direction only, because the CCD273s are assumed not to bleed in + serial direction. + + :return: None + """ + + + if self.image_b.max()>self.information['fullwellcapacity']: + + self.log.info('Applying column bleeding to blue CCD image...') + + #loop over each column, as bleeding is modelled column-wise + for i, column in enumerate(self.image_b.T): + sum = 0. + for j, value in enumerate(column): + #first round - from bottom to top (need to half the bleeding) + overload = value - self.information['fullwellcapacity'] + if overload > 0.: + overload /= 2. + #self.image[j, i] -= overload + self.image_b[j, i] -= overload + + sum += overload + + elif sum > 0.: + if -overload > sum: + overload = -sum + + self.image_b[j, i] -= overload + sum += overload + + for i, column in enumerate(self.image_b.T): + sum = 0. + for j, value in enumerate(column[::-1]): + #second round - from top to bottom (bleeding was half'd already, so now full) + overload = value - self.information['fullwellcapacity'] + if overload > 0.: + #self.image[-j-1, i] -= overload + self.image_b[-j-1, i] -= overload + + sum += overload + elif sum > 0.: + if -overload > sum: + overload = -sum + #self.image[-j-1, i] -= overload + self.image_b[-j-1, i] -= overload + + + sum += overload + print('Applying column bleeding to blue image finished.......') + + + ###################################################################### + if self.image_r.max()>self.information['fullwellcapacity']: + + self.log.info('Applying column bleeding to red CCD image...') + + for i, column in enumerate(self.image_r.T): + sum = 0. + for j, value in enumerate(column): + #first round - from bottom to top (need to half the bleeding) + overload = value - self.information['fullwellcapacity'] + if overload > 0.: + overload /= 2. + #self.image[j, i] -= overload + self.image_r[j, i] -= overload + + sum += overload + elif sum > 0.: + if -overload > sum: + overload = -sum + #self.image[j, i] -= overload + self.image_r[j, i] -= overload + + + sum += overload + + for i, column in enumerate(self.image_r.T): + sum = 0. + for j, value in enumerate(column[::-1]): + #second round - from top to bottom (bleeding was half'd already, so now full) + overload = value - self.information['fullwellcapacity'] + if overload > 0.: + #self.image[-j-1, i] -= overload + self.image_r[-j-1, i] -= overload + + sum += overload + elif sum > 0.: + if -overload > sum: + overload = -sum + #self.image[-j-1, i] -= overload + self.image_r[-j-1, i] -= overload + + + sum += overload + print('Applying column bleeding to red image finished.......') + + ############################################################################ + + ############################################################################ + + def discretise(self, max=2**16-1): + """ + Converts a floating point image array (self.image) to an integer array with max values + defined by the argument max. + + :param max: maximum value the the integer array may contain [default 65k] + :type max: float + + :return: None + """ + #avoid negative numbers in case bias level was not added + self.image_b[self.image_b < 0.0] = 0. + #cut of the values larger than max + self.image_b[self.image_b > max] = max + + self.image_b = np.rint(self.image_b).astype(int) + self.log.info('Maximum and total values of the image are %i and %i, respectively' % (np.max(self.image_b), + np.sum(self.image_b))) + + #avoid negative numbers in case bias level was not added + self.image_r[self.image_r < 0.0] = 0. + #cut of the values larger than max + self.image_r[self.image_r > max] = max + + self.image_r = np.rint(self.image_r).astype(int) + self.log.info('Maximum and total values of the image are %i and %i, respectively' % (np.max(self.image_r), + np.sum(self.image_r))) + + ################################################################################################## + + def applyImageShift(self): + + np.random.seed() + ud= np.random.random() # Choose a random rotation + dx= 2* (ud-0.5) * self.information['shiftmax'] + + np.random.seed() + ud= np.random.random() # Choose a random rotation + dy= 2* (ud-0.5) * self.information['shiftmax'] + + self.image_b= ndimage.shift(self.image_b.copy(), [dy+self.information['shift_b_y'] , dx+self.information['shift_b_x']], order=0, mode='nearest') + self.image_r= ndimage.shift(self.image_r.copy(), [dy+self.information['shift_r_y'] , dx+self.information['shift_r_x']], order=0, mode='nearest') + + self.log.info('Applied image shifting to g r i channels.') + self.information['ra'] = dx*self.information['pixel_size'] + self.information['dec'] = dy*self.information['pixel_size'] + + +######################################################################################################33 + + def applyImageRotate(self ): + np.random.seed() + ud = np.random.random() # Choose a random rotation + angle = 2* (ud-0.5) * self.information['tel_rotmax'] + + inputimg=self.image_b.copy() + rotimg=ndimage.rotate(inputimg,angle+self.information['rotate_b'],order=1,reshape=False) # here we choose reshape=False, the rotated image will + self.image_b=rotimg + + inputimg=self.image_r.copy() + rotimg=ndimage.rotate(inputimg,angle+self.information['rotate_r'],order=1,reshape=False) # here we choose reshape=False, the rotated image will + self.image_r=rotimg + + self.information['Tel_rot']=angle + + self.log.info('Applied telescope rotation with angle (in degree)= %f.', angle) +############################################################################### + + def CCDreadout(self): + + imgb=self.image_b.copy() + temp=np.zeros((3712,6784)) + ########## zone 1 + x1=0 + x2=x1+1024 + + y1=0 + y2=y1+2048 + temp[x1:x2,y1:y2]=imgb[0:1024,0:2048] + ########## zone 4 ################# + x1=2688 + x2=x1+1024 + + y1=0 + y2=y1+2048 + temp[x1:x2,y1:y2]=imgb[1024:2048,0:2048] + ########## zone 2 ################### + x1=0 + x2=x1+1024 + + y1=6784-2048 + y2=y1+2048 + temp[x1:x2,y1:y2]=imgb[0:1024,2048:4096] + ########## zone 3 + x1=2688 + x2=x1+1024 + + y1=6784-2048 + y2=y1+2048 + temp[x1:x2,y1:y2]=imgb[1024:2048,2048:4096] + + self.image_b=temp + + ############################################################################## + imgr=self.image_r.copy() + temp=np.zeros((3712,6784)) + ########## zone 1 + x1=0 + x2=x1+1536 + + y1=0 + y2=y1+3072 + temp[x1:x2,y1:y2]=imgr[0:1536, 0:3072] + ########## zone 4 ################# + x1=2176 + x2=x1+1536 + + y1=0 + y2=y1+3072 + temp[x1:x2,y1:y2]=imgr[1536:3712,0:3072] + ########## zone 2 ################### + x1=0 + x2=x1+1536 + + y1=6784-3072 + y2=y1+3072 + temp[x1:x2,y1:y2]=imgr[0:1536,3072:6144] + ########## zone 3 + x1=2176 + x2=x1+1536 + + y1=6784-3072 + y2=y1+3072 + temp[x1:x2,y1:y2]=imgr[1536:3072,3072:6144] + + self.image_r=temp + + return +############################################################################## + + def writeOutputs(self): + """ + Writes out a FITS file using PyFITS and converts the image array to 16bit unsigned integer as + appropriate for VIS. + + Updates header with the input values and flags used during simulation. + """ + + ## Readout information + self.source='sci' + now=datetime.now() + data_time=now.strftime("%Y-%m-%d %H:%M:%S") + exp_endtime=now.strftime("%Y%m%d%H%M%S") + start=now-timedelta(seconds=self.information['exptime']) + exp_starttime=start.strftime("%Y%m%d%H%M%S") + + #write the actual file + obsid=300000000+1 + + data_time=self.dt.strftime("%Y-%m-%d %H:%M:%S") + + exp_starttime=self.dt.strftime("%Y%m%d%H%M%S") + ### exposure end time is t2 ; + t2=self.dt+timedelta(seconds=self.information['exptime']) + exp_endtime=t2.strftime("%Y%m%d%H%M%S") + t3=self.dt+timedelta(seconds=self.information['exptime'])+timedelta(seconds=self.information['readouttime']) + + filename_b='CSST_IFS_B_'+self.source+'_'+exp_starttime+'_'+exp_endtime+'_'+str(obsid)+'_X_L0_VER_'+self.information['img_ver']+'.fits' + file_b=self.result_path+'/sky_Data/'+filename_b + + filename_r='CSST_IFS_R_'+self.source+'_'+exp_starttime+'_'+exp_endtime+'_'+str(obsid)+'_X_L0_VER_'+self.information['img_ver']+'.fits' + file_r=self.result_path+'/sky_Data/'+filename_r + + + #create a new FITS file, using HDUList instance + ofd_b = fits.PrimaryHDU() + + ofd_b.header['GROUPS']=( bool(False), 'always F') + ofd_b.header['DATE'] =( data_time, 'date this file was written' ) + + ofd_b.header['FILENAME']=(filename_b, ' file name C48 ') + ofd_b.header['OBSTYPE'] =( self.source, 'observation type raw,flt, mask, bias, dark, sci') + ofd_b.header['TELESCOP']=('CSST', 'always CSST') + ofd_b.header['INSTRUME']=( 'IFS', ' ') + ofd_b.header['RADECSYS']=('ICRS', ' always ICRS ') + ofd_b.header['EQUINOX'] =( float(2000.0), 'always 2000.0') + ofd_b.header['FITSCREA']=( '4.2.1', 'FITS create software version') + + ######### Object information ############# + + ofd_b.header['OBJECT']=( self.information['name_obj'], 'object name') + ofd_b.header['TARGET']=( (self.information['target']), 'target name, hhmmss+ddmmss') + ofd_b.header['OBJ_RA'] =(np.float64(self.information['ra_obj']) , 'RA of the object in deg') + ofd_b.header['OBJ_DEC']=(np.float64(self.information['dec_obj']) , 'DEC of the object in deg') + + ofd_b.header['RA_PNT0']=( np.float64(self.information['ra_pnt0']) , 'RA of the pointing (degrees) at EXPSTART') + ofd_b.header['DEC_PNT0']=(np.float64(self.information['dec_pnt0']) , 'DEC of the pointing (degrees) at EXPSTART') + + + + ############## + ofd_b.header['OBSID'] =(str(obsid) , 'observation ID, 3+8bit') + + ######## Telescope information ############### + # ofd_b.header['COMMENT'] ='==========================================================' + # ofd_b.header['COMMENT'] ='Telescope information' + # ofd_b.header['COMMENT'] ='==========================================================' + + ofd_b.header['REFFRAME']=('CSSTGSC-1.0' , 'guide star catalog version') + ofd_b.header['DATE-OBS']=(data_time , 'date of the observation (yyyy-mm-dd hh:mm:ss)') + + ofd_b.header['EXPSTART']=(np.float64(time2jd(self.dt)), 'exposure start time') + ofd_b.header['SUNANGL0']=(np.float32(0.0) , 'angle between sun and optical axis at EXPSTART') + ofd_b.header['MOONANG0']=(np.float32(0.0) , 'angle between moon and optical axis at EXPSTART') + ofd_b.header['POS_ANG0']=(np.float64(0.0), 'angle between optical axis and the North Pole at EXPSTART in arcsec') + ofd_b.header['TEL_ALT0']=(np.float64(0.0), 'angle between optical axis and the ground- piston at EXPSTART in deg') + + ofd_b.header['HOODSTA0']=(np.float32(0.0) , 'lens hood altitude at EXPSTART') + ofd_b.header['HOODANG0']=(np.float32(0.0), 'lens hood azimuth at EXPSTART') + ofd_b.header['POSI0_X'] =(np.float64(self.information['POSI0_X']) , 'the orbital position of CSST in X direction at EXPSTART') + ofd_b.header['POSI0_Y'] =(np.float64(self.information['POSI0_Y']) , 'the orbital position of CSST in Y direction at EXPSTART') + ofd_b.header['POSI0_Z'] =(np.float64(self.information['POSI0_Z']) , 'the orbital position of CSST in Z direction at EXPSTART') + ofd_b.header['VELO0_X']=( np.float64(self.information['VELO0_X']) , 'the orbital velocity of CSST in X direction at EXPSTART') + ofd_b.header['VELO0_Y']=( np.float64(self.information['VELO0_Y']) , 'the orbital velocity of CSST in Y direction at EXPSTART') + ofd_b.header['VELO0_Z']=( np.float64(self.information['VELO0_Z']) , 'the orbital velocity of CSST in Z direction at EXPSTART') + + ofd_b.header['Euler0_1']=( np.float64(0.0), 'Euler angle 1 at EXPSTART') + ofd_b.header['Euler0_2']=( np.float64(0.0), 'Euler angle 2 at EXPSTART') + ofd_b.header['Euler0_3']=( np.float64(0.0), 'Euler angle 3 at EXPSTART') + + + ofd_b.header['EXPEND'] =(np.float64(time2jd(t2)) , 'exposure end time') + + ofd_b.header['SUNANGL1']=(np.float32(0.0), 'angle between sun and optical axis at EXPEND') + ofd_b.header['MOONANG1']=(np.float32(0.0) , 'angle between moon and optical axis at EXPEND ') + ofd_b.header['POS_ANG1']=(np.float64(0.0) , 'angle between optical axis and the North Pole at EXPEND in arcsec') + ofd_b.header['TEL_ALT1']=(np.float64(0.0) , 'angle between optical axis and the ground- piston at EXPEND in deg ') + ofd_b.header['HOODSTA1']=(np.float32(0.0), 'lens hood altitude at EXPEND ') + ofd_b.header['HOODANG1']=(np.float32(0.0), 'lens hood azimuth at EXPEND ') + + ofd_b.header['POSI1_X'] =(np.float64(self.information['POSI1_X']) , 'the orbital position of CSST in X direction at EXPEND') + ofd_b.header['POSI1_Y'] =(np.float64(self.information['POSI1_Y']) , 'the orbital position of CSST in Y direction at EXPEND') + ofd_b.header['POSI1_Z'] =(np.float64(self.information['POSI1_Z']) , 'the orbital position of CSST in Z direction at EXPEND') + + ofd_b.header['VELO1_X']=(np.float64(self.information['VELO1_X']) , 'the orbital velocity of CSST in X direction at EXPEND') + ofd_b.header['VELO1_Y']=(np.float64(self.information['VELO1_Y']) , 'the orbital velocity of CSST in Y direction at EXPEND') + ofd_b.header['VELO1_Z']=(np.float64(self.information['VELO1_Z']) , 'the orbital velocity of CSST in Z direction at EXPEND') + + + ofd_b.header['Euler1_1']=( np.float64(0.0), 'Euler angle 1 at EXPEND') + ofd_b.header['Euler1_2']=( np.float64(0.0), 'Euler angle 2 at EXPEND') + ofd_b.header['Euler1_3']=( np.float64(0.0), 'Euler angle 3 at EXPEND') + + ofd_b.header['RA_PNT1']=(np.float64(ofd_b.header['RA_PNT0']), 'RA of the pointing (degrees) at EXPEND in deg') + ofd_b.header['DEC_PNT1']=(np.float64(ofd_b.header['DEC_PNT0']), 'DEC of the pointing (degrees) at EXPEND in deg') + + ofd_b.header['EXPTIME']=(self.information['exptime'], 'exposure duration') + ofd_b.header['EPOCH'] =(np.float32(0.0), 'coordinate epoch') + ofd_b.header['CHECKSUM']=( 0 , 'hdu-checksum') + + ########## finish header for 0 layer + #############################################################################3 + ##### header + + b1= self.image_b[1856:3712,0:3392] #b4 + b2= self.image_b[1856:3712,3392:6784] #b3 + b3= self.image_b[0:1856,0:3392] #b1 + b4= self.image_b[0:1856,3392:6784] #b2 + + ####### do Flip the b2 b2 and b4 array in the up/down or left/right direction. + b2=np.fliplr(b2) ## left to right + b3=np.flipud(b3) ## down to up + + b4=np.fliplr(b4) ## left to right and down to up + b4=np.flipud(b4) + + + bb=np.hstack((b1,b2,b3,b4)) + + + #new image HDU, blue channel, layer 1 + hdu_b =fits.ImageHDU(data=np.uint16(bb)) + + ######### instrument information ###### + ##### + hdu_b.header['PMIRRPOS']=(bool(False), 'FSM pointing,T: to MCI, F: not to MCI') + + if self.source =='sci': + hdu_b.header['CMIRRPOS']=(bool(False), 'position of calibration switch mirror,T: for calibration, F: not') + else: + hdu_b.header['CMIRRPOS']=(bool(True), 'position of calibration switch mirror,T: for calibration, F: not') + + if self.source=='flat': + hdu_b.header['FLAMP'] =(int(1), 'status of flat lamp,0: off, 1: , 2: ') + else: + hdu_b.header['FLAMP'] =(int(0), 'status of flat lamp,0: off, 1: , 2: ') + + + if self.source=='lamp': + hdu_b.header['ALAMP'] =(int(1),'status of atomic emission line lamp,0: off, 1: , 2: ') + else: + hdu_b.header['ALAMP'] =(int(0),'status of atomic emission line lamp,0: off, 1: , 2: ') + + ############# + hdu_b.header['IFSMODE'] =(int(0), 'IFS working mode') + hdu_b.header['IFSTEMP'] =(float(0.0), 'IFS components temperature in degC') + hdu_b.header['IFSSTAT'] =(int(0), 'IFS components status parameter') + ############################################################################## + ################### detector information############################# + # hdu_b.header['COMMENT'] ='==========================================================' + # hdu_b.header['COMMENT'] ='Detector information' + # hdu_b.header['COMMENT'] ='==========================================================' + + hdu_b.header['CAMERA'] =('Blue','camera of IFS') + hdu_b.header['DETNAM'] =('CCD231-c4','detector name') + hdu_b.header['DETSIZE'] =('', 'detector size') + hdu_b.header['DATASEC'] =('', 'data section') + hdu_b.header['PIXSCAL1']=(1856, 'pixel scale for axis 1') + hdu_b.header['PIXSCAL2']=(3392*4, 'pixel scale for axis 2') + hdu_b.header['PIXSIZE1']=(15, 'pixel size in um') + hdu_b.header['PIXSIZE2']=(15, 'pixel size in um') + hdu_b.header['NCHAN'] =(4, 'number of readout channels') + hdu_b.header['NCHAN1'] =(2, 'number of horizontal channels') + hdu_b.header['NCHAN2'] =(2, 'number of verticalchannels') + hdu_b.header['PSCAN1'] =(0, 'horizontal prescan width, per readout channel') + hdu_b.header['PSCAN2'] =(0, 'vertical prescan width, per readout channel') + hdu_b.header['OSCAN1'] =(0,' horizontal overscan width, per readout channel') + hdu_b.header['OSCAN2'] =(0, 'vertical overscan width, per readout channel') + + ## Readout information + # hdu_b.header['COMMENT'] ='=============================================================' + # hdu_b.header['COMMENT'] ='Readout information' + # hdu_b.header['COMMENT'] ='=============================================================' + + + hdu_b.header['READT0'] =(np.float64(time2jd(t2)),'read start time (UTC)') + hdu_b.header['READT1'] =(np.float64(time2jd(t3)), 'read end time (UTC)') + + hdu_b.header['DETTEMP0']=(np.float32(0.0), 'detector temperature at READT0') + hdu_b.header['DETTEMP1']=(np.float32(0.0), 'detector temperature at READT1') + hdu_b.header['BIN_X'] =(0, 'bin number in X (wavelength)') + hdu_b.header['BIN_Y'] =(0, 'bin number in Y (spatial)') + + hdu_b.header['GAIN1'] =(self.information['gain4_b'],'CCD gain (channel 1)') + hdu_b.header['GAIN2'] =(self.information['gain3_b'],'CCD gain (channel 2)') + hdu_b.header['GAIN3'] =(self.information['gain1_b'],'CCD gain (channel 3)') + hdu_b.header['GAIN4'] =(self.information['gain2_b'],'CCD gain (channel 4)') + + hdu_b.header['DARK1'] =(self.information['dark4_b'],'CCD dark (channel 1)') + hdu_b.header['DARK2'] =(self.information['dark3_b'],'CCD dark (channel 2)') + hdu_b.header['DARK3'] =(self.information['dark1_b'],'CCD dark (channel 3)') + hdu_b.header['DARK4'] =(self.information['dark2_b'],'CCD dark (channel 4)') + + + hdu_b.header['RDNOIS1'] =(self.information['rn4_b'],'read noise (channel 1') + hdu_b.header['RDNOIS2'] =(self.information['rn3_b'],'read noise (channel 2') + hdu_b.header['RDNOIS3'] =(self.information['rn1_b'],'read noise (channel 3') + hdu_b.header['RDNOIS4'] =(self.information['rn2_b'],'read noise (channel 4') + + hdu_b.header['DETBIA1'] =(self.information['bias4_b'],'amplifier bias voltage (channel1)') + hdu_b.header['DETBIA2'] =(self.information['bias3_b'],'amplifier bias voltage (channel2)') + hdu_b.header['DETBIA3'] =(self.information['bias1_b'],'amplifier bias voltage (channel3)') + hdu_b.header['DETBIA4'] =(self.information['bias2_b'],'amplifier bias voltage (channel4)') + + hdu_b.header['RDSPEED'] =(100,'read speed (in MHz)') + + hdu_b.header['EXPTIME'] =(self.information['exptime'],'exposure time in seconds') + + hdu_b.header['Img_Ver'] =(self.information['img_ver'], 'IFS CCD image Version') + + hdu_b.header['sky_obj'] =(self.skyfilepath,'input sky fits filepath') + + + ########################################################## + #################### red camera ###################### + + + #create a new FITS file, using HDUList instance + ofd_r = fits.PrimaryHDU() + + ofd_r.header['GROUPS']=( bool(False), 'always F') + ofd_r.header['DATE'] =( data_time, 'date this file was written' ) + + ofd_r.header['FILENAME']=(filename_r, ' file name C48 ') + + ofd_r.header['OBSTYPE'] =( self.source, 'observation type raw,flt, mask, bias, dark, sci') + + ofd_r.header['TELESCOP']=('CSST' , 'always CSST') + ofd_r.header['INSTRUME']=( 'IFS', ' ') + ofd_r.header['RADECSYS']=('ICRS', ' always ICRS ') + ofd_r.header['EQUINOX'] =( float(2000.0), 'always 2000.0') + ofd_r.header['FITSCREA']=( '4.2.1' , 'FITS create software version') + ######### Object information ############# + + ######### Object information ############# + # ofd_r.header['COMMENT']='=======================================================================' + # ofd_r.header['COMMENT']='Object information' + # ofd_r.header['COMMENT']='=======================================================================' + + ofd_r.header['OBJECT']=( self.information['name_obj'], 'object name') + ofd_r.header['TARGET']=( (self.information['target']), 'target name, hhmmss+ddmmss') + ofd_r.header['OBJ_RA'] =(np.float64(self.information['ra_obj']) , 'RA of the object in deg') + ofd_r.header['OBJ_DEC']=(np.float64(self.information['dec_obj']) , 'DEC of the object in deg') + + ofd_r.header['RA_PNT0']=( np.float64(self.information['ra_pnt0']) , 'RA of the pointing (degrees) at EXPSTART') + ofd_r.header['DEC_PNT0']=(np.float64(self.information['dec_pnt0']) , 'DEC of the pointing (degrees) at EXPSTART') + + ofd_r.header['OBSID'] =(str(obsid) , 'observation ID, 3+8bit ') + + ######## Telescope information ############### + # ofd_r.header['COMMENT']='=======================================================================' + # ofd_r.header['COMMENT']='Telescope information' + # ofd_r.header['COMMENT']='=======================================================================' + + ofd_r.header['REFFRAME']=('CSSTGSC-1.0' , 'guide star catalog version ') + ofd_r.header['DATE-OBS']=(data_time , 'date of the observation (yyyy-mm-dd hh:mm:ss)') + + ofd_r.header['EXPSTART']=(np.float64(exp_starttime), 'exposure start time ') + ofd_r.header['SUNANGL0']=(np.float32(0.0) , 'angle between sun and optical axis at EXPSTART ') + ofd_r.header['MOONANG0']=(np.float32(0.0) , 'angle between moon and optical axis at EXPSTART ') + ofd_r.header['POS_ANG0']=(np.float64(0.0), 'angle between optical axis and the North Pole at EXPSTART in arcsec ') + ofd_r.header['TEL_ALT0']=(np.float64(0.0), 'angle between optical axis and the ground- piston at EXPSTART in deg ') + ofd_r.header['HOODSTA0']=(np.float32(0.0) , 'lens hood altitude at EXPSTART ') + ofd_r.header['HOODANG0']=(np.float32(0.0), 'lens hood azimuth at EXPSTART ') + ofd_r.header['POSI0_X'] =(np.float64(self.information['POSI0_X']) , 'the orbital position of CSST in X direction at EXPSTART') + ofd_r.header['POSI0_Y'] =(np.float64(self.information['POSI0_Y']) , 'the orbital position of CSST in Y direction at EXPSTART') + ofd_r.header['POSI0_Z'] =(np.float64(self.information['POSI0_Z']) , 'the orbital position of CSST in Z direction at EXPSTART') + ofd_r.header['VELO0_X']=( np.float64(self.information['VELO0_X']) , 'the orbital velocity of CSST in X direction at EXPSTART') + ofd_r.header['VELO0_Y']=( np.float64(self.information['VELO0_Y']) , 'the orbital velocity of CSST in Y direction at EXPSTART') + ofd_r.header['VELO0_Z']=( np.float64(self.information['VELO0_Z']) , 'the orbital velocity of CSST in Z direction at EXPSTART') + + ofd_r.header['Euler0_1']=( np.float64(0.0), 'Euler angle 1 at EXPSTART') + ofd_r.header['Euler0_2']=( np.float64(0.0), 'Euler angle 2 at EXPSTART') + ofd_r.header['Euler0_3']=( np.float64(0.0), 'Euler angle 3 at EXPSTART') + + ofd_r.header['EXPEND'] =(np.float64(exp_endtime) , 'exposure end time') + + ofd_r.header['SUNANGL1']=(np.float32(0.0), 'angle between sun and optical axis at EXPEND') + ofd_r.header['MOONANG1']=(np.float32(0.0) , 'angle between moon and optical axis at EXPEND ') + ofd_r.header['POS_ANG1']=(np.float64(0.0) , 'angle between optical axis and the North Pole at EXPEND in arcsec') + ofd_r.header['TEL_ALT1']=(np.float64(0.0) , 'angle between optical axis and the ground- piston at EXPEND in deg ') + ofd_r.header['HOODSTA1']=(np.float32(0.0), 'lens hood altitude at EXPEND ') + ofd_r.header['HOODANG1']=(np.float32(0.0), 'lens hood azimuth at EXPEND ') + + ofd_r.header['POSI1_X'] =(np.float64(self.information['POSI1_X']) , 'the orbital position of CSST in X direction at EXPEND') + ofd_r.header['POSI1_Y'] =(np.float64(self.information['POSI1_Y']) , 'the orbital position of CSST in Y direction at EXPEND') + ofd_r.header['POSI1_Z'] =(np.float64(self.information['POSI1_Z']) , 'the orbital position of CSST in Z direction at EXPEND') + + ofd_r.header['VELO1_X']=(np.float64(self.information['VELO1_X']) , 'the orbital velocity of CSST in X direction at EXPEND') + ofd_r.header['VELO1_Y']=(np.float64(self.information['VELO1_Y']) , 'the orbital velocity of CSST in Y direction at EXPEND') + ofd_r.header['VELO1_Z']=(np.float64(self.information['VELO1_Z']) , 'the orbital velocity of CSST in Z direction at EXPEND') + + ofd_r.header['Euler1_1']=( np.float64(0.0), 'Euler angle 1 at EXPEND') + ofd_r.header['Euler1_2']=( np.float64(0.0), 'Euler angle 2 at EXPEND') + ofd_r.header['Euler1_3']=( np.float64(0.0), 'Euler angle 3 at EXPEND') + + ofd_r.header['RA_PNT1']=(np.float64(ofd_r.header['RA_PNT0']), 'RA of the pointing (degrees) at EXPEND in deg') + ofd_r.header['DEC_PNT1']=(np.float64(ofd_r.header['DEC_PNT0']), 'DEC of the pointing (degrees) at EXPEND in deg') + + ofd_r.header['EXPTIME']=(self.information['exptime'], 'exposure duration') + ofd_r.header['EPOCH'] =(np.float32(0.0), 'coordinate epoch') + ofd_r.header['CHECKSUM']=( 0 , 'hdu-checksum') + + ### finish 0 layer header + + ########## finish header for 0 layer + + # ########## blue zone 1--to--3 + # self.image_r[0:1856,0:3392] += self.information['bias1_r'] + + # ########## zone 4 --to---1 ################# + # self.image_r[1856:3712,0:3392] += self.information['bias4_r'] + + # ########## zone 2 ----to----4 ################### + # self.image_r[0:1856,3392:6784] += self.information['bias2_r'] + + # ########## zone 3 ---to------2 + # self.image_r[1856:3712,3392:6784] += self.information['bias3_r'] + #############################################################################3 + ##### header + + b1= self.image_r[1856:3712,0:3392] + b2= self.image_r[1856:3712,3392:6784] + b3= self.image_r[0:1856,0:3392] + b4= self.image_r[0:1856,3392:6784] + + + ####### do Flip the b2 b2 and b4 array in the up/down or left/right direction. + b2=np.fliplr(b2) ## left to right + b3=np.flipud(b3) ## down to up + + b4=np.fliplr(b4) ## left to right and down to up + b4=np.flipud(b4) + + + + rr=np.hstack((b1,b2,b3,b4)) + #new image HDU, blue channel, layer 1 + hdu_r =fits.ImageHDU(data=np.uint16(rr)) + + + ######################################### + ######### instrument information ###### + hdu_r.header['PMIRRPOS']=(bool(False), 'FSM pointing,T: to MCI, F: not to MCI') + + + hdu_r.header['CMIRRPOS']=(bool(False), 'position of calibration switch mirror,T: for calibration, F: not') + + hdu_r.header['FLAMP'] =(int(0), 'status of flat lamp,0: off, 1: , 2: ') + + hdu_r.header['ALAMP'] =(int(0),'status of atomic emission line lamp,0: off, 1: , 2: ') + + hdu_r.header['IFSMODE'] =(int(0), 'IFS working mode') + hdu_r.header['IFSTEMP'] =(float(0.0), 'IFS components temperature in degC') + hdu_r.header['IFSSTAT'] =(int(0), 'IFS components status parameter') + + ################### detector information############################# + # hdu_r.header['COMMENT']='=======================================================================' + # hdu_r.header['COMMENT']='Detector information' + # hdu_r.header['COMMENT']='=======================================================================' + + hdu_r.header['CAMERA'] =('Red','camera of IFS') + hdu_r.header['DETNAM'] =('CCD231-c4','detector name') + hdu_r.header['DETSIZE'] =('', 'detector size') + hdu_r.header['DATASEC'] =('', 'data section') + hdu_r.header['PIXSCAL1']=(1856, 'pixel scale for axis 1') + hdu_r.header['PIXSCAL2']=(3392*4, 'pixel scale for axis 2') + hdu_r.header['PIXSIZE1']=(15, 'pixel size in um') + hdu_r.header['PIXSIZE2']=(15, 'pixel size in um') + hdu_r.header['NCHAN'] =(4, 'number of readout channels') + hdu_r.header['NCHAN1'] =(2, 'number of horizontal channels') + hdu_r.header['NCHAN2'] =(2, 'number of verticalchannels') + hdu_r.header['PSCAN1'] =(0, 'horizontal prescan width, per readout channel') + hdu_r.header['PSCAN2'] =(0, 'vertical prescan width, per readout channel') + hdu_r.header['OSCAN1'] =(0,' horizontal overscan width, per readout channel') + hdu_r.header['OSCAN2'] =(0, 'vertical overscan width, per readout channel') + +##################################################################################################### + ## Readout information + # hdu_r.header['COMMENT']='=======================================================================' + # hdu_r.header['COMMENT']='Readout information' + # hdu_r.header['COMMENT']='=======================================================================' + + + + hdu_r.header['READT0'] =(np.float64(time2jd(t2)),'read start time (UTC)') + hdu_r.header['READT1'] =(np.float64(time2jd(t3)), 'read end time (UTC)') + + hdu_r.header['DETTEMP0']=(np.float32(0.0), 'detector temperature at READT0') + hdu_r.header['DETTEMP1']=(np.float32(0.0), 'detector temperature at READT1') + hdu_r.header['BIN_X'] =(0, 'bin number in X (wavelength)') + hdu_r.header['BIN_Y'] =(0, 'bin number in Y (spatial)') + + hdu_r.header['GAIN1'] =(self.information['gain4_r'],'CCD gain (channel 1)') + hdu_r.header['GAIN2'] =(self.information['gain3_r'],'CCD gain (channel 2)') + hdu_r.header['GAIN3'] =(self.information['gain1_r'],'CCD gain (channel 3)') + hdu_r.header['GAIN4'] =(self.information['gain2_r'],'CCD gain (channel 4)') + + + hdu_r.header['DARK1'] =(self.information['dark4_r'],'CCD dark (channel 1)') + hdu_r.header['DARK2'] =(self.information['dark3_r'],'CCD dark (channel 2)') + hdu_r.header['DARK3'] =(self.information['dark1_r'],'CCD dark (channel 3)') + hdu_r.header['DARK4'] =(self.information['dark2_r'],'CCD dark (channel 4)') + + + hdu_r.header['RDNOIS1'] =(self.information['rn4_r'],'read noise (channel 1') + hdu_r.header['RDNOIS2'] =(self.information['rn3_r'],'read noise (channel 2') + hdu_r.header['RDNOIS3'] =(self.information['rn1_r'],'read noise (channel 3') + hdu_r.header['RDNOIS4'] =(self.information['rn2_r'],'read noise (channel 4') + + hdu_r.header['DETBIA1'] =(self.information['bias4_r'],'amplifier bias voltage (channel1)') + hdu_r.header['DETBIA2'] =(self.information['bias3_r'],'amplifier bias voltage (channel2)') + hdu_r.header['DETBIA3'] =(self.information['bias1_r'],'amplifier bias voltage (channel3)') + hdu_r.header['DETBIA4'] =(self.information['bias2_r'],'amplifier bias voltage (channel4)') + + hdu_r.header['RDSPEED'] =(100,'read speed (in MHz)') + + hdu_r.header['EXPTIME'] =(self.information['exptime'],'exposure time in seconds') + + hdu_r.header['Img_Ver'] =(self.information['img_ver'], 'IFS CCD image Version') + + hdu_r.header['sky_obj'] =(self.skyfilepath,'input sky fits filename') + + + + hdulist_b=fits.HDUList([ofd_b, hdu_b]) + hdulist_b.writeto(file_b, overwrite=True) + #print('IFS_b.fits is created ') + + hdulist_r=fits.HDUList([ofd_r, hdu_r]) + hdulist_r.writeto(file_r, overwrite=True) + #print('IFS_r.fits is created ') + ################################################################################## + + def earthshine(self,theta): + """ + For given theta angle, return the earth-shine spectrum. + + :param theta: angle (in degree) from the target to earth limb. + :return: the scaled solar spectrum + template_wave: unit in A + template_flux: unit in erg/s/cm^2/A/arcsec^2 + + """ + + # read solar template + solar_template = pd.read_csv(self.information['indata_path']+'/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(self.information['indata_path']+'/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(self.information['indata_path']+'/refs/filter_Bessell_V.dat', sep='\s+', + header=None, comment='#') + filter_wave = cat_filter_V[0].values + filter_response = cat_filter_V[1].values + + # interplate to the target wavelength in V-band + ind_filter = (template_wave >= np.min(filter_wave)) & (template_wave <= np.max(filter_wave)) + filter_wave_interp = template_wave[ind_filter] + filter_response_interp = np.interp(filter_wave_interp, filter_wave, filter_response) + + filter_constant = simps(filter_response_interp * filter_wave_interp, filter_wave_interp) + template_constant = simps(filter_response_interp * template_wave[ind_filter] * template_flux[ind_filter], + template_wave[ind_filter]) + dwave = filter_wave_interp[1:] - filter_wave_interp[:-1] + wave_eff = np.nansum(dwave * filter_wave_interp[1:] * filter_response_interp[1:]) / \ + np.nansum(dwave * filter_response_interp[1:]) + + # get the normalized value at theta. + u0 = np.interp(theta, angle, surface_brightness) # mag/arcsec^2 + u0 = 10**((u0 + 48.6)/(-2.5)) # target flux in erg/s/cm^2/Hz unit + u0 = u0 * 3e18 / wave_eff**2 # erg/s/cm^2/A/arcsec^2 + + factor = u0 * filter_constant / template_constant + norm_flux = template_flux * factor # erg/s/cm^2/A/arcsec^2 + + self.earthshine_wave=template_wave # A + self.earthshine_flux=norm_flux + + return + + +######################################################################################################################################################################################################################################################## + + + def zodiacal(self, ra, dec, time): + """ + For given RA, DEC and TIME, return the interpolated zodical spectrum in Leinert-1998. + + :param ra: RA in unit of degree, ICRS frame + :param dec: DEC in unit of degree, ICRS frame + :param time: the specified string that in ISO format i.e., yyyy-mm-dd. + :return: + wave_A: wavelength of the zodical spectrum + spec_mjy: flux of the zodical spectrum, in unit of MJy/sr + spec_erg: flux of the zodical spectrum, in unit of erg/s/cm^2/A/sr + + """ + + # get solar position + dt = datetime.fromisoformat(time) + jd = julian.to_jd(dt, fmt='jd') + t = Time(jd, format='jd', scale='utc') + + astro_sun = get_sun(t) + ra_sun, dec_sun = astro_sun.gcrs.ra.deg, astro_sun.gcrs.dec.deg + + radec_sun = SkyCoord(ra=ra_sun*u.degree, dec=dec_sun*u.degree, frame='gcrs') + lb_sun = radec_sun.transform_to('geocentrictrueecliptic') + + # get offsets between the target and sun. + radec_obj = SkyCoord(ra=ra*u.degree, dec=dec*u.degree, frame='icrs') + lb_obj = radec_obj.transform_to('geocentrictrueecliptic') + + beta = abs(lb_obj.lat.degree) + lamda = abs(lb_obj.lon.degree - lb_sun.lon.degree) + + # interpolated zodical surface brightness at 0.5 um + zodi = pd.read_csv(self.information['indata_path']+'/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]) + xx, yy = np.meshgrid(beta_angle, lamda_angle) + f = interpolate.interp2d(xx, yy, zodi, kind='linear') + zodi_obj = f(beta, lamda) # 10^−8 W m−2 sr−1 um−1 + + # read the zodical spectrum in the ecliptic + cat_spec = pd.read_csv(self.information['indata_path']+'/refs/solar_spec.dat', sep='\s+', header=None, comment='#') + wave = cat_spec[0].values # A + spec0 = cat_spec[1].values # 10^-8 W m^−2 sr^−1 μm^−1 + zodi_norm = 252 # 10^-8 W m^−2 sr^−1 μm^−1 + + spec = spec0 * (zodi_obj / zodi_norm) * 1e-8 # W m^−2 sr^−1 μm^−1 + + # convert to the commonly used unit of MJy/sr, erg/s/cm^2/A/sr + wave_A = wave # A + spec_mjy = spec * 0.1 * wave_A**2 / 3e18 * 1e23 * 1e-6 # MJy/sr + spec_erg = spec * 0.1 # erg/s/cm^2/A/sr + spec_erg2 = spec_erg / 4.25452e10 # erg/s/cm^2/A/arcsec^2 + + self.zodiacal_wave=wave_A # in A + self.zodiacal_flux=spec_erg2 + + return + ################################################################################### + ################################################################################## + def CalskyNoise(self, lam): + + + # calculate sky noise; + planckh= 6.62620*10**-27 # erg s; + cc=2.99792458*10**17 # in nm/s + fov2=0.01 # arcsec^2 + + # lam is input wavelength in nm + + ########################################## + self.earthshine_wave # A + self.earthshine_flux # erg/s/cm^2/A/arcsec^2 + earthshine_flux=np.interp(lam*10.0, self.earthshine_wave,self.earthshine_flux) # flux from zodiacal + + self.zodiacal_wave # in A + self.zodiacal_flux # erg/s/cm^2/A/arcsec^2 + zodiacal_flux=np.interp(lam*10.0, self.zodiacal_wave,self.zodiacal_flux) # flux from zodiacal + fluxlam_sky=(earthshine_flux+zodiacal_flux)*fov2 # erg/s/cm2/A + ############### + + ephoton=planckh*cc/lam # in erg/photon, cc与lambda单位需要一致; + Ns_skynoise=fluxlam_sky/ephoton # in unit of photons/cm2/s/A + + + return Ns_skynoise + + + ################################################################################# + def sim_sky_img(self,skyfitsfilename, skyRa_shift, skyDec_shift, sky_rot, exposuretime): + + + ############################################################################ + ### load fits file + indatafile=skyfitsfilename + a=fits.open(indatafile) + ####################################### + self.information['name_obj']=a[0].header['OBJECT'] + self.information['ra_obj'] =a[0].header['RA'] ### in degree + self.information['dec_obj'] =a[0].header['DEC'] ### in degree + + disRa =(skyRa_shift)/3600.0 ##convert unit of degree to arcsec + disDec=(skyDec_shift)/3600.0 ##convert unit of degree to arcsec + + self.information['ra_pnt0'] =a[0].header['RA'] + disRa/np.cos(a[0].header['DEC']/180.0*np.pi) + self.information['dec_pnt0']=a[0].header['DEC']+ disDec + + self.earthshine(self.earthshine_theta) + + self.zodiacal(self.information['ra_obj'], self.information['dec_obj'], self.zodiacal_time) + + self.information['target']=deg2HMS(self.information['ra_obj'], self.information['dec_obj']) + + + ### main input data + SpecCube=a[1].data ## spectrum data cube; + + Wave=0.1*a[2].data # the relatived wavelength which is converted from Unit A to nm + #print('Wave data header', hdr) + + ###################################################################################### + + exptime=self.information['exptime'] #exposure time + + dis_dx=disRa # image shift Ra in arcsec + dis_dy=disDec # image shift Dec in arcsec + + sizeout= len(SpecCube[:,0,0]) + + blue_img=galsim.Image(np.zeros((2048,4096)),copy=True) + blue_img.scale=self.pixelscale + blue_img.setOrigin=(0,0) + + red_img=galsim.Image(np.zeros((3072,6144)),copy=True) + red_img.scale=self.pixelscale + red_img.setOrigin=(0,0) + + blue_sensor=galsim.Sensor() + + red_sensor=galsim.Sensor() + + deltalam=np.mean(np.diff(Wave)) + + energy=0.0 + + energy_blue=0.0 + energy_red=0.0 + + width_blue=0 + ################################ + ############## doppler effect to photons.wavelength ############# + + #self.orbit_pars + x_sat=float(self.orbit_pars[self.orbit_exp_num,1]) + y_sat=float(self.orbit_pars[self.orbit_exp_num,2]) + z_sat=float(self.orbit_pars[self.orbit_exp_num,3]) + vx_sat=float(self.orbit_pars[self.orbit_exp_num,4]) + vy_sat=float(self.orbit_pars[self.orbit_exp_num,5]) + vz_sat=float(self.orbit_pars[self.orbit_exp_num,6]) + + self.information['POSI0_X']=x_sat + self.information['POSI0_Y']=y_sat + self.information['POSI0_Z']=z_sat + self.information['VELO0_X']=vx_sat + self.information['VELO0_Y']=vy_sat + self.information['VELO0_Z']=vz_sat + + + theta1=beta_angle( x_sat,y_sat,z_sat,vx_sat,vy_sat,vz_sat, self.information['ra_obj'], self.information['dec_obj']) + + v1=np.sqrt(vx_sat**2+vy_sat**2+vz_sat**2)*np.cos(theta1/180.0*np.pi) # velocity at stat exposure time + vv1=LSR_velocity(self.information['ra_obj'],self.information['dec_obj'],v1, self.TianCe_day) + + + ################################################# + + ### exposure end time is t2 ; + t2=self.dt+timedelta(seconds=self.information['exptime']) + + t2jd=time2jd(t2) + + if self.orbit_pars[-1,0]1e-3) + energy=energy+sum(photons.flux[idx0]) ### totla energy for slice image + p_num=len(idx0[0]) + + ############################################################################################### + ############### find photons for blue channel, and make the flux multiple the optical and CCD efficiency + + np.random.seed() + wavesample=lam1+(lam2-lam1)*np.random.rand(p_num) + + + if (lam>=350.0 and lam<=650.0): + ## bulue channel + photons_blue=galsim.PhotonArray(N=p_num, x=photons.x[idx0], y=photons.y[idx0], flux = Qe_blue*photons.flux[idx0],wavelength=wavesample) + + dx_blue, dy_blue = get_dx_dy_blue(wavesample) + + photons_blue.x=photons_blue.x/self.pixelscale+dx_blue+self.slice_blue['px'][k] + + photons_blue.y=photons_blue.y/self.pixelscale+dy_blue+self.slice_blue['py'][k] + + blue_sensor.accumulate(photons_blue, blue_img) + + energy_blue=energy_blue+sum(photons_blue.flux) + + width_blue=width_blue+deltalam/32.0 + + + + if (lam>=560.0) & (lam<=1000.0 ): + ## red channel + photons_red=galsim.PhotonArray(N=p_num,x=photons.x[idx0],y=photons.y[idx0], flux = Qe_red*photons.flux[idx0],wavelength=wavesample) + + dx_red, dy_red = get_dx_dy_red(wavesample) + + photons_red.x=photons_red.x/self.pixelscale+dx_red+self.slice_red['px'][k] + + photons_red.y=photons_red.y/self.pixelscale+dy_red+self.slice_red['py'][k] + + red_sensor.accumulate(photons_red, red_img) + + energy_red=energy_red+sum(photons_red.flux) + + #################################################################################### + ## stray light will cover 2% of input total light; + blue_img.array[:,:]=blue_img.array[:,:]+0.01*energy/2048/4096 + + red_img.array[:,:] =red_img.array[:,:]+ 0.01*energy/3072/6144 + + self.image_b=blue_img.array + self.image_r=red_img.array + + return + +################################################################################################# + +################################################################################################# + + def simulate(self, skyfitsin, skyRa_shift, skyDec_shift,sky_rot, exptime): + + + """ + Create a single simulated image of a quadrant defined by the configuration file. + + + """ + + #self.configure() #print the configfile name and path; + + self.dt=datetime.now() + + self.information['exptime']=exptime + + self.skyfilepath=skyfitsin + + np.random.seed() + ud = np.random.random() # Choose a random + self.earthshine_theta=ud * 60 # in degree + + ################################################################## + #### load orbit parameters ##### + flag=0 + for k in range(1,50,1): + + fn=self.information['indata_path']+'/refs/orbit20160925/'+str(k)+'.txt'; + d=np.loadtxt(fn); + self.dt_num=int((self.information['exptime']+self.information['readouttime']+125)/120) + now_dt=datetime.utcnow() + now_jd=time2jd(now_dt) + for kk in range(len(d[:,0])): + if now_jd-d[kk,0]<=0: + flag=1 + break + if flag==1: + break + #####################end for + self.orbit_pars=d + self.orbit_file_num=k + self.orbit_exp_num =kk + + exptime_start_jd=d[kk,0] #### jd time, utc format + + self.dt=julian.from_jd(exptime_start_jd, fmt='jd') + + self.TianCe_day=self.dt.strftime("%Y-%m-%d") ###str(self.dt.year)+'-'+str(self.dt.month)+'-'+str(self.dt.day) + + self.TianCe_exp_start=dt2hmd(self.dt) + + self.zodiacal_time=self.TianCe_day + + ####################################################################### + + self.sim_sky_img(skyfitsin, skyRa_shift, skyDec_shift, sky_rot, self.information['exptime']) + + self.information['sky_rot']=sky_rot + self.information['skyRa_shift']=skyRa_shift + self.information['skyRa_shift']=skyDec_shift + +############################################################################### +############ add some effect to images ####################################### + + + if self.flatfieldM: + self.applyflatfield() + #print('Applying flatfieldM finished.......') + + + if self.darknoise: + self.applyDarkCurrent() + + + if self.cosmicRays: + self.addCosmicRays() + #print('Applying cosmicRays finished.......') + + if self.bleeding: + self.applyBleeding_yan() + #print('Applying bleeding finished.......') + + self.applyPoissonNoise() + + + if self.nonlinearity: + self.applyNonlinearity() + #print('Applying nonlinearity finished.......') + + + if self.radiationDamage: + self.applyRadiationDamage() + #print('Applying radiationDamage finished.......') + + + + ##### cut original CCD image to four parts by four read out channels and zones + self.CCDreadout() + + if self.readoutNoise: + self.applyReadoutNoise() + #print('Applying readoutNoise finished.......') + + self.electrons2ADU() + + self.applyBias() + + if self.cosmetics: + self.applyCosmetics() + #print('Applying cosmetics finished.......') + + self.discretise() + + self.writeOutputs() + + self.log.info('Using the following input values:') + + for key, value in self.information.items(): + self.log.info('%s = %s' % (key, value)) + + self.log.info('Using the following booleans:') + + for key, value in self.booleans.items(): + self.log.info('%s = %s' % (key, value)) + + self.log.info('Finished the simulation.') + +############################################################################################## +############################################################################################## +def runIFSsim(configfile): + + + opts, args = processArgs() + + opts.configfile=configfile + + simulate= IFSsimulator(opts) + + skyfitsin=simulate.information['skyfitsin'] + + exptime=simulate.information['exptime'] + + sky_ra_dis=simulate.information['sky_ra_dis'] + + sky_dec_dis=simulate.information['sky_dec_dis'] + + sky_angle_dis=simulate.information['sky_angle_dis'] + + + + simulate.simulate(skyfitsin, sky_ra_dis, sky_dec_dis, sky_angle_dis, exptime) + + +########################## begin main fucntion ####################################### +############################################################################################## +############################################################################################## + +if __name__ == "__main__": + + + + if len(sys.argv[:]) <2: + + configfile='./ifs_data/ifs_sim_example.config' + + ########################################################################################### + + if len(sys.argv[:]) >=2: + configfile=sys.argv[1] + if not os.path.exists(configfile): + print('The given input configfile path is wrong......') + sys.exit(1) + + ################################################ + + runIFSsim(configfile) + + print('---The CSST-IFS simulation is successful!---') + + #'/home/yan/IFS_FabuCode/InputData/IFS_sim_Fabu.config' + ############################################################ + + + diff --git a/csst_ifs_sim/ifs_so/__init__.py b/csst_ifs_sim/ifs_so/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/csst_ifs_sim/ifs_so/cdm03.cpython-37m-x86_64-linux-gnu.so b/csst_ifs_sim/ifs_so/cdm03.cpython-37m-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..85a4cfc31920218e8b634b8d53cf9db62547f63f GIT binary patch literal 175816 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

~26Oi-0dTUe}y30A5 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±)gSVZ5twg&{De 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 RXyS^2fdRIa4JL=K9{@_ge4zjU literal 0 HcmV?d00001 diff --git a/csst_ifs_sim/ifs_so/cdm03.cpython-38-x86_64-linux-gnu.so b/csst_ifs_sim/ifs_so/cdm03.cpython-38-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..7bfa02f3f33ab5d5a16e4d35ac622d8bf7a49ed1 GIT binary patch literal 182992 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 WquUQE-mvK}c?Qw%g{A?G%K!jvb|r`a literal 0 HcmV?d00001 diff --git a/csst_ifs_sim/ifs_so/cdm03bidir.cpython-38-x86_64-linux-gnu.so b/csst_ifs_sim/ifs_so/cdm03bidir.cpython-38-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..4ddf6dd453c91a1ed8b3448956bc127596d748f8 GIT binary patch literal 203248 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

<#9UYt0Tvz*wJ;tm zX+hM&c(5ihL@jy~6C#Qpjw}qIRy-`sV6n}}5DN1cEJCsO6VQzV^BG}%L)ZuxsM!i* z?|>IJ0kzO>Vmp)uDFYjTN-#3uHSiGJz#t+GWKf4%Xb7d*7>XGR806-|_=wIbmf;4N zW|$)Eu7;_yfLejAQ2<(Oz{s#4+6cMvfO&;XxRxUjVuSz zjvzrr1ted?Y=ey!LV5r&9?T7l3}NV2LlnX+g^kZaL}5IbQ?RzsJ)wh4aZs9zfqB9@ zh!Zg?J&-U=eJE5tv{wO}g@Or3qDtfHbTBZSgetrRr9soS`0R(NzY0~4Wsn4yUX zCJqW@WQ@%WNc^Ik01-vj3t?A6Ys3a9&BefMfjfv{s_UVu33!p20p)79&Caf-Qne z0dXKJh+xc@P$AI3Am%!AP{xNSfUP2gttST+TQGJGL z4UjUZESv(lh>-ziFBT6%7kDr*GK67TfiW+@3O5SoM%--`n58h4ka`>LGAIMIGzq2> zzw@9PP$&cFjAa{?W@HG3F`qz}*n>_f#Bu^2iZMtWOcO(3CNjVe`;Uh)1))7xP(lou z598TEMHw05VazP35JVx2*8mk|WQd0`JD@@kg)rVFs3;>tJd7C%^&dnbjJFml%E%B8 zV{U>9K@`Gx+o7V24Dm1~EW{uRk-`Md#0;E3Sm3}kGc!y)ff3xy45`ovf+@$AR>7SE z1_lP08W_#U5U?4leLIw9WC(yUVSx@ZaXU1a?n6BX5`#M)$^i9ZpiCqR<~|c>9D{Vi z*kMpHMuq?w6J{wRLl}$+i)oNf^!Npd!J^U*$!#z;EcO@~!eGo&BxNvmGgOR`AppkQ z0~G?<0As^^kEMVD`506ryn}|LDAa2p?XbXm0u4lv*iR_i1j(8uP&UjukUEgL$QWb? z14ACv^cpD5%}~q0p`gN{pk}NxA12rUm1JZHgfSbTLMZByjR&zA;l{(1V;fOpK)3>S z5d||tk-&Ty2WBOfK~0b)3=Es0ZrKZ^85sgjL76|GG$TU*EG%w9!v@O;4g9~Sts{J@co`;Ms9{rZ;k z%b+yqVkjsRmhK5`9D~c?c>5Q3&Hbgo@(w5OmxC(@h~TH`T&Th=tj{4j}|%Zh#6gGt}14 zhgp6GSrEoSxCmp+l7T@Cs>2ORb1+Qi2%gL``3Xj{g(`rCB}^a8(TohCFs2q%B_l%& zjEV449Hy7zU|!k|*BAg}?uQC7Gt@D{eTnc8td$CN6zKc`U8oM&!5N_C$#7{DhBQZx5I^k zVa#1nAxK!lcxR!aSWamIIS@SF$xs4S)C;9SRXL134Jrn@=?%(U52YCyVqn%BLkPi` zr{F>uvtSSpUVtii3Z)qtLSf8A_{q7!FlG*PQ2@ky5ED>IO!Gou<{@jw+~*1o2!=4I zoiGbQfdFIcLM>-xi1mXqVMbyZaR;RwkkhU}J@yq!gG_|8p|&wH1TaCFPEeB>8DcOk z!C0sV8oC5o!oUEt2Ig3hH86HA)NDqExK~i-7bwlh5CCJ!z-^AxfHDz2#wcVM7=odS z5Mco8VMAO5CK(y9ID!?b6Uj!fVibZELnkbcqHBkVqi6?nFwKDEQgjm_qF^m31Pg{6 z7#ZTwHDlQs&&U7^IeVyAu~fgT7>aOt1XCq;2eV+9h{al%2Nj^{Q5Q-xGK9jIdQc%q zE`#yBp`wfop)e+_Y=S6+nT$ze+7*J$u8{dKyFB1_g}|7BaG@X=6WMyq3=MMzrsaXy zEDwZR?hLmn5XMBdDG+0@mXQJG?jWdEE(YcXTw`7g43!x)~4G~ znvo$C#=HX+g2Vuf_Yo?}$Pfx+{)Y-d6vB9dP#1vOu~4QIl!hq8>K>>drn5q@IV)s7 z%vtZCZeU~xfiYnY0ofKZAI9T@x`B})1ja;m7VfwPxeU`;f!LfC2zSjC~&}2382; zWXdBH!q{h^Vqk?ZjwQ6=3NjJKo&gmDD}-^Jpht{=6hh2KAt9ANR0!tP9;hD}8A4#p znQ);nn5QhD9$;h$gE5~#g+TEdG9SkK2^D2z2;+b{Q5i}@6mEy|4nS#$C==A>!cZC_ z3Uw-+Vq&-ib($?y9jE~SmxeO1slu|w5F8p4pynaG902q38K@K^Lja5kvmHx?!^}7p zsvgNGsDt1XthEFeKw`kmh6OLdkPelB=mw3TL7Bx+8WMUHP~LGU&Bzc2W9G|2^nxyS zu7Pp-pn?$HFdi%x!AfBq)F_4VU{MQJ3ge*0GmHm|Z?IAr2Q~6xJXlm?8RkF_Pgoej zvK=TNz}T={2hK1s4lKYx3Sq$o%ZeZ|7#o%o!J1(lSXKlngt1{c5v&l#f%yQW5EAYP zk{Qx1VMerZVV+=s<|I%OUk;5zSp0#+VC)EJv@tRS!ppUYyo3nN2-0#rx^N;5J9z?iTy1mrvPlm-$* zPf{Q;^t1yKLxe6m%Mog629yS=o&{xJhtiA;A#%{N2^J`f3?anWjb)1^$N{j78Uu|) zMuq?w6PEt4q-~JSRH%+3D9y+a0AnI_Vsw`n7;Zzo0t-+qW3x;QFvDT#9{0c`x=I!X zE=OzwlQ4A%w_(htF*0;O{W1wkV<}5PGoOsm^=zPEU|@iy|J86!0Wc;k8!$4&!T1G4UaK0U^*>K8)`oy zUxqnAYyS`^4N9Jn06-@(&5N;vn&%Fs85sg#OoSC!5)0U9aAkcU z`2v+eb_q<39~zb@E`bTc0vur^Ea+k74~jPQM1dlSo;*+_A%RJV#EjLrU}zxcLTN^Z z02mVyt8uXKTL29RMuq?w6Bb5{3~{g^c?As;&`1fC`2|XYMoOSeSO_pO#G(6}ks%J| z+bhtbl93?*#)K8gScVLs0RSD2hw`vec>H}H9u#pfCJWr(Q7|Sfu`x0Pz?h;?Rp4V& zU>s?vAR|Kvj42Nl0;|Ilw1=VU7#ZSV%*$}009a@XL&KAiAr6+fj=+VYV9ZBQA!de& zKdNCIEV1$zstzeuCcvX03dURy6#|!pa~< zhFF+S&%;&4!kDn6z{n5)VFVt!#J==V`K<|dEpo|g23uv97L=|!n_Fc9oP~W2bQ0~nqe`Q2amZR7!#JW85tsB z%%@OQ%nTDdYG52hbVkCMuuKlN0v4Kf(1>MZ2!b(T*`1Lg62{yFRRy*J#zEx#NLV!d zMW}1QSiAxW@+xR(PJ+^m3;{4EERTS$NUnhe3I2uy!ZR7+Ai5 ziNk^z7C10*SRlcY9!wk-UNBF?#37zSkhopM%)oJUKDu+jg6M7m3!*y&EQsz3upq*6 z2n!S@u;73NDI-H9%xYLk!N>r*8w;WZN-{FMhQpeh>OR7Qp{bj{eSPG*em z3(Q;SPJ)ReTMc1jngMY>x(N_bh#myV!~jzV>%C#^X&FGfW3X-+mVPh7Ox!G2s1y@J zDFck%3oS2M7$!cbWrOiTOdv{`89puSSgHC0u_WPg?JG= zc^4|o#8AQjW5aZVjKng73e^Fol)xnDK952M7~2z6_JB5KGE_0Z*vLj=T$BVg15CkI z;4m>1F~Ha`%^=^@LC+8aE5;y7p(0ES6$~&olI{=qb;GtCGci;$z}QH-e_+=g2K8<# zlm?YqFgB9z3pH3>o(I)c1f@Z`VQeJbFR<%|dKXOPfZO*B3^Cw_8K~Wu4r5+d1*>2H z4QjrFZVt7DE&>6G!EysEQG>+Np$QX~P(flab{|xZks%$%gr!`NGJa_4i-OW1F^B`O zk#!jEPK3D|mY+cT{c13?(Zm}ym@Z0$xd>)ESTi<@U7!{t*|MP?W($(;4fWV`Gce4A z>W8_Oks%q=Ims~Rtb>LbXcQfXfeZ|=)Nl{Fz6i8BycRviz=E(SgSi(h2#YgV!T}3n zb3E+wp?aiL2V=uDgEnYjOLZ{4Fm<5th2<6$yI?mJ^&?pVW5YDFFiiYWi#20_jDnd! z>)-&{1;NvxZk+|CLD><;wuUZ{Wn!phfU(a&S80OoVy$6=MGCAQfr!G=7c8nk`e6wL zk!@-jU`Y-ZHXwBnS0R%y7s6EG4E|+MFTgG|0(k|-hG}MDnAlK{Gx(9M?T2p534v~H z1Faf_vA05(Ycn!Lyo0u>)AO}cr3X3x1d@RX*Lv1y* zw6ZpWm;o{u#_ltQh%qumzycmtXM?SR8{p%+LY|=3`KJ!`QG00`H}O zRU@I$2m%WxLOHNlV`K<|Mbbx-U?gnW2VpK9@d35axVFh8P%A9qL|2hF};|8!7}g526tlSpaoaKGX?Z4D+Dt zHy9XTVkJ;H0fw)FdS7MrWWI{%Nq?2llba8d>4T~e0;#C0_{M>xCJXBHd}!T`VgppH z1WF@pkkFI#GkY_L+8ks+@RngTXLX-0;$(@-WXn=mpYvqQ55ES)eiq$5m4Wx)~ztk?iI zMqoz4^n(Rqfe-UBSP)hyAQgNUur@QcK?}=WP#RRv!Pqd(EDRHOU~6W;^upBPC|wyC zjzJAS1*Jijz}PU&EDRG5V6y}@SYWppAX<%CFs3B5(gasfut0%TX<$KEy#{Njg9Tyr z8my(s$dCnN!kQOgb?E&_upq3*2und=K~xtL=D|Y85W1WImi%D+`A~6OIRYjRyRs2S zj(|yjg&HRTDk89EXPAoFh*Dw#u2KS~1|Hxfl@d6Og_RO6&;bHin85f8pyIf~1SY={ zst!k(z@$$?mEjH(mUnLsAFN6_ySvb2-6Ew zhqKUq1~vQ@lm=M>W5YCqda2kfL5?3-vl`YB0d>J^;n^LUalnFD%GVXOuvkN?o>tVt zA_}R5T~Ujrgk4b!D`8VLK#-R!TA56g*2}64JHq3AL1zAVA5jHT!p(N zf~i=6DDyAiD)V7#;E8~wG9Rb0u#^HTlwn~4;|oK>A6J;bV#bl4Oa+dctO?qL1_o5`Y@dD^x?JlUhwn1q==-Dq4P#UTY zPW3?TBUk@osQwhF{cE815^FyPRG$!(Cgffzs5%uWjcy;@V^9XnUk9LjtYPtno(^E) zb_44EM^GAS44k?HwU=7veTJI11?oOnx+K;;5m0?eP@0hYv!LoqpftLDaF0S6Fn_|* zEi7Kq?Rf(YFEeO5bAZxNW8jny^c+%Zndb~Oj|G~aVDUz*dte8yZi1Ra$o;#Z>W)BZ zbo<~Qg)(6IJRW*(Da>84bglypCz!q4p!@?+8fpxjYJ&QcTIS7!nimCiAF1y72h|U| zI){+^1)%mwL1}dR;2woC#G&cR3QB*39;L(sJ-!pF3{Jt+YZIw{E_4zdo!$f$-wK_9 zJp-lT7C{*Yq3Y1-Yf$mOP<^m-hN0Tv)KjQBbov`q+!U(c6H3E1LK&P;adaA{52_4K z!OU3=)d%y}RVW{>5XykLy9&CX-~*KY1ErzL;8Y7#{27#nsbhsrhr?Au7%=f{sQg1H z{T50?R3S*%F>KeN@-TJZpnQZ%2&)mg8U%Kj-ZUuR33{$r2Xx!<1}OaiO0z=u06IYF zzfc-tDuUbwHE%bR-Up?RKxvryGoa=obV694q3ZrYX_z{gdmyS1S6jIst_bIRGt?~!`uPWhfoP&*+A8~L+LUo-3+A-py37!M~E&2 z3GM7KK>H00uoIJD3r7(uAuQ-*C(-I*CxxQZlOV=1EP&FmQ%zw^At{P;q5wyIBuP!wrHmVCEP=)x-43 zLe<0WUx!`Njefg0)EGDgy9ycRE||W(Q1f6nNS8zJO@&>F47-LJZV;3KyR;W}tugF+ zUYLHUGB^cOpA0?PJ`+mAZuo`K6;N@Qd9b^EVKgrDr$F^BgVH;p^gbwk3QEJS28Ue> z45MKe{=%*ahC3X}P=PM(QiIa43wmL+F;pCO!7o%BoXUa9S3zmmh2txreAsQdo1lEy z{kpJQdEo}Z7|?iPg3_=nZDBMoR2+7nE=(JYh8=1Hqm7{b0oWloFm*5*b}$k;tpIJ0 z!qmZN1E@GU4LdUlrVd8Kt^tFc)eoa#XZA0Fwi{MJY1je&u)7Fg=D=thXghBPl!jgX z0lV@G{jLF+J{S#C54*R3kosxRW4>oYY4qDT2= z(zx2=xYUV2^+`Z!87K|27e?b!rvg>40i|`IG)y0i#-+{#s@?)h+dyfUJ{XNl9kKC+ zOC2nJVKgkg!0d(5xb)*v4@+;iq5gqghJ-8q!EU;M-D!b-p#|*z+9lBb2<&PL*d-P) zcfx2HXunGlN}E7wYbfmirCp&k?EVUGDBllC!|uO;nG2(*Lgg1i=`B!tHizq5N}D8g{=0%v>0)3@wK=ptLoVc7oEd`zc_wCsaHDO2clXfZbmKqhaMH%pMpG zi^p_me8Fhg?R>C$26njwOdpIcg6gY=(&*Rm5z^lb)kmy-uyh2wJ_AOJLF+4+JKsb3 zU!XMXRtgv`3QbQif52!rsQPdyodu-}p)~9|4A|uvFdA0R!pwou#JU4^TLw%YjJ^u( z$HI;bKLG8g!TM_q(0-KylvaY$u=CGh=D=v!3Fk1n5ZZ68fYPu-&SCb!^ug%aP<0Ye zcff7|m;mL&&J~B9mkrYgqhY6m!{{4O^X@?D2T=M2l>P#xe?n=PIWQX5zl9y!bpqP& zy8)$P>R@y%^l+IZC=EOGrUA-_se{oopyC41g_s&p8n!K&lz(;7O?70bxLfGr$yq3(PD9ms^4QwBCioFM~hKFq(MEuNro zV{nAH6S_T$0kkUm;*Kc0#y7XRD3zud_D#S=q;+SVh*&O0%XnwCx}AW zIM8{hITN5~?q@-y8SX&E1;QZ$TcG2HZ=m7^(Gc-Z(D9`|IKlxG&Dg?+n+cQ-1sF15 zmpnm?1C!X)OM>GEvmDc50_||eEDw#q=3|yK9$;}XjPfJ|CJv2XutOLa7!twanB`j* z*j~(XzJQ5=0T$*kGeEQp8+P#~CahHp!!#V`tj3}KAP)7HaHxNTL;Noeb2yl>R%s04 z%-H>Tr1V?y+*3DoG2Pqcp;jDo}+?)mC{taFb_k+p{ z5X&1Z4q~C=Sg<$`Ljlykux3p@SR7R?h}X=5Jw43D;hvp1#4q6xe}F^$EeiwuGz*YB zV3?B?lpe$w8g4;E7Jv#K1_lNRR!BGm_&~%rLfeCytk}cT0*AOK)Eon7_&`rAVTgx{ zUw|I-11slqahOwwLwq6*@%cE!x8o28%}ZcQZ?|!%e~v@^7t~)4wvcd}3oZY7aFk=J zIK&Nch&!=C;)Ma4K4C}VMdDDOjzb)D@P`ls4?_Ud9N57mGr;CU+>T6c!C}r}9OBn- znDYvUI3GLqbR~sDTpx$H3l8yE9O9Wc#6k00*wRBU4)rr}h_AvSz6*QTh~X+bC_f^H zJcRuchk6bUP$cC}zk^ql;p#GLq)lKi6L_{7o* zhUEO*f}GTn)D%4n12Y5cisI8U^D^TTi;5B}<5TlWiYgh>iV|~E<5Nm=b1NC*7MJK5nwgnc zGC=G~Nljx&Gb*TzFUl`1$;?ZQPf1NHhKN8E#OJ1#WaOt5Go<7v$HP^|BiRRLGNk1f zl@ulBdBr+5ymVr%$sfbTWP0Y#3Plof0QVWVeoZQ3`knIe4 z`6XZldWL4ErsfRE8L7$H@rijU@oAYA@hO?Psd>eqkN{}`*%+Ukn3DtN6sMLXmXv_a z152hu`Cvza!&ooP5)_GUL5{wz@veR@@$n4t@$P=1@va{65J3-@AO>)RGQ_+4_&YiJ z#QVFs1-pjChd4UIo>n3 zAit=@6&xwKskz0eB@PbmKAuj_@kV+^dZrLnkl2k6PA!2%aB*HiQD$CA8WyGTVTn1V zsSxv0D+-WQSb`E7L|=SzMm9pmSkHtZpwc%rH{Pu%HI*SgK0P--FTS`Wv8W_Io*|&p zIkBL)G$%Daq_QBDA)qoeFEcqmB{klyC_gv2q$o2l9puQOqIkc2-_+dvqDqEba0DSN zfcpb%1jKFepfn6lFpfb%j*;<>0iF!;0hRvX1QPF;S`M-poV6;zx)=f~{e$CS9)~1o zkmHbD-%gG0aAT;VA z;pvu>pI8D3&G`7_ibPNw-Ba^Yi!zhlQ%f8{Ss9Xzf=csBGIOEnKA;kmRO3C1gG-Z2Ac+<%03sLy zDxE4zQj1ZOuP3O`MHB*1tNlRf2^2o?0v0OamRgdW!4OahcQPbOK^_Nr29!}jK7i+r zc&F0LoD^`*1f^q08i#rSt_UL;ITnLG7!S&d$=RS}8K0JznS)3&CZHS>@0XvK8eCFT z3Jye2o#2;Rj&Lw2P3IyP1A3+m@#$%hBpY7@2{uTj;Naly<{uOi$|aErACz*sCt7IVfI*+YAbXkfOxo)TG4ZY_LOJpd~vzmxGI&fJ#Ua2rUVH z!N~$-C8&1GNlh$5q!s6))WnihBdBC>Y6&##;^T{Pm21T%DXB$8h#&(MMF{Wb7h~~x zJiL?v1vx@1q?kl5Zy?q?=A{H@R;7Zx2o4eV)DlF9glCpyKnlEq{Bnd@MwTF7rRK)_ zf{RLq+|=CUf=YzEA*e)#mAme#B?0-Fc_pc!pa5F|%Fdv~22%kliedSTL9e(nw6{Y4Rf;2!`1vw=QdZ302gI+;SiC%hs34>lqYDEcy9;o5NpjVU+uIu$uGoVeK zjFch=)fk(UQkyY%7u^EgN8*xX2bNu=4oK`73lgpn0+8KU~CZW!N9=qAIbf&`5YL% z4y1?yG#3D2!0dt1pc^LtA?b(B`@m?}_%X=+Aa}yt4>65_A%y`n?h6`wgo?lhZJ_iF zkVYi?VfvxdvkZAq{m|i9_&gG9J_)w25M(!KNjAFv3h;P00|RvU6)_kC9e@C(52(w) z6x2CjHi#%j(+``Mg3%v97K0Q*F{}>>qd{99L2&}JA2xplqhaoaYKNyEn0Pz7{m=vp zo9}v32Ga?lVfI3J3=E*H?a21S=EGn#bomxcIcQi7&IU0iL+yv92l%`hbRlpA+B_h- z{h;YLko_?Iu=zC@eFkI+5=IaIm1y?E=HXy8XuKFnJ3RbgVw)KlK(l=euxNtK*LCcL zsDOntgol_{fr;;DU|;|(fr06V&Ff7dQa@;4Bq;7-`eE~bGobn(fC2}a#zAg?*$WHD zCaC{m`eE~g6(EN(Ffeq0G$CP_ei(fPO+S1-@c={<2P|SBTzL4w^n(u61vwFBKWyGn z;Sf{xYg*D?lSY0;Um4L$f86$H4Fc>VD`sUT|@kel55NgaL9Z zhy|lT^F1&&NF0W}p!UPcFPJ!nTJSs(Ocp`kg6f}p0wD%sq3h?tp}%}8MCB{A3YKYI8rc?8k#3q8ybtQbi@M3#ZU5UL+0 z52HVdKoZXV<1i5j4bunVF)-NR(0}0$M1KNW0gSF6#D}PanFyf`en3QDfF^ty7#KkF zyP&B#Sh|JPADl>a3q&V`lwgOX$m1{#5MkJMWGD|ZHV07&7XmZx^Fu_vKn?_pKnOH0 F0{}$VqDKG# literal 0 HcmV?d00001 diff --git a/csst_ifs_sim/support/IFSinstrumentModel.py b/csst_ifs_sim/support/IFSinstrumentModel.py new file mode 100644 index 0000000..52550f9 --- /dev/null +++ b/csst_ifs_sim/support/IFSinstrumentModel.py @@ -0,0 +1,55 @@ +""" +VIS Instrument Model +==================== + +The file provides a function that returns VIS related information such as pixel +size, dark current, gain, zeropoint, and sky background. + +:requires: NumPy +:requires: numexpr + +:version: 0.7 +""" + +# import datetime, math +# import numpy as np +# import numexpr as ne + + +def IFSinformation(): + """ + Returns a dictionary describing VIS. The following information is provided (id: value - reference):: + + + + :return: instrument model parameters + :rtype: dict + """ + + ######################################################################################################### + #out = dict(readnoise=4, pixel_size=0.1, dark=0.0008333, fullwellcapacity=90000, bluesize=4000, redsize=6000, readtime=300.) + out=dict() + out.update({'dob' : 0, 'rdose' : 8.0e9, + 'parallelTrapfile' : 'cdm_euclid_parallel.dat', 'serialTrapfile' : 'cdm_euclid_serial.dat', + 'beta_s' : 0.6, 'beta_p': 0.6, 'fwc' : 90000, 'vth' : 1.168e7, 't' : 20.48e-3, 'vg' : 6.e-11, + 'st' : 5.0e-6, 'sfwc' : 730000., 'svg' : 1.0e-10}) + return out + + +def CCDnonLinearityModel(data, beta=6e-7): + """ + + The non-linearity is modelled based on the results presented. + :param data: data to which the non-linearity model is being applied to + :type data: ndarray + + :return: input data after conversion with the non-linearity model + :rtype: float or ndarray + """ + out = data-beta*data**2 + + return out + + +if __name__ == '__main__': + print('IFSinstrument') diff --git a/csst_ifs_sim/support/__init__.py b/csst_ifs_sim/support/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/csst_ifs_sim/support/cosmicrays.py b/csst_ifs_sim/support/cosmicrays.py new file mode 100644 index 0000000..e6c7464 --- /dev/null +++ b/csst_ifs_sim/support/cosmicrays.py @@ -0,0 +1,424 @@ +""" +Cosmic Rays +=========== + +This simple class can be used to include cosmic ray events to an image. +By default the cosmic ray events are drawn from distributions describing +the length and energy of the events. Such distributions can be generated +for example using Stardust code (http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=04636917). +The energy of the cosmic ray events can also be set to constant for +testing purposes. The class can be used to draw a single cosmic ray +event or up to a covering fraction. + +:requires: NumPy +:requires: SciPy + +:version: 0.2 + +""" +import numpy as np +from scipy.interpolate import InterpolatedUnivariateSpline + + +class cosmicrays(): + """ + Cosmic ray generation class. Can either draw events from distributions or + set the energy of the events to a constant. + + :param log: logger instance + :param image: image to which cosmic rays are added to (a copy is made not to change the original numpy array) + :param crInfo: column information (cosmic ray file) + :param information: cosmic ray track information (file containing track length and energy information) and + exposure time. + """ + def __init__(self, log, image, crInfo=None, information=None): + """ + Cosmic ray generation class. Can either draw events from distributions or + set the energy of the events to a constant. + + :param log: logger instance + :param image: image to which cosmic rays are added to (a copy is made not to change the original numpy array) + :param crInfo: column information (cosmic ray file) + :param information: cosmic ray track information (file containing track length and energy information) and + exposure time. + """ + #setup logger + self.log = log + + #image and size + self.image = image.copy() + self.ysize, self.xsize = self.image.shape + + #set up the information dictionary, first with defaults and then overwrite with inputs if given + self.information = (dict(cosmicraylengths='/home/yan/csst-master/data/cdf_cr_length.dat', + cosmicraydistance='/home/yan/csst-master/data/cdf_cr_total.dat', + exptime=565)) + if information is not None: + self.information.update(information) + + if crInfo is not None: + self.cr = crInfo + else: + self._readCosmicrayInformation() + + + def _readCosmicrayInformation(self): + self.log.info('Reading in cosmic ray information from %s and %s' % (self.information['cosmicraylengths'], + self.information['cosmicraydistance'])) + #read in the information from the files + crLengths = np.loadtxt(self.information['cosmicraylengths']) + crDists = np.loadtxt(self.information['cosmicraydistance']) + + #set up the cosmic ray information dictionary + self.cr = dict(cr_u=crLengths[:, 0], cr_cdf=crLengths[:, 1], cr_cdfn=np.shape(crLengths)[0], + cr_v=crDists[:, 0], cr_cde=crDists[:, 1], cr_cden=np.shape(crDists)[0]) + + return self.cr + + + def _cosmicRayIntercepts(self, lum, x0, y0, l, phi): + """ + Derive cosmic ray streak intercept points. + + :param lum: luminosities of the cosmic ray tracks + :param x0: central positions of the cosmic ray tracks in x-direction + :param y0: central positions of the cosmic ray tracks in y-direction + :param l: lengths of the cosmic ray tracks + :param phi: orientation angles of the cosmic ray tracks + + :return: cosmic ray map (image) + :rtype: nd-array + """ + #create empty array + crImage = np.zeros((self.ysize, self.xsize), dtype=np.float64) + + #x and y shifts + dx = l * np.cos(phi) / 2. + dy = l * np.sin(phi) / 2. + mskdx = np.abs(dx) < 1e-8 + mskdy = np.abs(dy) < 1e-8 + dx[mskdx] = 0. + dy[mskdy] = 0. + + #pixels in x-direction + ilo = np.round(x0.copy() - dx) + msk = ilo < 0. + ilo[msk] = 0 + ilo = ilo.astype(np.int) + + ihi = 1 + np.round(x0.copy() + dx) + msk = ihi > self.xsize + ihi[msk] = self.xsize + ihi = ihi.astype(np.int) + + #pixels in y-directions + jlo = np.round(y0.copy() - dy) + msk = jlo < 0. + jlo[msk] = 0 + jlo = jlo.astype(np.int) + + jhi = 1 + np.round(y0.copy() + dy) + msk = jhi > self.ysize + jhi[msk] = self.ysize + jhi = jhi.astype(np.int) + + #loop over the individual events + for i, luminosity in enumerate(lum): + n = 0 # count the intercepts + + u = [] + x = [] + y = [] + + #Compute X intercepts on the pixel grid + if ilo[i] < ihi[i]: + for xcoord in range(ilo[i], ihi[i]): + ok = (xcoord - x0[i]) / dx[i] + if np.abs(ok) <= 0.5: + n += 1 + u.append(ok) + x.append(xcoord) + y.append(y0[i] + ok * dy[i]) + else: + for xcoord in range(ihi[i], ilo[i]): + ok = (xcoord - x0[i]) / dx[i] + if np.abs(ok) <= 0.5: + n += 1 + u.append(ok) + x.append(xcoord) + y.append(y0[i] + ok * dy[i]) + + #Compute Y intercepts on the pixel grid + if jlo[i] < jhi[i]: + for ycoord in range(jlo[i], jhi[i]): + ok = (ycoord - y0[i]) / dy[i] + if np.abs(ok) <= 0.5: + n += 1 + u.append(ok) + x.append(x0[i] + ok * dx[i]) + y.append(ycoord) + else: + for ycoord in range(jhi[i], jlo[i]): + ok = (ycoord - y0[i]) / dy[i] + if np.abs(ok) <= 0.5: + n += 1 + u.append(ok) + x.append(x0[i] + ok * dx[i]) + y.append(ycoord) + + #check if no intercepts were found + if n < 1: + xc = int(np.floor(x0[i])) + yc = int(np.floor(y0[i])) + crImage[yc, xc] += luminosity + + #Find the arguments that sort the intersections along the track + u = np.asarray(u) + x = np.asarray(x) + y = np.asarray(y) + + args = np.argsort(u) + + u = u[args] + x = x[args] + y = y[args] + + #Decide which cell each interval traverses, and the path length + for i in range(1, n - 1): + w = u[i + 1] - u[i] + cx = int(1 + np.floor((x[i + 1] + x[i]) / 2.)) + cy = int(1 + np.floor((y[i + 1] + y[i]) / 2.)) + + if 0 <= cx < self.xsize and 0 <= cy < self.ysize: + crImage[cy, cx] += (w * luminosity) + + return crImage + + + def _drawCosmicRays(self, limit=None): + """ + Add cosmic rays to the arrays based on a power-law intensity distribution for tracks. + + Cosmic ray properties (such as location and angle) are chosen from random Uniform distribution. + """ + #estimate the number of cosmics + cr_n = self.xsize * self.ysize * 0.014 / 43.263316 * 2. + #scale with exposure time, the above numbers are for the nominal 565s exposure + cr_n *= (self.information['exptime'] / 565.0) + + #assume a power-law intensity distribution for tracks + fit = dict(cr_lo=1.0e3, cr_hi=1.0e5, cr_q=2.0e0) + fit['q1'] = 1.0e0 - fit['cr_q'] + fit['en1'] = fit['cr_lo'] ** fit['q1'] + fit['en2'] = fit['cr_hi'] ** fit['q1'] + + #pseudo-random numbers taken from a uniform distribution between 0 and 1 + np.random.seed() + luck = np.random.rand(int(np.floor(cr_n))) + + #draw the length of the tracks + if self.cr['cr_cdfn'] > 1: + ius = InterpolatedUnivariateSpline(self.cr['cr_cdf'], self.cr['cr_u']) + self.cr['cr_l'] = ius(luck) + else: + self.cr['cr_l'] = np.sqrt(1.0 - luck ** 2) / luck + + #draw the energy of the tracks + if self.cr['cr_cden'] > 1: + ius = InterpolatedUnivariateSpline(self.cr['cr_cde'], self.cr['cr_v']) + self.cr['cr_e'] = ius(luck) + else: + np.random.seed() + self.cr['cr_e'] = (fit['en1'] + (fit['en2'] - fit['en1']) * + np.random.rand(int(np.floor(cr_n)))) ** (1.0 / fit['q1']) + + #Choose the properties such as positions and an angle from a random Uniform dist + np.random.seed() + cr_x = self.xsize * np.random.rand(int(np.floor(cr_n))) + + np.random.seed() + cr_y = self.ysize * np.random.rand(int(np.floor(cr_n))) + + np.random.seed() + cr_phi = np.pi * np.random.rand(int(np.floor(cr_n))) + + #find the intercepts + if limit is None: + self.cosmicrayMap = self._cosmicRayIntercepts(self.cr['cr_e'], cr_x, cr_y, self.cr['cr_l'], cr_phi) + print ('Number of cosmic ray events:', len(self.cr['cr_e'])) + else: + #limit to electron levels < limit + msk = self.cr['cr_e'] < limit + print ('Number of cosmic ray events: %i / %i' % (len(self.cr['cr_e'][msk]), int(np.floor(cr_n)))) + self.cosmicrayMap = self._cosmicRayIntercepts(self.cr['cr_e'][msk], cr_x[msk], cr_y[msk], + self.cr['cr_l'][msk], cr_phi[msk]) + + #count the covering factor + area_cr = np.count_nonzero(self.cosmicrayMap) + text = 'The cosmic ray covering factor is %i pixels i.e. %.3f per cent' \ + % (area_cr, 100.*area_cr / (self.xsize*self.ysize)) + self.log.info(text) + print (text) + + + def _drawSingleEvent(self, limit=1000, cr_n=1): + """ + Generate a single cosmic ray event and include it to a cosmic ray map (self.cosmicrayMap). + + :param limit: limiting energy for the cosmic ray event + :type limit: float + :param cr_n: number of cosmic ray events to include + :type cr_n: int + + :return: None + """ + #pseudo-random numbers taken from a uniform distribution between 0 and 1 + np.random.seed() + luck = np.random.rand(cr_n) + + #draw the length of the tracks + ius = InterpolatedUnivariateSpline(self.cr['cr_cdf'], self.cr['cr_u']) + self.cr['cr_l'] = ius(luck) + + #set the energy directly to the limit + self.cr['cr_e'] = np.asarray([limit, ]*cr_n) + + #Choose the properties such as positions and an angle from a random Uniform dist + np.random.seed() + cr_x = self.xsize * np.random.rand(int(np.floor(cr_n))) + + np.random.seed() + cr_y = self.ysize * np.random.rand(int(np.floor(cr_n))) + + np.random.seed() + cr_phi = np.pi * np.random.rand(int(np.floor(cr_n))) + + #find the intercepts + self.cosmicrayMap = self._cosmicRayIntercepts(self.cr['cr_e'], cr_x, cr_y, self.cr['cr_l'], cr_phi) + + #count the covering factor + area_cr = np.count_nonzero(self.cosmicrayMap) + text = 'The cosmic ray covering factor is %i pixels i.e. %.3f per cent' \ + % (area_cr, 100.*area_cr / (self.xsize*self.ysize)) + self.log.info(text) + print( text) + + + def _drawEventsToCoveringFactor(self, coveringFraction=3.0, limit=1000, verbose=False): + """ + Generate cosmic ray events up to a covering fraction and include it to a cosmic ray map (self.cosmicrayMap). + + :param coveringFraction: covering fraction of cosmic rya events in per cent of total number of pixels + :type coveringFraction: float + :param limit: limiting energy for the cosmic ray event [None = draw from distribution] + :type limit: None or float + :param verbose: print out information to stdout + :type verbose: bool + + + :return: None + """ + self.cosmicrayMap = np.zeros((self.ysize, self.xsize)) + + #how many events to draw at once, too large number leads to exceeding the covering fraction + cr_n = int(295 * self.information['exptime'] / 565. * coveringFraction / 1.4) + + covering = 0.0 + + while covering < coveringFraction: + #pseudo-random numbers taken from a uniform distribution between 0 and 1 + np.random.seed() + luck = np.random.rand(cr_n) + + #draw the length of the tracks + ius = InterpolatedUnivariateSpline(self.cr['cr_cdf'], self.cr['cr_u']) + self.cr['cr_l'] = ius(luck) + + if limit is None: + ius = InterpolatedUnivariateSpline(self.cr['cr_cde'], self.cr['cr_v']) + self.cr['cr_e'] = ius(luck) + else: + #set the energy directly to the limit + self.cr['cr_e'] = np.asarray([limit,]) + + #Choose the properties such as positions and an angle from a random Uniform dist + np.random.seed() + cr_x = self.xsize * np.random.rand(int(np.floor(cr_n))) + + np.random.seed() + cr_y = self.ysize * np.random.rand(int(np.floor(cr_n))) + + np.random.seed() + cr_phi = np.pi * np.random.rand(int(np.floor(cr_n))) + + #find the intercepts + self.cosmicrayMap += self._cosmicRayIntercepts(self.cr['cr_e'], cr_x, cr_y, self.cr['cr_l'], cr_phi) + + #count the covering factor + area_cr = np.count_nonzero(self.cosmicrayMap) + covering = 100.*area_cr / (self.xsize*self.ysize) + + text = 'The cosmic ray covering factor is %i pixels i.e. %.3f per cent' % (area_cr, covering) + self.log.info(text) + + if verbose: + print( text) + + + def addCosmicRays(self, limit=None): + """ + Include cosmic rays to the image given. + + :return: image with cosmic rays + :rtype: ndarray + """ + self._drawCosmicRays(limit=limit) + + #paste cosmic rays + self.image += self.cosmicrayMap + + return self.image + + + def addSingleEvent(self, limit=None): + """ + Include a single cosmic ray event to the image given. + + :return: image with cosmic rays + :rtype: ndarray + """ + self._drawSingleEvent(limit=limit) + + #paste cosmic rays + self.image += self.cosmicrayMap + + return self.image + + + def addUpToFraction(self, coveringFraction, limit=None, verbose=False): + """ + Add cosmic ray events up to the covering Fraction. + + :param coveringFraction: covering fraction of cosmic rya events in per cent of total number of pixels + :type coveringFraction: float + :param limit: limiting energy for the cosmic ray event [None = draw from distribution] + :type limit: None or float + :param verbose: print out information to stdout + :type verbose: bool + + :return: image with cosmic rays + :rtype: ndarray + """ + self._drawEventsToCoveringFactor(coveringFraction, limit=limit, verbose=verbose) + + #paste cosmic rays + self.image += self.cosmicrayMap + + return self.image + + +if __name__ == "__main__": + + + print() + diff --git a/csst_ifs_sim/support/logger.py b/csst_ifs_sim/support/logger.py new file mode 100644 index 0000000..b09ef82 --- /dev/null +++ b/csst_ifs_sim/support/logger.py @@ -0,0 +1,40 @@ +""" +These functions can be used for logging information. + +.. Warning:: logger is not multiprocessing safe. + +:version: 0.3 +""" +import logging +import logging.handlers + + +def setUpLogger(log_filename, loggername='logger'): + """ + Sets up a logger. + + :param: log_filename: name of the file to save the log. + :param: loggername: name of the logger + + :return: logger instance + """ + # create logger + logger = logging.getLogger(loggername) + logger.setLevel(logging.DEBUG) + # Add the log message handler to the logger + handler = logging.handlers.RotatingFileHandler(log_filename) + #maxBytes=20, backupCount=5) + # create formatter + formatter = logging.Formatter('%(asctime)s - %(module)s - %(funcName)s - %(levelname)s - %(message)s') + # add formatter to ch + handler.setFormatter(formatter) + # add handler to logger + + if (logger.hasHandlers()): + logger.handlers.clear() + + logger.addHandler(handler) + + return logger + + diff --git a/ifs_data/__init__.py b/ifs_data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..f65e2b3 --- /dev/null +++ b/setup.py @@ -0,0 +1,36 @@ +import setuptools + +with open("README.md", "r") as fh: + long_description = fh.read() + +setuptools.setup( + name='csst_ifs_sim', + version='2.0.0-IFS1.0.0', + author='CSST Team', + author_email='zhaojunyan@shao.ac.cn', + description='The CSST - ifs - sim', # short description + long_description=long_description, + long_description_content_type="text/markdown", + url='https://csst-tb.bao.ac.cn/', + # project_urls={ + # 'Source': 'https://csst-tb.bao.ac.cn/code/csst-l1/ifs/csst_ifs_sim', + # }, + packages=setuptools.find_packages(), + license='MIT', + classifiers=["Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3.8", + "Topic :: Scientific/Engineering :: Physics", + "Topic :: Scientific/Engineering :: Astronomy"], + package_dir={'csst_ifs_sim': 'csst_ifs_sim'}, + # include_package_data=True, + package_data={"": ["LICENSE", "README.md"], + "csst_ifs_sim": ["ifs_so/*", "ifs_data/*", "ifs_data/refs/*", "ifs_data/refs/orbit20160925/*"]}, + # install_requires=['sphinx', + # 'numpy', + # 'scipy', 'matplotlib', + # 'astropy', 'healpy', 'ccdproc', 'deepCR', 'photutils'], + python_requires='>=3.8', +) -- GitLab