Skip to content
test_camera.py 2.45 KiB
Newer Older
Chen Yili's avatar
Chen Yili committed
import unittest
GZhao's avatar
GZhao committed
from csst_cpic_sim.camera import CpicVisEmccd
Chen Yili's avatar
Chen Yili committed
import numpy as np


class TestEMCCD(unittest.TestCase):
    def test_emccd_normal(self):
GZhao's avatar
GZhao committed
        emccd = CpicVisEmccd()
        image_focal = np.zeros(emccd.flat_shape) + 10
Chen Yili's avatar
Chen Yili committed
        iamge_cosmic_ray = np.zeros(emccd.dark_shape)
GZhao's avatar
GZhao committed
        em_set = 200
        expt = 0
        image = emccd.readout(image_focal, em_set, expt, iamge_cosmic_ray)
Chen Yili's avatar
Chen Yili committed

GZhao's avatar
GZhao committed
        self.assertEqual(image.shape[0], emccd.bias_shape[0])
        self.assertEqual(image.shape[1], emccd.bias_shape[1])
Chen Yili's avatar
Chen Yili committed

    def test_emccd_allclose(self):
GZhao's avatar
GZhao committed
        config = {
            'switch': {'shutter': False},
            'dark': 1e-2,
            'cic': 0.2,
            'flat': np.zeros((1024, 1024)),
            'ccd_temp': -200
        }
Chen Yili's avatar
Chen Yili committed

GZhao's avatar
GZhao committed
        emccd = CpicVisEmccd(config)
        for key in emccd.switch:
            emccd.switch[key] = False

        image_focal = np.zeros(emccd.flat_shape) + 10
        em_set = 1024
Chen Yili's avatar
Chen Yili committed
        expt = 10
GZhao's avatar
GZhao committed
        image = emccd.readout(image_focal, em_set, expt)
Chen Yili's avatar
Chen Yili committed

GZhao's avatar
GZhao committed
        self.assertEqual(image.shape[0], emccd.bias_shape[0])
        self.assertEqual(image.shape[1], emccd.bias_shape[1])
Chen Yili's avatar
Chen Yili committed

    def test_emccd_blooming(self):
        import numpy as np
GZhao's avatar
GZhao committed
        emccd = CpicVisEmccd()
Chen Yili's avatar
Chen Yili committed
        image_focal = np.zeros(emccd.flat_shape) + 1000
GZhao's avatar
GZhao committed
        image_focal[100:200, 100:200] = 100_000
Chen Yili's avatar
Chen Yili committed
        iamge_cosmic_ray = np.zeros(emccd.dark_shape)
GZhao's avatar
GZhao committed
        emgain = 800
        expt = 1
        emccd.ccd_temp = -100
        emccd.time_syn(10, readout=False)
        image = emccd.readout(image_focal, None, expt, iamge_cosmic_ray, emgain=emgain)
        self.assertEqual(image.shape[0], emccd.bias_shape[0])
        self.assertEqual(image.shape[1], emccd.bias_shape[1])
GZhao's avatar
GZhao committed
    def test_em_fix_fun(self):
        emccd = CpicVisEmccd()
        emgain = emccd.em_fix_fuc_fit(-5)
        self.assertEqual(emgain, 0.0)

    def test_emccd_update(self):
        emccd = CpicVisEmccd()
        emccd.ccd_temp = -100
GZhao's avatar
GZhao committed
        emgain = emccd.emgain_set(1024, ccd_temp=None, self_update=False)
GZhao's avatar
GZhao committed
        self.assertAlmostEqual(emgain, 1.23, places=2)
Chen Yili's avatar
Chen Yili committed


GZhao's avatar
GZhao committed
# if __name__ == '__main__':
#     unittest.main()
GZhao's avatar
GZhao committed
    # from CpicImgSim.camera import CPIC_VIS_EMCCD
    # emccd = CPIC_VIS_EMCCD()
    # emccd.emgain_fun(1023, -30)
GZhao's avatar
GZhao committed

GZhao's avatar
GZhao committed
    # bias_images = []
    # for _ in range(10):
    #     bias = emccd.bias_frame(show=True)
    #     bias_images.append(bias)
    # bias_images = np.array(bias_images)
    # from astropy.io import fits
    # fits.writeto("bias.fits", bias_images)