def applyRadiationDamageBiDir(data, nt_p, sigma_p, taur_p, nt_s, sigma_s, taur_s, iquadrant=0, rdose=1.6e10): """ :return: image that has been run through the CDM03 model :rtype: ndarray """ #read in trap information CTIed = cdm03bidir.cdm03(data, iquadrant%2, iquadrant/2, 0.0, rdose, nt_p, sigma_p, taur_p, nt_s, sigma_s, taur_s, [data.shape[0], data.shape[1], len(nt_p), len(nt_p)]) return np.asanyarray(CTIed)
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 """ "" 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) 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)
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 """"" 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) 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)