Welcome to PyMoDAQ’s documentation!
French version here
Note
Second edition of the PyMoDAQ’s Days: Paris 16/17 October 2023. Register on https://pymodaq-jt2022.sciencesconf.org/
Training session in Paris, France 18/19/20 October 2023
PyMoDAQ, Modular Data Acquisition with Python, is a set of python modules used to interface any kind of experiments. It simplifies the interaction with detector and actuator hardware to go straight to the data acquisition of interest.
It has two purposes:
First, to provide a complete interface to perform automated measurements or logging data without having to write a user/interface for each new experiment.
Second, to provide various tools (User interfaces, classes dedicated to specific tasks…) to easily build a Custom App
It is divided in two main components as shown on figure Fig. 1
The DashBoard and its control modules: DAQ Move and DAQ Viewer
Extensions such as the DAQ Scan or the DAQ Logger

Fig. 1 PyMoDAQ’s Dashboard and its extensions: DAQ_Scan for automated acquisitions, DAQ_Logger for data logging and many other.
The Control modules are interfacing real instruments using user written plugins. The complete list of available plugins is maintained on this GitHub repository and installabled using the Plugin Manager
Training

Fig. 2 Training sessions announcement and PyMoDAQ’s days
Information
GitHub repo: https://github.com/PyMoDAQ
Documentation: http://pymodaq.cnrs.fr/
List of available plugins
Video tutorials here
Mailing List: pymodaq@services.cnrs.fr
Credits
Based on the pyqtgraph
library : http://www.pyqtgraph.org by Luke Campagnola.
PyMoDAQ is written by Sébastien Weber: sebastien.weber@cemes.fr under a MIT license.
Contribution
If you want to contribute see this page: Contributing
They use it
See Who use it?
Citation
By using PyMoDAQ, you are being asked to cite the article published in Review of Scientific Instruments RSI 92, 045104 (2021) when publishing results obtained with the help of its interface. In that way, you’re also helping in its promotion and amelioration.
Changelog
Please see the changelog.
Contents:
- 1. PyMoDAQ’s overview
- 2. What’s new in PyMoDAQ 4
- 3. User’s Guide
- 3.1. Installation
- 3.2. How to Start
- 3.3. Configuration
- 3.4. DashBoard and Control Modules
- 3.5. Extensions
- DAQ Scan
- 3.5.1. DAQ Logger
- 3.5.2. PID Module
- 3.5.3. H5Browser
- 3.5.4. Console
- 3.6. Useful Modules
- 3.7. TCP/IP communication
- 4. Developer’s Guide
- 4.1. Data Management
- 4.2. Contributing
- 4.3. Plugins
- 4.3.1. Plugins package configuration file
- 4.3.2. Instrument Plugins
- 4.3.3. Extension Plugins
- 4.4. Custom App
- 4.3.3. Extension Plugins
- 4.5. Managers and Mixin Objects
- 5. Tutorials
- 5.1. Story of an instrument plugin development
- 5.1.1. The controller manual
- 5.1.2. The installer
- 5.1.3. The blue route: use the manufacturer GUI
- 5.1.4. A shortcut through an existing green route? Readily available PyMoDAQ instrument plugins
- 5.1.5. The gold route: control your device with a Python script
- 5.1.6. The green route: control your device with PyMoDAQ
- 5.1.6.1. What is GitHub?
- 5.1.6.2. Prepare your remote repository
- 5.1.6.3. Prepare your local repository
- 5.1.6.4. Install your package in edition mode
- 5.1.6.5. Open the package with an adapted IDE
- 5.1.6.6. Debug of the original plugin
- 5.1.6.7. Write the class for our new instrument
- 5.1.6.8. Commit our changes with Git
- 5.1.6.9. Push our changes to our remote repository
- 5.1.6.10. Pull request to the upstream repository
- 5.1.7. Conclusion
- 5.2. How to contribute to PyMoDAQ’s documentation?
- 5.3. Updating your instrument plugin for PyMoDAQ 4
- 5.1. Story of an instrument plugin development
- 6. Who use it?
- 7. Glossary Terms
- 8. Library Reference
- 8.1. Control modules
- 8.1.1. ControlModule base classes
ControlModule
ControlModule.init_signal
ControlModule.command_hardware
ControlModule.command_tcpip
ControlModule.quit_signal
ControlModule.grab()
ControlModule.init_hardware()
ControlModule.init_hardware_ui()
ControlModule.manage_ui_actions()
ControlModule.quit_fun()
ControlModule.show_config()
ControlModule.show_log()
ControlModule.stop_grab()
ControlModule.thread_status()
ControlModule.update_status()
ControlModule.initialized_state
ControlModule.module_type
ControlModule.title
ControlModuleUI
- 8.1.2. DAQ_Viewer class
DAQ_Viewer
DAQ_Viewer.grab_done_signal
DAQ_Viewer.custom_sig
DAQ_Viewer.overshoot_signal
DAQ_Viewer.append_data()
DAQ_Viewer.child_added()
DAQ_Viewer.connect_tcp_ip()
DAQ_Viewer.daq_type_changed_from_ui()
DAQ_Viewer.get_scaling_options()
DAQ_Viewer.grab()
DAQ_Viewer.grab_data()
DAQ_Viewer.init_hardware()
DAQ_Viewer.insert_data()
DAQ_Viewer.load_data()
DAQ_Viewer.param_deleted()
DAQ_Viewer.process_tcpip_cmds()
DAQ_Viewer.process_ui_cmds()
DAQ_Viewer.quit_fun()
DAQ_Viewer.save_current()
DAQ_Viewer.save_new()
DAQ_Viewer.set_data_to_viewers()
DAQ_Viewer.setup_continuous_saving()
DAQ_Viewer.show_data()
DAQ_Viewer.show_temp_data()
DAQ_Viewer.snap()
DAQ_Viewer.snapshot()
DAQ_Viewer.stop()
DAQ_Viewer.stop_grab()
DAQ_Viewer.take_bkg()
DAQ_Viewer.thread_status()
DAQ_Viewer.value_changed()
DAQ_Viewer.bkg
DAQ_Viewer.current_data
DAQ_Viewer.daq_type
DAQ_Viewer.daq_types
DAQ_Viewer.detector
DAQ_Viewer.detectors
DAQ_Viewer.do_bkg
DAQ_Viewer.grab_state
DAQ_Viewer.viewer_docks
DAQ_Viewer.viewers
DAQ_Viewer.viewers_docks
- 8.1.3. DAQ_Detector class
- 8.1.4. The Viewer UI class
DAQ_Viewer_UI
DAQ_Viewer_UI.command_sig
DAQ_Viewer_UI.display_value()
DAQ_Viewer_UI.do_init()
DAQ_Viewer_UI.connect_things()
DAQ_Viewer_UI.do_grab()
DAQ_Viewer_UI.do_init()
DAQ_Viewer_UI.do_snap()
DAQ_Viewer_UI.do_stop()
DAQ_Viewer_UI.send_init()
DAQ_Viewer_UI.setup_actions()
DAQ_Viewer_UI.setup_docks()
DAQ_Viewer_UI.update_viewers()
DAQ_Viewer_UI.detector_init
- 8.1.5. The DAQ_Move Class
DAQ_Move
DAQ_Move.init_signal
DAQ_Move.move_done_signal
DAQ_Move.bounds_signal
DAQ_Move.get_actuator_value()
DAQ_Move.get_continuous_actuator_value()
DAQ_Move.grab()
DAQ_Move.init_hardware_ui()
DAQ_Move.move()
DAQ_Move.move_abs()
DAQ_Move.move_home()
DAQ_Move.move_rel()
DAQ_Move.quit_fun()
DAQ_Move.stop_motion()
DAQ_Move.thread_status()
DAQ_Move.actuator
DAQ_Move.initialized_state
DAQ_Move.move_done_bool
- 8.1.6. The DAQ_Move UI class
- 8.1.7. The DAQ_Move Plugin Class
DAQ_Move_base
DAQ_Move_base.move_done_signal
DAQ_Move_base.controller
DAQ_Move_base.settings
DAQ_Move_base.params
DAQ_Move_base.is_multiaxes
DAQ_Move_base.current_value
DAQ_Move_base.target_value
DAQ_Move_base.check_bound()
DAQ_Move_base.commit_settings()
DAQ_Move_base.emit_status()
DAQ_Move_base.emit_value()
DAQ_Move_base.get_position_with_scaling()
DAQ_Move_base.ini_attributes()
DAQ_Move_base.ini_stage_init()
DAQ_Move_base.move_done()
DAQ_Move_base.poll_moving()
DAQ_Move_base.send_param_status()
DAQ_Move_base.set_position_relative_with_scaling()
DAQ_Move_base.set_position_with_scaling()
DAQ_Move_base.update_settings()
DAQ_Move_base.axis_name
DAQ_Move_base.axis_names
DAQ_Move_base.axis_value
DAQ_Move_base.controller_units
DAQ_Move_base.ispolling
- 8.1.1. ControlModule base classes
- 8.2. Main modules
- 8.3. Utility Modules
- 8.3.1. Hdf5 module and classes
- 8.3.2. Scanner module and classes
- 8.3.3. Managers
QAction
addaction()
ActionManager
ActionManager.add_action()
ActionManager.add_widget()
ActionManager.affect_to()
ActionManager.connect_action()
ActionManager.get_action()
ActionManager.has_action()
ActionManager.set_action_text()
ActionManager.set_menu()
ActionManager.set_toolbar()
ActionManager.setup_actions()
ActionManager.menu
ActionManager.toolbar
ParameterManager
ParameterManager.params
ParameterManager.settings_name
ParameterManager.settings
ParameterManager.settings_tree
ParameterManager.tree
ParameterManager.child_added()
ParameterManager.load_settings()
ParameterManager.param_deleted()
ParameterManager.save_settings()
ParameterManager.update_settings()
ParameterManager.value_changed()
ModulesManager
ModulesManager.connect_actuators()
ModulesManager.connect_detectors()
ModulesManager.get_det_data_list()
ModulesManager.get_mod_from_name()
ModulesManager.get_mods_from_names()
ModulesManager.get_names()
ModulesManager.get_selected_probed_data()
ModulesManager.grab_datas()
ModulesManager.move_actuators()
ModulesManager.order_positions()
ModulesManager.set_actuators()
ModulesManager.set_detectors()
ModulesManager.test_move_actuators()
ModulesManager.value_changed()
ModulesManager.Nactuators
ModulesManager.Ndetectors
ModulesManager.actuators
ModulesManager.actuators_all
ModulesManager.actuators_name
ModulesManager.detectors
ModulesManager.detectors_all
ModulesManager.detectors_name
ModulesManager.modules
ModulesManager.modules_all
ModulesManager.selected_actuators_name
ModulesManager.selected_detectors_name
- 8.3.4. Data Viewers
- 8.3.5. Plotting utility classes
- 8.4. Utility Libraries
- 8.1. Control modules
- PyMoDAQ Femto
- PyMoDAQ Plugins DAQmx