39 from .
import config_setter_utils
as csu
51 """ type of wfs : "sh" or "pyr"."""
53 """ linear number of subaps."""
55 """ number of pixels per subap."""
57 """ pixel size (in arcsec) for a subap."""
59 """ observation wavelength (in um) for a subap."""
61 """ wfs global throughput."""
63 """ minimal illumination fraction for valid subaps."""
65 """ 1 if in "open-loop" mode (i.e. does not see dm)."""
67 """ size of field stop in arcsec."""
69 """ Fields of the wfs diaphragm shape : "square" or "none" """
72 """ 1 if the WFS sees the atmosphere layers"""
74 """ index of dms seen by the WFS"""
76 """ If True, enable error budget analysis for the simulation"""
78 """If True, WFS is considered as a low order one and so will not profit from array mutualisation"""
81 """ guide star x position on sky (in arcsec)."""
83 """ guide star x position on sky (in arcsec)."""
85 """ altitude of guide star (in m) 0 if ngs."""
87 """ magnitude of guide star."""
89 """ detector zero point expressed in ph/m**2/s in the bandwidth of the WFS"""
91 """ desired noise : < 0 = no noise / 0 = photon only / > 0 photon + ron."""
98 """ return per watt factor (high season : 10 ph/cm2/s/W)."""
100 """ laser power in W."""
102 """ x position (in meters) of llt."""
104 """ y position (in meters) of llt."""
106 """ type of sodium profile "gauss", "exp", etc ..."""
108 """ laser beam fwhm on-sky (in arcsec)."""
113 """ Magnifying factor"""
115 """ WFS rotation angle in the pupil"""
117 """ X axis misalignment in pixels"""
119 """ Y axis misalignment in pixels"""
123 """ uint16 computation flag for WFS image """
125 """ Maximum number of photons allowed before pixel computation (only used if fakecam is True) """
127 """ Maximum number of ADU photons allowed in the uint16 image (only used if fakecam is True) """
130 """ pupil diam for a subap (in pixel)"""
132 """ array size for fft for a subap (in pixel)"""
134 """ total size of hr image for a subap (in pixel)"""
136 """ rebin factor from hr to binned image for a subap"""
138 """ number of valid subaps"""
141 """ number of photons per subap"""
143 """ number of photons per subap used for doing imat"""
145 """ subap diameter (m)"""
147 """ fraction of nphotons per subap"""
149 """ quantum pixel size for the simulation"""
152 """ (int*) x start indexes for cutting phase screens"""
154 """ (int*) y start indexes for cutting phase screens"""
157 """ (int*) X-indices of bottom left pixel of each valid subaps [pixels]"""
159 """ (int*) Y-indices of bottom left pixel of each valid subaps [pixels]"""
161 """ (int*) array of 0/1 for valid subaps"""
163 """ (int*) array of pixels transform from phase screen into subaps phase screens"""
165 """ (int*) array of pixels transform from minimal FoV image to (in case type is sh or geo)"""
167 """ (float*) array of pixels transform from minimal FoV image to (in case type is "pyr" or "roof")"""
170 """ (int*) array of pixels transform from full FoV hr images to binned images"""
172 """ (float*) phase offset for 1/2 pixel shift in (x,y)"""
175 """ (float*) fieldstop for each subap"""
178 """ lgs kernels for each subap"""
180 """ sodium profile"""
182 """ corresponding altitude"""
186 """ hr profile cumulated"""
188 """ 1d beam function"""
190 """ 1d beam function fft"""
192 """ angles of rotation for each spot"""
196 """ pyramid wfs modulation amplitude radius [arcsec]."""
198 """ total number of point along modulation circle [unitless]."""
200 """ positions for modulation, overwrites ampl and npts [arcsec]"""
202 """ Location of modulation, before/after the field stop.
203 valid value are "before" or "after" (default "after")."""
205 """ Type of pyramid, either 0 for "Pyramid" or 1 for "RoofPrism"."""
207 """ Number of Pyramid facets """
209 """ Pyramid pupil separation. (default: long(wfs.nxsub))"""
211 """ Pyramid quadrant misalignments: by how much pupil subimages
212 are off from their expected positions (in rebinned pixels)"""
214 """ Compute the pyramid focalplane image """
221 """ Modulation points ponderation weights"""
225 """ Get the type of wfs
227 :return: (str) : type of wfs ("sh" or "pyr")
232 """ Set the type of wfs
234 :param t: (str) : type of wfs ("sh" or "pyr")
238 type = property(get_type, set_type)
241 """ Get the linear number of subaps
243 :return: (long) : linear number of subaps
248 """ Set the linear number of subaps
250 :param n: (long) : linear number of subaps
252 self.
__nxsub = csu.enforce_int(n)
254 nxsub = property(get_nxsub, set_nxsub)
257 """ Get the number of pupil images
259 :return: (long) : number of pupil images
264 """ Set the number of pupil images
266 :param n: (long) : number of pupil images
270 nPupils = property(get_nPupils, set_nPupils)
273 """ Get the number of pixels per subap
275 :return: (long) : number of pixels per subap
280 """ Set the number of pixels per subap
282 :param n: (long) : number of pixels per subap
284 self.
__npix = csu.enforce_int(n)
286 npix = property(get_npix, set_npix)
289 """ Get the pixel size
291 :return: (float) : pixel size (in arcsec) for a subap
296 """ Set the pixel size
298 :param p: (float) : pixel size (in arcsec) for a subap
302 pixsize = property(get_pixsize, set_pixsize)
305 """ Get the pixel size
307 :return: (float) : pixel size (in arcsec) for a subap
312 """ Set the pixel size
314 :param p: (float) : pixel size (in arcsec) for a subap
318 _pyr_scale_pos = property(get_pyr_scale_pos, set_pyr_scale_pos)
321 """ Get the observation wavelength
323 :return: (float) : observation wavelength (in um) for a subap
328 """ Set the observation wavelength
330 :param L: (float) : observation wavelength (in um) for a subap
334 Lambda = property(get_Lambda, set_Lambda)
337 """ Get the wfs global throughput
339 :return: (float) : wfs global throughput
344 """ Set the wfs global throughput
346 :param o: (float) : wfs global throughput
350 optthroughput = property(get_optthroughput, set_optthroughput)
353 """ Get the minimal illumination fraction for valid subaps
355 :return: (float) : minimal illumination fraction for valid subaps
360 """ Set the minimal illumination fraction for valid subaps
362 :param f: (float) : minimal illumination fraction for valid subaps
366 fracsub = property(get_fracsub, set_fracsub)
369 """ Get the loop state (open or closed)
371 :return: (long) : 1 if in "open-loop" mode (i.e. does not see dm)
376 """ Set the loop state (open or closed)
378 :param o: (long) : 1 if in "open-loop" mode (i.e. does not see dm)
382 open_loop = property(get_open_loop, set_open_loop)
385 """ Get the size of field stop
387 :return: (float) : size of field stop in arcsec
392 """ Set the size of field stop
394 :param f: (float) : size of field stop in arcsec
396 self.
__fssize = csu.enforce_float(f)
398 fssize = property(get_fssize, set_fssize)
401 """ Get the size of field stop
403 :return: (str) : size of field stop in arcsec
408 """ Set the size of field stop
410 :param f: (str) : size of field stop in arcsec
412 self.
__fstop = scons.check_enum(scons.FieldStopType, f)
414 fstop = property(get_fstop, set_fstop)
417 """ Gells if the wfs sees the atmosphere layers
419 :return: (bool) :True if the WFS sees the atmosphere layers
424 """ Tells if the wfs sees the atmosphere layers
426 :param i: (bool) :True if the WFS sees the atmosphere layers
430 atmos_seen = property(get_atmos_seen, set_atmos_seen)
433 """ Get the guide star x position on sky
435 :return: (float) : guide star x position on sky (in arcsec)
440 """ Set the guide star x position on sky
442 :param x: (float) : guide star x position on sky (in arcsec)
444 self.
__xpos = csu.enforce_float(x)
446 xpos = property(get_xpos, set_xpos)
449 """ Get the guide star y position on sky
451 :return: (float) : guide star y position on sky (in arcsec)
456 """ Set the guide star y position on sky
458 :param y: (float) : guide star y position on sky (in arcsec)
460 self.
__ypos = csu.enforce_float(y)
462 ypos = property(get_ypos, set_ypos)
465 """ Get the magnifying factor
467 :return: (float) : magnifying factor
472 """ Set the magnifying factor
474 :param G: (float) : magnifying factor
476 self.
__G = csu.enforce_float(G)
478 G = property(get_G, set_G)
481 """ Get the rotation angle in the pupil
483 :return: (float) : rotation angle (rad)
488 """ Set the rotation angle in the pupil
490 :param thetaML: (float) : rotation angle (rad)
492 self.
__thetaML = csu.enforce_float(thetaML)
494 thetaML = property(get_thetaML, set_thetaML)
497 """ Get the X axis misalignment
499 :return: (float) : dx (pix)
504 """ Set the X axis misalignment
506 :param dx: (float) : dx (pix)
508 self.
__dx = csu.enforce_float(dx)
510 dx = property(get_dx, set_dx)
513 """ Get the Y axis misalignment
515 :return: (float) : dy (pix)
520 """ Set the Y axis misalignment
522 :param dy: (float) : dy (pix)
524 self.
__dy = csu.enforce_float(dy)
526 dy = property(get_dy, set_dy)
529 """ Get the fakecam flag
531 :return: (bool) : fakecam flag
536 """ Set the fakecam flag
538 :return: (bool) : fakecam flag
540 self.
__fakecam = csu.enforce_or_cast_bool(fakecam)
542 fakecam = property(get_fakecam, set_fakecam)
545 """ Get the max_flux_per_pix
547 :return: (int) : max_flux_per_pix
552 """ Set the max_flux_per_pix
554 :return: (int) : max_flux_per_pix
558 max_flux_per_pix = property(get_maxFluxPerPix, set_max_flux_per_pix)
561 """ Get the max_pix_value
563 :return: (int) : max_pix_value
568 """ Set the max_pix_value
570 :return: (int) : max_pix_value
574 max_pix_value = property(get_maxPixValue, set_max_pix_value)
577 """ Get the altitude of guide star
579 :return: (float) : altitude of guide star (in m) 0 if ngs
584 """ Set the altitude of guide star
586 :param g: (float) : altitude of guide star (in m) 0 if ngs
588 self.
__gsalt = csu.enforce_float(g)
590 gsalt = property(get_gsalt, set_gsalt)
593 """ Get the magnitude of guide star
595 :return: (float) : magnitude of guide star
600 """ Set the magnitude of guide star
602 :param g: (float) : magnitude of guide star
604 self.
__gsmag = csu.enforce_float(g)
606 gsmag = property(get_gsmag, set_gsmag)
609 """ Get the detector zero point
611 :return: (float) : detector zero point
616 """ Set the detector zero point
618 :param z: (float) : detector zero point
620 self.
__zerop = csu.enforce_float(z)
622 zerop = property(get_zerop, set_zerop)
625 """ Get the desired noise
627 :return: (float) : desired noise : < 0 = no noise / 0 = photon only / > 0 photon + ron
632 """ Set the desired noise
634 :param n: (float) : desired noise : < 0 = no noise / 0 = photon only / > 0 photon + ron
636 self.
__noise = csu.enforce_float(n)
638 noise = property(get_noise, set_noise)
641 """ Get the desired numner of photons used for doing imat
643 :return: (float) : desired number of photons
648 """ Set the desired numner of photons used for doing imat
650 :param nphot: (float) : desired number of photons
654 nphotons4imat = property(get_nphotons4imat, set_nphotons4imat)
657 """ Get the attribute kernel
664 """ Set the attribute kernel
668 self.
__kernel = csu.enforce_float(k)
670 kernel = property(get_kernel, set_kernel)
673 """ Get the laser power
675 :return: (float) : laser power in W
680 """ Set the laser power
682 :param l: (float) : laser power in W
686 laserpower = property(get_laserpower, set_laserpower)
689 """ Get the x position of llt
691 :return: (float) : x position (in meters) of llt
696 """ Set the x position of llt
698 :param l: (float) : x position (in meters) of llt
700 self.
__lltx = csu.enforce_float(l)
702 lltx = property(get_lltx, set_lltx)
705 """ Get the y position of llt
707 :return: (float) : y position (in meters) of llt
712 """ Set the y position of llt
714 :param l: (float) : y position (in meters) of llt
716 self.
__llty = csu.enforce_float(l)
718 llty = property(get_llty, set_llty)
721 """ Get the type of sodium profile
723 :return: (str) : type of sodium profile "gauss", "exp", etc ...
728 """ Set the type of sodium profile
730 :param p: (str) : type of sodium profile "gauss", "exp", etc ...
732 self.
__proftype = scons.check_enum(scons.ProfType, p)
734 proftype = property(get_proftype, set_proftype)
737 """ Get the laser beam fwhm on-sky
739 :return: (float) : laser beam fwhm on-sky (in arcsec)
744 """ Set the laser beam fwhm on-sky
746 :param b: (float) : laser beam fwhm on-sky (in arcsec)
750 beamsize = property(get_beamsize, set_beamsize)
753 """ Get the pyramid wfs modulation amplitude radius
755 :return: (float) : pyramid wfs modulation amplitude radius (in arsec)
760 """ Set the pyramid wfs modulation amplitude radius
762 :param p: (float) : pyramid wfs modulation amplitude radius (in arsec)
766 pyr_ampl = property(get_pyr_ampl, set_pyr_ampl)
769 """ Get the total number of point along modulation circle
771 :return: (long) : total number of point along modulation circle
776 """ Set the total number of point along modulation circle
778 :param p: (long) : total number of point along modulation circle
782 pyr_npts = property(get_pyr_npts, set_pyr_npts)
785 """ Get the location of modulation
787 :return: (str) : location of modulation, before/after the field stop.
788 valid value are "before" or "after" (default "after")
793 """ Set the location of modulation
795 :param p: (str) : location of modulation, before/after the field stop.
796 valid value are "before" or "after" (default "after")
798 self.
__pyr_loc = bytes(p.encode(
'UTF-8'))
800 pyr_loc = property(get_pyr_loc, set_pyr_loc)
803 """ Get the type of pyramid,
805 :return: (str) : type of pyramid, either 0 for "Pyramid" or 1 for "RoofPrism"
810 """ Set the type of pyramid,
812 :param p: (str) : type of pyramid, either 0 for "Pyramid" or 1 for "RoofPrism"
814 self.
__pyrtype = bytes(p.encode(
'UTF-8'))
816 pyrtype = property(get_pyrtype, set_pyrtype)
819 """ Get the x position of modulation points for pyramid sensor
821 :return: (np.ndarray[ndim=1,dtype=np.floatt32_t) : x positions
826 """ Set the x position of modulation points for pyramid sensor
828 :param cx: (np.ndarray[ndim=1,dtype=np.floatt32_t) : x positions
832 _pyr_cx = property(get_pyr_cx, set_pyr_cx)
835 """ Get the y position of modulation points for pyramid sensor
837 :return: (np.ndarray[ndim=1,dtype=np.floatt32_t) : y positions
842 """ Set the y position of modulation points for pyramid sensor
844 :param cy: (np.ndarray[ndim=1,dtype=np.floatt32_t) : y positions
848 _pyr_cy = property(get_pyr_cy, set_pyr_cy)
851 """ Get the index of dms seen by the WFS
853 :return: (np.ndarray[ndim=1,dtype=np.int32_t) : index of dms seen by the WFS
858 """ Set the index of dms seen by the WFS
860 :param dms_seen: (np.ndarray[ndim=1,dtype=np.int32_t) : index of dms seen by the WFS
862 self.
__dms_seen = csu.enforce_array(dms_seen.copy(), dms_seen.size,
865 dms_seen = property(get_dms_seen, set_dms_seen)
868 """ Get the return per watt factor
870 :return: (float) : return per watt factor (high season : 10 ph/cm2/s/W)
875 """ Set the return per watt factor
877 :param lpw: (float) : return per watt factor (high season : 10 ph/cm2/s/W)
881 lgsreturnperwatt = property(get_lgsreturnperwatt, set_lgsreturnperwatt)
884 """ Get the corresponding altitude
886 :return: (np.ndarray[ndim=1,dtype=np.float32]) : corresponding altitude
891 """ Set the corresponding altitude
893 :param a: (np.ndarray[ndim=1,dtype=np.float32]) : corresponding altitude
895 self.
__altna = csu.enforce_array(a.copy(), a.size, dtype=np.float32)
897 _altna = property(get_altna, set_altna)
900 """ Get the sodium profile
902 :return: (np.ndarray[ndim=1,dtype=np.float32]) : sodium profile
907 """ Set the sodium profile
909 :param p: (np.ndarray[ndim=1,dtype=np.float32]) : sodium profile
911 self.
__profna = csu.enforce_array(p.copy(), p.size, dtype=np.float32)
913 _profna = property(get_profna, set_profna)
916 """ Get the error budget flag : if True, enable error budget analysis
919 :return: (bool) : error budget flag
924 """ Set the error budget flag : if True, enable error budget analysis
927 :param roket: (bool) : error budget flag
929 self.
__roket = csu.enforce_or_cast_bool(roket)
931 roket = property(get_roket, set_roket)
934 """ Get the low order flag : if True, WFS arrays will not be mutualised
936 :return: (bool) : low order flag
941 """ Set the low order flag : if True, WFS arrays will not be mutualised
943 :param is_low_order: (bool) : low order flag
947 is_low_order = property(get_is_low_order, set_is_low_order)
950 """ Get the pyramid pupil separation. (default: long(wfs.nxsub))
952 :return: (long) : pyramid pupil separation wanted
957 """ Set the pyramid pupil separation. (default: long(wfs.nxsub))
959 :param pyr_pup_sep: (long) : pyramid pupil separation wanted
963 pyr_pup_sep = property(get_pyr_pup_sep, set_pyr_pup_sep)
975 pyr_misalignments = property(get_pyr_misalignments, set_pyr_misalignments)
978 """ Get the status of the pyramid wfs focal plane computation
983 """ Set the status of the pyramid wfs focal plane computation
987 pyr_compute_focalplane = property(get_pyr_compute_focalplane,
988 set_pyr_compute_focalplane)
991 """ Get the number of valid subapertures
993 :return: (long) : number of valid subapertures
998 """ Set the number of valid subapertures
1000 :param n: (long) : number of valid subapertures
1004 _nvalid = property(get_nvalid, set_nvalid)
1007 """ Get the valid subapertures along X-axis
1009 :return: (np.array(dim=1, dtype=np.int32)) : validsubsx
1014 """ Set the valid subapertures along X-axis
1016 :param vx: (np.array(dim=1, dtype=np.int32)) : validsubsx
1018 if self.
__type == scons.WFSType.PYRHR
or self.
__type == scons.WFSType.PYRLR:
1019 self.
__validsubsx = csu.enforce_array(vx, vx.size, dtype=np.int32)
1023 _validsubsx = property(get_validsubsx, set_validsubsx)
1026 """ Get the valid subapertures along Y-axis
1028 :return: (np.array(dim=1, dtype=np.int32)) : validsubsy
1033 """ Set the valid subapertures along Y-axis
1035 :param vy: (np.array(dim=1, dtype=np.int32)) : validsubsy
1037 if self.
__type == scons.WFSType.PYRHR
or self.
__type == scons.WFSType.PYRLR:
1038 self.
__validsubsy = csu.enforce_array(vy, vy.size, dtype=np.int32)
1042 _validsubsy = property(get_validsubsy, set_validsubsy)
1045 """ Return both validsubsx and validsubsy
1047 :return: (tuple) : (self._validsubsx, self._validsubsy)
1052 """ Get the size of FFT support for a subap
1054 :return: (long) : size of FFT support
1059 """ Set the size of FFT support for a subap
1061 :param n: (long) : size of FFT support
1063 self.
__Nfft = csu.enforce_int(n)
1065 _Nfft = property(get_Nfft, set_Nfft)
1068 """ Get the size of hr image for a subap
1070 :return: (long) : size of hr image for a subap
1075 """ Set the size of hr image for a subap
1077 :param n: (long) : size of hr image for a subap
1081 _Ntot = property(get_Ntot, set_Ntot)
1084 """ Get the rebin factor from hr to binned image for a subap
1086 :return: (long) : rebin factor
1091 """ Set the rebin factor from hr to binned image for a subap
1093 :param n: (long) : rebin factor
1097 _nrebin = property(get_nrebin, set_nrebin)
1100 """ Get the subap diameter in pixels
1102 :return: (long) : subap diam in pixels
1107 """ Set the subap diameter in pixels
1109 :param n: (long) : subap diam in pixels
1111 self.
__pdiam = csu.enforce_int(n)
1113 _pdiam = property(get_pdiam, set_pdiam)
1116 """ Get number of photons per subap
1118 :return: (float) : number of photons per subap
1123 """ Set number of photons per subap
1125 :param n: (float) : number of photons per subap
1129 _nphotons = property(get_nphotons, set_nphotons)
1132 """ Get the quantum pixel size for the simulation
1134 :return: (float) : quantum pixel size
1139 """ Set the quantum pixel size for the simulation
1141 :param n: (float) : quantum pixel size
1145 _qpixsize = property(get_qpixsize, set_qpixsize)
1148 """ Get the subap diameter (m)
1150 :return: (float) : subap diameter (m)
1155 """ Set the subap diameter (m)
1157 :param n: (float) : subap diameter (m)
1159 self.
__subapd = csu.enforce_float(n)
1161 _subapd = property(get_subapd, set_subapd)
1164 """ Get the subap diameter (m)
1166 :return: (np.array(ndim=2, dtype=np.float32)) : subap diameter (m)
1171 """ Set the subap diameter (m)
1173 :param data: (np.array(ndim=2, dtype=np.float32)) : subap diameter (m)
1175 if self.
__type == scons.WFSType.PYRHR
or self.
__type == scons.WFSType.PYRLR:
1177 data.copy(), (self.
__nxsub + 2, self.
__nxsub + 2), dtype=np.float32)
1179 self.
__fluxPerSub = csu.enforce_arrayMultiDim(data.copy(),
1183 _fluxPerSub = property(get_fluxPerSub, set_fluxPerSub)
1186 """ TODO : docstring
1191 """ TODO : docstring
1193 self.
__ftkernel = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1196 _ftkernel = property(get_ftkernel, set_ftkernel)
1199 """ TODO : docstring
1204 """ TODO : docstring
1206 self.
__sincar = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1209 _sincar = property(get_sincar, set_sincar)
1212 """ TODO : docstring
1217 """ TODO : docstring
1219 self.
__halfxy = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1222 _halfxy = property(get_halfxy, set_halfxy)
1225 """ TODO : docstring
1230 """ TODO : docstring
1232 self.
__submask = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1235 _submask = property(get_submask, set_submask)
1238 """ TODO : docstring
1243 """ TODO : docstring
1245 self.
__lgskern = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1248 _lgskern = property(get_lgskern, set_lgskern)
1251 """ TODO : docstring
1256 """ TODO : docstring
1258 self.
__azimuth = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1261 _azimuth = property(get_azimuth, set_azimuth)
1264 """ TODO : docstring
1269 """ TODO : docstring
1271 self.
__prof1d = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1274 _prof1d = property(get_prof1d, set_prof1d)
1277 """ TODO : docstring
1282 """ TODO : docstring
1284 self.
__profcum = csu.enforce_array(data.copy(), data.size, dtype=np.float32)
1286 _profcum = property(get_profcum, set_profcum)
1289 """ TODO : docstring
1294 """ TODO : docstring
1296 self.
__beam = csu.enforce_array(data.copy(), data.size, dtype=np.float32)
1298 _beam = property(get_beam, set_beam)
1301 """ TODO : docstring
1306 """ TODO : docstring
1308 self.
__ftbeam = csu.enforce_array(data.copy(), data.size, dtype=np.complex64)
1310 _ftbeam = property(get_ftbeam, set_ftbeam)
1313 """ TODO : docstring
1318 """ TODO : docstring
1320 self.
__hrmap = csu.enforce_arrayMultiDim(data.copy(), data.shape, dtype=np.int32)
1322 _hrmap = property(get_hrmap, set_hrmap)
1325 """ TODO : docstring
1330 """ TODO : docstring
1332 self.
__binmap = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1335 _binmap = property(get_binmap, set_binmap)
1338 """ TODO : docstring
1343 """ TODO : docstring
1345 self.
__phasemap = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1348 _phasemap = property(get_phasemap, set_phasemap)
1351 """ TODO : docstring
1356 """ TODO : docstring
1358 self.
__validpuppixx = csu.enforce_array(data.copy(), data.size, dtype=np.int32)
1360 _validpuppixx = property(get_validpuppixx, set_validpuppixx)
1363 """ TODO : docstring
1368 """ TODO : docstring
1370 self.
__validpuppixy = csu.enforce_array(data.copy(), data.size, dtype=np.int32)
1372 _validpuppixy = property(get_validpuppixy, set_validpuppixy)
1375 """ Get the valid subapertures array
1377 :return: (int*) array of 0/1 for valid subaps
1382 """ Set the valid subapertures array
1384 :param data: (int*) array of 0/1 for valid subaps
1386 self.
__isvalid = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1389 _isvalid = property(get_isvalid, set_isvalid)
1392 """ TODO : docstring
1397 """ TODO : docstring
1399 self.
__pyr_pos = csu.enforce_arrayMultiDim(data.copy(), data.shape,
1402 pyr_pos = property(get_pyr_pos, set_pyr_pos)
1405 """ TODO : docstring
1410 """ TODO : docstring
1412 self.
__pyr_weights = csu.enforce_array(data.copy(), data.size, dtype=np.float32)
1414 _pyr_weights = property(get_pyr_weights, set_pyr_weights)