Python control software for CETONI Nemesys syringe pumps over a CAN bus (CANopen). The project includes command-line tools, Tkinter interfaces, JSON-driven experiment execution, and batch-planning utilities for liquid-handling workflows.
Aleksandar Kondinski
Contact: kondinski@gmail.com
This repository supports:
- low-level CAN bus communication through
canopen - manual pump control from a CLI or Tkinter GUI
- automated multi-pump dispensing from CSV and JSON plans
- batch optimization utilities for generated dispense plans
- hardware readout, stop, and diagnostic helpers
- simulation and particle-tracking support files
| Component | Specification |
|---|---|
| Pumps | CETONI Nemesys syringe pumps |
| CAN interface | IXXAT USB-to-CAN adapter or compatible device |
| Operating system | Windows 10 or Windows 11 |
| Python | 3.10 or newer |
Default CAN settings are defined in config.py:
- interface:
ixxat - channel:
0 - bitrate:
1000000
config.py CAN bus and pump hardware parameters
nemesys.py Core pump driver
main.py Command-line control entry point
pump_gui.py Tkinter GUI
main_dashboard.py Dashboard UI
mode_manual.py Manual-control dashboard tab
mode_experiment.py Experiment dashboard tab
system_hardware.py Shared hardware connection layer
auto_dispense.py CSV-driven dispensing
main_json.py JSON-driven experiment runner
batch_optimize.py Batch-plan generation
readout.py Hardware diagnostic readout
stop.py Emergency stop helper
simulations/ Sample plans and input CSVs
core_codes/ Core module copies
dependent/ Auxiliary scripts
particles/ Particle simulation files
pm/ Process helper
archive/ Curated legacy reference files
git clone https://github.com/digital-chemistry/NemesysSyringePump.git
cd NemesysSyringePump
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txttkinter ships with standard Python on Windows. The IXXAT CAN adapter still requires its vendor driver.
Edit config.py before first use to match your hardware, including CAN interface settings, motion direction, syringe geometry, and pump IDs.
Run the command-line interface:
python main.pyRun the dashboard:
python main_dashboard.pyRun automated workflows:
python auto_dispense.py
python main_json.py
python batch_optimize.pyexperiments.jsoncontains JSON experiment definitions formain_json.pyplan.csvis the example plan forauto_dispense.pysimulations/contains generated plans and batch-input CSV files
If you use this software in research, cite the Zenodo record once published:
Kondinski, A. (2025). Nemesys Syringe Pump Control Software [Software]. Zenodo. https://doi.org/10.5281/zenodo.XXXXXXX
Released under the MIT License.
Copyright (c) 2025 Aleksandar Kondinski.