COMPASS  5.0.0
End-to-end AO simulation tool using GPU acceleration
shesha.widgets.widget_canapass.widgetCanapassWindowPyro Class Reference
Inheritance diagram for shesha.widgets.widget_canapass.widgetCanapassWindowPyro:
Collaboration diagram for shesha.widgets.widget_canapass.widgetCanapassWindowPyro:

Public Member Functions

None __init__ (self, Any config_file=None, bool cacao=False, bool expert=False)
 
None init_configThread (self)
 
None init_config (self)
 
None load_config (self, *args, config_file=None, supervisor=None)
 Callback when 'LOAD' button is hit. More...
 
None loop_once (self)
 
def next (self, nbIters)
 Move atmos -> get_slopes -> applyControl ; One integrator step. More...
 
def initPyrTools (self)
 
def set_pyr_tools_params (self, ai)
 
def show_pyr_tools (self)
 
def getAi (self)
 
def start_pyro_server (self)
 
- Public Member Functions inherited from shesha.widgets.widget_ao.widgetAOWindow
None __init__ (self, Any config_file=None, bool cacao=False, bool expert=False, str devices=None, bool hide_histograms=False)
 
def updateAllTarget (self, state)
 METHODS #. More...
 
def updateForever (self, state)
 
def enable_atmos (self, atmos)
 
None resetSR (self)
 
None add_dispDock (self, str name, parent, str type="pg_image")
 
None load_config (self, *args, config_file=None, supervisor=None, **kwargs)
 
None aoLoopClicked (self, bool pressed)
 
None aoLoopOpen (self, bool pressed)
 
None init_configFinished (self)
 
Tuple[float, float] circleCoords (self, float ampli, int npts, int datashape0, int datashape1)
 
def clearSR (self)
 
def updateSRDisplay (self, SRLE, SRSE, numiter)
 
None updateDisplay (self)
 
def updateSRSE (self, SRSE)
 
def updateSRLE (self, SRLE)
 
def updateCurrentLoopFrequency (self, freq)
 
def run (self)
 
- Public Member Functions inherited from shesha.widgets.widget_base.WidgetBase
None __init__ (self, parent=None, hide_histograms=False)
 
None gui_timer_config (self, state)
 
None closeEvent (self, Any event)
 
None quitGUI (self, Any event=None)
 
def saveArea (self, widget, filename=None)
 METHODS #. More...
 
def showDock (self, name)
 
def restoreMyState (self, state)
 
def loadArea (self, widget=None, filename=None)
 
None addConfigFromFile (self)
 
def update_displayDock (self)
 
None load_config (self, *args, **kwargs)
 Callback when 'LOAD' button is hit. More...
 
None loadDefaultConfig (self)
 
def addSHGrid (self, pg_image, valid_sub, sspsize, pitch)
 
None printInPlace (self, str text)
 

Public Attributes

 CB
 
 wpyr
 
 current_buffer
 
 wpyrNbBuffer
 
 supervisor
 
 ai
 
 phase_to_modes
 
- Public Attributes inherited from shesha.widgets.widget_ao.widgetAOWindow
 cacao
 
 rollingWindow
 
 SRLE
 
 SRSE
 
 numiter
 
 expert
 
 devices
 
 uiAO
 
 supervisor
 ATTRIBUTES #. More...
 
 config
 
 stop
 
 nbiter
 
 refreshTime
 
 assistant
 
 defaultParPath
 CONNECTED BUTTONS #. More...
 
 defaultAreaPath
 
 dispStatsInTerminal
 
 curveSRSE
 
 curveSRLE
 
 SRCrossX
 
 SRCrossY
 
 SRcircles
 
 PyrEdgeX
 
 PyrEdgeY
 
 natm
 
 nwfs
 
 ndm
 
 ntar
 
 PSFzoom
 
 firstTime
 
 expertWidget
 
- Public Attributes inherited from shesha.widgets.widget_base.WidgetBase
 uiBase
 
 gui_timer
 ATTRIBUTES #. More...
 
 loopLock
 
 hide_histograms
 
 area
 PYQTGRAPH DockArea INIT #. More...
 
 gridSH
 
 defaultParPath
 
 defaultAreaPath
 
 disp_checkboxes
 
 docks
 
 viewboxes
 
 imgs
 
 hists
 
 PupilLines
 
 wao_phasesgroup_cb
 
 wao_graphgroup_cb
 
 wao_imagesgroup_cb
 
 thread
 

Detailed Description

Definition at line 70 of file widget_canapass.py.

Constructor & Destructor Documentation

◆ __init__()

None shesha.widgets.widget_canapass.widgetCanapassWindowPyro.__init__ (   self,
Any   config_file = None,
bool   cacao = False,
bool   expert = False 
)

Definition at line 72 of file widget_canapass.py.

72  def __init__(self, config_file: Any = None, cacao: bool = False,
73  expert: bool = False) -> None:
74  widgetAOWindow.__init__(self, config_file, cacao, hide_histograms=True)
75  #Pyro.core.ObjBase.__init__(self)
76 
77  self.CB = {}
78  self.wpyr = None
79  self.current_buffer = 1
80 
86  self.uiAO.actionShow_Pyramid_Tools.toggled.connect(self.show_pyr_tools)
87  self.wpyrNbBuffer = 1
88 

Member Function Documentation

◆ getAi()

def shesha.widgets.widget_canapass.widgetCanapassWindowPyro.getAi (   self)

Definition at line 169 of file widget_canapass.py.

169  def getAi(self):
170  return self.wpyr.ai
171 

◆ init_config()

None shesha.widgets.widget_canapass.widgetCanapassWindowPyro.init_config (   self)

Reimplemented from shesha.widgets.widget_ao.widgetAOWindow.

Definition at line 95 of file widget_canapass.py.

95  def init_config(self) -> None:
96  widgetAOWindow.init_config(self)
97  global server
98  server = self.start_pyro_server()
99 
Here is the call graph for this function:

◆ init_configThread()

None shesha.widgets.widget_canapass.widgetCanapassWindowPyro.init_configThread (   self)

Reimplemented from shesha.widgets.widget_ao.widgetAOWindow.

Definition at line 91 of file widget_canapass.py.

91  def init_configThread(self) -> None:
92  self.uiAO.wao_deviceNumber.setDisabled(True)
93  self.supervisor = CanapassSupervisor(self.config)
94 

◆ initPyrTools()

def shesha.widgets.widget_canapass.widgetCanapassWindowPyro.initPyrTools (   self)

Definition at line 137 of file widget_canapass.py.

137  def initPyrTools(self):
138  ADOPTPATH = os.getenv("ADOPTPATH")
139  sys.path.append(ADOPTPATH + "/widgets")
140  from pyrStats import widget_pyrStats
141  print("OK Pyramid Tools Widget initialized")
142  self.wpyr = widget_pyrStats()
143  self.wpyrNbBuffer = self.wpyr.CBNumber
144  self.wpyr.show()
145 
Here is the caller graph for this function:

◆ load_config()

None shesha.widgets.widget_canapass.widgetCanapassWindowPyro.load_config (   self,
args,
  config_file = None,
  supervisor = None 
)

Callback when 'LOAD' button is hit.

Definition at line 103 of file widget_canapass.py.

103  '''
104  if supervisor is None:
105  supervisor = CanapassSupervisor(config_file)
106 
107  widgetAOWindow.load_config(self, args, config_file=config_file,
108  supervisor=supervisor)
109 

◆ loop_once()

None shesha.widgets.widget_canapass.widgetCanapassWindowPyro.loop_once (   self)

Reimplemented from shesha.widgets.widget_ao.widgetAOWindow.

Definition at line 110 of file widget_canapass.py.

110  def loop_once(self) -> None:
111  widgetAOWindow.loop_once(self)
112  if (self.uiAO.actionShow_Pyramid_Tools.isChecked()): # PYR only
113  self.wpyr.Fe = 1 / self.config.p_loop.ittime # needs Fe for PSD...
114  if (self.wpyr.CBNumber == 1):
115  self.ai = self.compute_modal_residuals()
116  self.set_pyr_tools_params(self.ai)
117  else:
118  if (self.current_buffer == 1): # First iter of the CB
119  aiVect = self.compute_modal_residuals()
120  self.ai = aiVect[np.newaxis, :]
121  self.current_buffer += 1 # Keep going
122 
123  else: # Keep filling the CB
124  aiVect = self.compute_modal_residuals()
125  self.ai = np.concatenate((self.ai, aiVect[np.newaxis, :]))
126  if (self.current_buffer < self.wpyr.CBNumber):
127  self.current_buffer += 1 # Keep going
128  else:
129  self.current_buffer = 1 # reset buffer
130  self.set_pyr_tools_params(self.ai) # display
131 
Here is the caller graph for this function:

◆ next()

def shesha.widgets.widget_canapass.widgetCanapassWindowPyro.next (   self,
  nbIters 
)

Move atmos -> get_slopes -> applyControl ; One integrator step.

Definition at line 133 of file widget_canapass.py.

133  ''' Move atmos -> get_slopes -> applyControl ; One integrator step '''
134  for i in trange(nbIters):
135  self.supervisor.next()
136 

◆ set_pyr_tools_params()

def shesha.widgets.widget_canapass.widgetCanapassWindowPyro.set_pyr_tools_params (   self,
  ai 
)

Definition at line 146 of file widget_canapass.py.

146  def set_pyr_tools_params(self, ai):
147  self.wpyr.pup = self.supervisor.config.p_geom._spupil
148  self.wpyr.phase = self.supervisor.target.get_tar_phase(0, pupil=True)
149  self.wpyr.updateResiduals(ai)
150  if (self.phase_to_modes is None):
151  print('computing phase 2 Modes basis')
152  self.phase_to_modes = self.supervisor.basis.compute_phase_to_modes(self.modal_basis)
153  self.wpyr.phase_to_modes = self.phase_to_modes
154 

◆ show_pyr_tools()

def shesha.widgets.widget_canapass.widgetCanapassWindowPyro.show_pyr_tools (   self)

Definition at line 155 of file widget_canapass.py.

155  def show_pyr_tools(self):
156  if (self.wpyr is None):
157  try:
158  print("Lauching pyramid widget...")
159  self.initPyrTools()
160  print("Done")
161  except:
162  raise ValueError("ERROR: ADOPT not found. Cannot launch Pyramid tools")
163  else:
164  if (self.uiAO.actionShow_Pyramid_Tools.isChecked()):
165  self.wpyr.show()
166  else:
167  self.wpyr.hide()
168 
Here is the call graph for this function:

◆ start_pyro_server()

def shesha.widgets.widget_canapass.widgetCanapassWindowPyro.start_pyro_server (   self)

Definition at line 172 of file widget_canapass.py.

172  def start_pyro_server(self):
173  try:
174  from subprocess import Popen, PIPE
175  from hraa.server.pyroServer import PyroServer
176 
177  # Init looper
178  wao_loop = loopHandler(self)
179 
180  # Find username
181  p = Popen("whoami", shell=True, stdout=PIPE, stderr=PIPE)
182  out, err = p.communicate()
183  if (err != b''):
184  print(err)
185  raise Exception("ERROR CANNOT RECOGNIZE USER")
186  else:
187  user = out.split(b"\n")[0].decode("utf-8")
188  print("User is " + user)
189 
190  server = PyroServer()
191  server.add_device(self.supervisor, "waoconfig_" + user)
192  server.add_device(wao_loop, "waoloop_" + user)
193  server.start()
194  except:
195  raise Exception("Error could not connect to Pyro server.\n It can be:\n - Missing dependencies? (check if Pyro4 is installed)\n - pyro server not running")
196 
197  return server
198 
199 
Here is the caller graph for this function:

Member Data Documentation

◆ ai

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.ai

Definition at line 115 of file widget_canapass.py.

◆ CB

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.CB

Definition at line 76 of file widget_canapass.py.

◆ current_buffer

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.current_buffer

Definition at line 78 of file widget_canapass.py.

◆ phase_to_modes

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.phase_to_modes

Definition at line 152 of file widget_canapass.py.

◆ supervisor

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.supervisor

Definition at line 93 of file widget_canapass.py.

◆ wpyr

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.wpyr

Definition at line 77 of file widget_canapass.py.

◆ wpyrNbBuffer

shesha.widgets.widget_canapass.widgetCanapassWindowPyro.wpyrNbBuffer
             CONNECTED BUTTONS                         #

Default path for config files self.uiAO.wao_open_loop.setChecked(False) self.uiAO.wao_open_loop.setText("Close Loop")

Definition at line 86 of file widget_canapass.py.


The documentation for this class was generated from the following file: