Commit f06d91d2 authored by Yan Zhaojun's avatar Yan Zhaojun
Browse files

update

parent 41940f8c
Pipeline #6971 failed with stage
in 0 seconds
...@@ -238,21 +238,21 @@ class CDM03bidir(): ...@@ -238,21 +238,21 @@ class CDM03bidir():
################################################################################# #################################################################################
###modify ###modify
#sys.path.append('../so') #sys.path.append('../so')
from .ifs_so import cdm03bidir #from .ifs_so import cdm03bidir
try: try:
from ifs_so import cdm03bidir from ifs_so import cdm03bidir
except: except:
from .ifs_so import cdm03bidir from .ifs_so import cdm03bidir
# from ifs_so.cdm03.cpython-38-x86_64-linux-gnu import cdm03bidir # from ifs_so.cdm03.cpython-38-x86_64-linux-gnu import cdm03bidir
# import cdm03bidir # import cdm03bidir
CTIed = cdm03bidir.cdm03(np.asfortranarray(data), CTIed = cdm03bidir.cdm03(np.asfortranarray(data),
jflip, iflip, jflip, iflip,
self.values['dob'], self.values['rdose'], self.values['dob'], self.values['rdose'],
self.nt_p, self.sigma_p, self.taur_p, self.nt_p, self.sigma_p, self.taur_p,
self.nt_s, self.sigma_s, self.taur_s, self.nt_s, self.sigma_s, self.taur_s,
params, params,
[data.shape[0], data.shape[1], len(self.nt_p), len(self.nt_s), len(self.params)]) [data.shape[0], data.shape[1], len(self.nt_p), len(self.nt_s), len(self.params)])
return np.asanyarray(CTIed) return np.asanyarray(CTIed)
...@@ -535,6 +535,14 @@ class cosmicrays(): ...@@ -535,6 +535,14 @@ class cosmicrays():
:return: None :return: None
""" """
if coveringFraction>1 or coveringFraction<0.1:
self.log.error(
'coveringFraction error, it shoub be in [0.1, 1]!')
raise ValueError(
'coveringFraction error, it shoub be in [0.1, 1]!')
self.cosmicrayMap = np.zeros((self.ysize, self.xsize)) self.cosmicrayMap = np.zeros((self.ysize, self.xsize))
#how many events to draw at once, too large number leads to exceeding the covering fraction #how many events to draw at once, too large number leads to exceeding the covering fraction
...@@ -2377,6 +2385,57 @@ class IFSsimulator(): ...@@ -2377,6 +2385,57 @@ class IFSsimulator():
""" """
self.log.info('Added dark current to bule and red channel') self.log.info('Added dark current to bule and red channel')
if self.information['dark1_b']>0.001 or self.information['dark1_b']>0.001:
self.log.error(
'dark1_b value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark1_b value error, it shoub be in [0.0001, 0.001]!')
if self.information['dark2_b']>0.001 or self.information['dark2_b']>0.001:
self.log.error(
'dark2_b value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark2_b value error, it shoub be in [0.0001, 0.001]!')
if self.information['dark3_b']>0.001 or self.information['dark3_b']>0.001:
self.log.error(
'dark3_b value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark3_b value error, it shoub be in [0.0001, 0.001]!')
if self.information['dark4_b']>0.001 or self.information['dark4_b']>0.001:
self.log.error(
'dark4_b value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark4_b value error, it shoub be in [0.0001, 0.001]!')
####################################################################
if self.information['dark1_r']>0.001 or self.information['dark1_r']>0.001:
self.log.error(
'dark1_r value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark1_r value error, it shoub be in [0.0001, 0.001]!')
if self.information['dark2_r']>0.001 or self.information['dark2_r']>0.001:
self.log.error(
'dark2_r value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark2_r value error, it shoub be in [0.0001, 0.001]!')
if self.information['dark3_r']>0.001 or self.information['dark3_r']>0.001:
self.log.error(
'dark3_r value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark3_r value error, it shoub be in [0.0001, 0.001]!')
if self.information['dark4_r']>0.001 or self.information['dark4_r']>0.001:
self.log.error(
'dark4_r value error, it shoub be in [0.0001, 0.001]!')
raise ValueError(
'dark4_r value error, it shoub be in [0.0001, 0.001]!')
###########################################################################
# blue zone 4 # blue zone 4
self.image_b[0:1024, 0:2048] += self.information['exptime'] * \ self.image_b[0:1024, 0:2048] += self.information['exptime'] * \
...@@ -2597,6 +2656,59 @@ class IFSsimulator(): ...@@ -2597,6 +2656,59 @@ class IFSsimulator():
average=0.0 and std=readout noise. average=0.0 and std=readout noise.
""" """
self.log.info('readnoise added in blue channel') self.log.info('readnoise added in blue channel')
if self.information['rn1_b']>10 or self.information['rn1_b']<3:
self.log.error(
'rn1_b value error, it shoub be in [3, 10]!')
raise ValueError(
'rn1_b value error, it shoub be in [3, 10]!')
if self.information['rn2_b']>10 or self.information['rn2_b']<3:
self.log.error(
'rn2_b value error, it shoub be in [3, 10]!')
raise ValueError(
'rn2_b value error, it shoub be in [3, 10]!')
if self.information['rn3_b']>10 or self.information['rn3_b']<3:
self.log.error(
'rn3_b value error, it shoub be in [3, 10]!')
raise ValueError(
'rn3_b value error, it shoub be in [3, 10]!')
if self.information['rn4_b']>10 or self.information['rn4_b']<3:
self.log.error(
'rn4_b value error, it shoub be in [3, 10]!')
raise ValueError(
'rn4_b value error, it shoub be in [3, 10]!')
####################################################################
if self.information['rn1_r']>10 or self.information['rn1_r']<3:
self.log.error(
'rn1_r value error, it shoub be in [3, 10]!')
raise ValueError(
'rn1_r value error, it shoub be in [3, 10]!')
if self.information['rn2_r']>10 or self.information['rn2_r']<3:
self.log.error(
'rn2_r value error, it shoub be in [3, 10]!')
raise ValueError(
'rn2_r value error, it shoub be in [3, 10]!')
if self.information['rn3_r']>10 or self.information['rn3_r']<3:
self.log.error(
'rn3_r value error, it shoub be in [3, 10]!')
raise ValueError(
'rn3_r value error, it shoub be in [3, 10]!')
if self.information['rn4_r']>10 or self.information['rn4_r']<3:
self.log.error(
'rn4_r value error, it shoub be in [3, 10]!')
raise ValueError(
'rn4_r value error, it shoub be in [3, 10]!')
########################################################33
# blue zone 1 # blue zone 1
np.random.seed() np.random.seed()
prescan = 50 prescan = 50
...@@ -2715,6 +2827,56 @@ class IFSsimulator(): ...@@ -2715,6 +2827,56 @@ class IFSsimulator():
""" """
Convert from electrons to ADUs using the value read from the configuration file. Convert from electrons to ADUs using the value read from the configuration file.
""" """
if self.information['gain1_b']>2 or self.information['gain1_b']<1:
self.log.error(
'gain1_b value error, it shoub be in [1, 2]!')
raise ValueError(
'gain1_b value error, it shoub be in [1, 2]!')
if self.information['gain2_b']>2 or self.information['gain2_b']<1:
self.log.error(
'gain2_b value error, it shoub be in [1, 2]!')
raise ValueError(
'gain2_b value error, it shoub be in [1, 2]!')
if self.information['gain3_b']>2 or self.information['gain3_b']<1:
self.log.error(
'gain3_b value error, it shoub be in [1, 2]!')
raise ValueError(
'gain3_b value error, it shoub be in [1, 2]!')
if self.information['gain4_b']>2 or self.information['gain4_b']<1:
self.log.error(
'gain4_b value error, it shoub be in [1, 2]!')
raise ValueError(
'gain4_b value error, it shoub be in [1, 2]!')
####################################################################
if self.information['gain1_r']>2 or self.information['gain1_r']<1:
self.log.error(
'gain1_r value error, it shoub be in [1, 2]!')
raise ValueError(
'gain1_r value error, it shoub be in [1, 2]!')
if self.information['gain2_r']>2 or self.information['gain2_r']<1:
self.log.error(
'gain2_r value error, it shoub be in [1, 2]!')
raise ValueError(
'gain2_r value error, it shoub be in [1, 2]!')
if self.information['gain3_r']>2 or self.information['gain3_r']<1:
self.log.error(
'gain3_r value error, it shoub be in [1, 2]!')
raise ValueError(
'gain3_r value error, it shoub be in [1, 2]!')
if self.information['gain4_r']>2 or self.information['gain4_r']<1:
self.log.error(
'gain4_r value error, it shoub be in [1, 2]!')
raise ValueError('gain4_r value error, it shoub be in [1, 2]!')
####################################################################
self.log.info( self.log.info(
'Converting from electrons to ADUs using a factor of gain') 'Converting from electrons to ADUs using a factor of gain')
...@@ -2762,8 +2924,60 @@ class IFSsimulator(): ...@@ -2762,8 +2924,60 @@ class IFSsimulator():
The value of bias is read from the configure file and stored The value of bias is read from the configure file and stored
in the information dictionary (key bias). in the information dictionary (key bias).
""" """
if self.information['bias1_b']>2000 or self.information['bias1_b']<100:
self.log.error(
'bias1_b value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias1_b value error, it shoub be in [100, 2000]!')
if self.information['bias2_b']>2000 or self.information['bias2_b']<100:
self.log.error(
'bias2_b value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias2_b value error, it shoub be in [100, 2000]!')
if self.information['bias3_b']>2000 or self.information['bias3_b']<100:
self.log.error(
'bias3_b value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias3_b value error, it shoub be in [100, 2000]!')
if self.information['bias4_b']>2000 or self.information['bias4_b']<100:
self.log.error(
'bias4_b value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias4_b value error, it shoub be in [100, 2000]!')
####################################################################
if self.information['bias1_r']>2000 or self.information['bias1_r']<100:
self.log.error(
'bias1_r value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias1_r value error, it shoub be in [100, 2000]!')
if self.information['bias2_r']>2000 or self.information['bias2_r']<100:
self.log.error(
'bias2_r value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias2_r value error, it shoub be in [100, 2000]!')
if self.information['bias3_r']>2000 or self.information['bias3_r']<100:
self.log.error(
'bias3_r value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias3_r value error, it shoub be in [100, 2000]!')
if self.information['bias4_r']>2000 or self.information['bias4_r']<100:
self.log.error(
'bias4_r value error, it shoub be in [100, 2000]!')
raise ValueError(
'bias4_r value error, it shoub be in [100, 2000]!')
########################################################################
# blue zone 4 # blue zone 4
self.image_b[0:1344, 0:2418] += self.information['bias4_b'] self.image_b[0:1344, 0:2418] += self.information['bias4_b']
...@@ -5479,6 +5693,12 @@ class IFSsimulator(): ...@@ -5479,6 +5693,12 @@ class IFSsimulator():
self.debug = self.information['debug'] self.debug = self.information['debug']
self.dt = datetime.utcnow() self.dt = datetime.utcnow()
if self.information['exptime']>2000 or self.information['exptime']<0:
self.log.error(
'exptime value error, it shoub be in [0, 2000]!')
exit(2)
if self.source == 'SCI' or self.source == 'COMP': if self.source == 'SCI' or self.source == 'COMP':
...@@ -5624,7 +5844,7 @@ class IFSsimulator(): ...@@ -5624,7 +5844,7 @@ class IFSsimulator():
else: else:
print('Souce is not correct and programe will return') print('Souce is not correct and programe will return')
exit(1) raise ValueError('Souce is not correct and programe will return')
############################################################################### ###############################################################################
# save the original image firstly; # save the original image firstly;
self.image_b_ori = self.image_b+10.0 self.image_b_ori = self.image_b+10.0
......
...@@ -13,6 +13,8 @@ import unittest ...@@ -13,6 +13,8 @@ import unittest
import os import os
from csst_ifs_sim import csst_ifs_sim from csst_ifs_sim import csst_ifs_sim
sys.path.append('IFS_git/csst_ifs_sim/csst_ifs_sim')
import sys import sys
class TestDemoFunction(unittest.TestCase): class TestDemoFunction(unittest.TestCase):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment