COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
perfectCoronagraph.py
1 
37 import numpy as np
38 import shesha.config as conf
39 import shesha.constants as scons
41 from shesha.init.coronagraph_init import init_coronagraph, init_mft, mft_multiplication
42 from shesha.supervisor.components.targetCompass import TargetCompass
43 from sutraWrap import PerfectCoronagraph
44 from carmaWrap import context
45 
46 
47 class PerfectCoronagraphCompass(GenericCoronagraph):
48  """ Class supervising perfect coronagraph component
49 
50  Attributes:
51  _spupil: (np.ndarray[ndim=2, dtype=np.float32]): Telescope pupil mask
52 
53  _pupdiam : (int): Number of pixels along the pupil diameter
54 
55  _dim_image :(int): Coronagraphic image dimension
56 
57  _p_corono: (Param_corono): Coronagraph parameters
58 
59  _target: (TargetCompass): Compass Target used as input for the coronagraph
60 
61  _norm_img : (float): Normalization factor for coronagraphic image
62 
63  _norm_psf : (float): Normalization factor for PSF
64 
65  _coronagraph: (SutraCoronagraph): Sutra coronagraph instance
66 
67  _wav_vec: (np.ndarray[ndim=1, dtype=np.float32]): Vector of wavelength
68 
69  _AA: (np.ndarray[ndim=3, dtype=np.complex64]): MFT matrix for image computation
70 
71  _BB: (np.ndarray[ndim=3, dtype=np.complex64]): MFT matrix for image computation
72 
73  _norm0: (np.ndarray[ndim=3, dtype=np.complex64]): MFT matrix for image computation
74 
75  _AA_c: (np.ndarray[ndim=3, dtype=np.complex64]): MFT matrix for image computation
76 
77  _BB_c: (np.ndarray[ndim=3, dtype=np.complex64]): MFT matrix for psf computation
78 
79  _norm0_c: (np.ndarray[ndim=3, dtype=np.complex64]): MFT matrix for psf computation
80 
81  _indices_pup: (tuple): Tuple of ndarray containing X and Y indices of illuminated
82  pixels in the pupil
83  """
84  def __init__(self, context: context, targetCompass: TargetCompass,
85  p_corono: conf.Param_corono, p_geom: conf.Param_geom):
86  """ Initialize a perfect coronagraph instance
87 
88  Args:
89  context: (CarmaWrap.context): GPU context
90 
91  targetCompass: (TargetCompass): Compass Target used as input for the coronagraph
92 
93  p_corono: (Param_corono): Coronagraph parameters
94 
95  p_geom: (Param_geom): Compass geometry parameters
96  """
97  init_coronagraph(p_corono, p_geom.pupdiam)
98  GenericCoronagraph.__init__(self, p_corono, p_geom, targetCompass)
99  self._wav_vec_wav_vec = p_corono._wav_vec
100 
101  self._AA, self._BB, self._norm0_norm0 = init_mft(p_corono,
102  self._pupdiam_pupdiam,
103  planes='lyot_to_image')
104  self._AA_c, self._BB_c, self._norm0_c_norm0_c = init_mft(p_corono,
105  self._pupdiam_pupdiam,
106  planes='lyot_to_image',
107  center_on_pixel=True)
108  self._indices_pup_indices_pup = np.where(self._spupil_spupil > 0.)
109 
110  self._coronagraph_coronagraph_coronagraph = PerfectCoronagraph(context, self._target_target.sources[0],
111  self._dim_image_dim_image, self._dim_image_dim_image,
112  self._wav_vec_wav_vec, self._wav_vec_wav_vec.size, 0)
113 
114  self._coronagraph_coronagraph_coronagraph.set_mft(self._AA, self._BB, self._norm0_norm0, scons.MftType.IMG)
115  self._coronagraph_coronagraph_coronagraph.set_mft(self._AA_c, self._BB_c, self._norm0_c_norm0_c, scons.MftType.PSF)
116  self._compute_normalization_compute_normalization()
117 
118  def _compute_normalization(self):
119  """ Computes the normalization factor of coronagraphic images (CPU based)
120  """
121  self._target_target.reset_tar_phase(0)
122  self.compute_psfcompute_psf(accumulate=False)
123  self._norm_img_norm_img_norm_img = np.max(self.get_psfget_psf(expo_type=scons.ExposureType.SE))
124  self._norm_psf_norm_psf_norm_psf = self._norm_img_norm_img_norm_img
def get_psf(self, *str expo_type=scons.ExposureType.LE)
Return the psf.
def compute_psf(self, *bool accumulate=True)
Compute the SE psf, and accumulate it in the LE image.
def __init__(self, context context, TargetCompass targetCompass, conf.Param_corono p_corono, conf.Param_geom p_geom)
Parameter classes for COMPASS.
Numerical constants for shesha and config enumerations for safe-typing.
Definition: constants.py:1
Initialization of a Coronagraph object.