BioImager  3.9.1
A .NET microscopy imaging library. Supports various microscopes by using imported libraries & GUI automation. Supported libraries include PriorĀ® & ZeissĀ® & all devices supported by Micromanager 2.0 and python-microscope.
Loading...
Searching...
No Matches
microscope.gui.DeformableMirrorWidget Class Reference
Inheritance diagram for microscope.gui.DeformableMirrorWidget:

Public Member Functions

None __init__ (self, microscope.abc.DeformableMirror device, *args, **kwargs)
 
None setActuatorValue (self, int actuator_index, int value)
 
None resetPattern (self)
 

Detailed Description

Display a slider for each actuator.

Constructing this widget will set all actuators to their mid-point
since the actuators position are not queryable..  The reset button
does this too, i.e., it sets all actuators to their mid-point.

Definition at line 247 of file gui.py.

Constructor & Destructor Documentation

◆ __init__()

None microscope.gui.DeformableMirrorWidget.__init__ (   self,
microscope.abc.DeformableMirror  device,
args,
**  kwargs 
)

Definition at line 255 of file gui.py.

257 ) -> None:
258 super().__init__(*args, **kwargs)
259 self._device = device
260
261 self._pattern = numpy.ndarray(shape=(self._device.n_actuators))
262 self._actuators: typing.List[QtWidgets.QSlider] = []
263 for i in range(self._device.n_actuators):
264 actuator = QtWidgets.QSlider(QtCore.Qt.Horizontal, parent=self)
265 actuator.setMinimum(0)
266 actuator.setMaximum(100)
267
268 def setThisActuator(value, actuator_index=i):
269 self.setActuatorValue(actuator_index, value)
270
271 actuator.valueChanged.connect(setThisActuator)
272 self._actuators.append(actuator)
273 # We don't know the pattern currently applied to the mirror so
274 # we reset it which also updates the slider positions.
275 self.resetPattern()
276
277 self._reset_button = QtWidgets.QPushButton("Reset", parent=self)
278 self._reset_button.clicked.connect(self.resetPattern)
279
280 main_layout = QtWidgets.QVBoxLayout()
281 main_layout.addWidget(self._reset_button)
282
283 actuators_layout = QtWidgets.QFormLayout()
284 actuators_layout.setLabelAlignment(QtCore.Qt.AlignRight)
285 for i, actuator in enumerate(self._actuators, start=1):
286 actuators_layout.addRow(str(i), actuator)
287 main_layout.addLayout(actuators_layout)
288
289 self.setLayout(main_layout)
290

Member Function Documentation

◆ resetPattern()

None microscope.gui.DeformableMirrorWidget.resetPattern (   self)
Set all actuators to their mid-point (0.5).

Definition at line 300 of file gui.py.

300 def resetPattern(self) -> None:
301 """Set all actuators to their mid-point (0.5)."""
302 self._pattern.fill(0.5)
303 self._device.apply_pattern(self._pattern)
304 for i, actuator in enumerate(self._actuators):
305 actuator.blockSignals(True)
306 actuator.setSliderPosition(int(self._pattern[i] * 100))
307 actuator.blockSignals(False)
308
309

References microscope.gui.DeviceSettingsWidget._device, microscope.gui.ControllerWidget._device, microscope.gui.CameraWidget._device, microscope.gui.DeformableMirrorWidget._device, microscope.gui.FilterWheelWidget._device, microscope.gui.LightSourceWidget._device, microscope.gui.StageWidget._device, and microscope.gui.DeformableMirrorWidget._pattern.

◆ setActuatorValue()

None microscope.gui.DeformableMirrorWidget.setActuatorValue (   self,
int  actuator_index,
int  value 
)

Definition at line 291 of file gui.py.

291 def setActuatorValue(self, actuator_index: int, value: int) -> None:
292 if not (0 < actuator_index < self._pattern.size):
293 raise ValueError(
294 "index %d is invalid because DM has %d actuators"
295 % (actuator_index, self._pattern.size)
296 )
297 self._pattern[actuator_index] = value / 100.0
298 self._device.apply_pattern(self._pattern)
299

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