2.3.1. DashBoard
This module is the heart of PyMoDAQ, it will:
Help you declare the list of actuators and detectors to be used for a given experiment (Experiment manager)
Allow you to set particular values for their settings (see StateManager)
Load and run specific extensions such as: * Automatic data acquisition of detectors as a function of one or more actuators using the DAQ_Scan * Log data into advanced binary file or distant database using its DAQ_Logger extension * Optimize data or sampling using the Bayesian or Adaptive extensions * Mix data using the DataMixer * …
The flow of this module is as follow:
At startup you have to define/load/modify an experiment (see Experiment manager) representing an ensemble of actuators and detectors
Define/load/modify a State (see StateManager) representing a state of the control modules settings and some other special state subentries like actuator values
Define/load/modify eventual overshoots (see Overshoot manager)
Define/load/modify eventual ROI (Region of interests) selections (see ROI manager)
Use the actuators and detectors manually to drive your experiment
Select an extension to run: automated scan (DAQ_Scan), log data (DAQ_Logger)…
Note
This module can be started from a terminal, using the command dashboard in an activated environment where
PyMoDAQ is installed.
A list of accepted command-line arguments are available, you can list them using dashboard -h. For now the
accepted arguments are the following:
-expor--experimentfollowed by an existing experiment name will start the dashboard with the selected experiment loaded. For exampledashboard -exp defaultshould start the dashboard with the default experiment.
2.3.1.1. Introduction
This module has one main window, the dashboard (Fig. 2.6) where a log and all declared actuators and detectors will be loaded as instances of DAQ_Move and DAQ_Viewer. The dashboard gives you full control for manual adjustments of each actuator, checking their impact on live data from the detectors. Once all is set, one can move on to different actions.
Fig. 2.6 Dashboard user interface containing all declared control modules (actuators/detectors) and some initialization info.
2.3.1.3. The DashBoard toolbar in extensions
Most extensions (DAQ_Scan, DAQ_Logger, PID, DataMixer, Sequencer, Ramping, optimizers…) display a Dashboard toolbar (see Fig. 2.9) so you can interact with the Dashboard without leaving the extension window:
Show/Hide Dashboard: shows or hides the Dashboard window (and its control modules). Closing the Dashboard window only hides it, and it is shown again when the extension is closed
Experiment: a button to open the Experiment manager, a list of the available experiments and a button to apply the selected one. The list is synchronized with the one of the Dashboard
State: a button to open the StateManager, a list of the states defined for the current experiment and a button to apply the selected one
Fig. 2.9 The Dashboard toolbar as displayed in an extension.
When developing an extension deriving from CustomExt, this toolbar is added by calling its
create_dashboard_toolbar method, whose arguments allow to display or not each of the three groups above. See Experiment, State and the Dashboard toolbar in a CustomExt for how an extension uses the Experiment and State managers.
2.3.1.4. Multiple hardware from one controller
Sometimes one hardware controller can drive multiple actuators and sometimes detectors (for instance a XY translation stage). For this particular case the controller should not be initialized multiple times. One should identify one actuator referred to as Master and the other ones will be referred to as Slave. They will share the same controller address represented in the settings tree by the Controller ID entry. These settings will be activated within the plugin script where one can define a unique identifier for each actuator (U or V for the conex in Fig. 2.17). This feature can be enabled for both DAQ_Move and DAQ_Viewer modules but will be most often encountered with actuators, so see for more details: Multiaxes controller. This has to be done using the Experiment Manager