A wrapper for the Cetoni Qmix SDK.
Project description
Qmix pump and valve interface
This Python package wraps the Cetoni Qmix pump and valve interface DLLs using CFFI. Supports both Python 2 and 3.
Table of Contents
- Quick installation instructions
- Gustometer Setup
- Operate pumps via pyqmix-web (no installation required)
- Install Python and pyqmix
- Operate pumps via pyqmix (requires installation)
- Best Practices
- Citation
Quick installation instructions
If you already installed the Cetoni QmixSDK, created a device configuration via QmixElements, and are familiar with Python, you may simply install pyqmix
via conda
from conda-forge
. To create a new conda
environment for pyqmix
, named nemesys
, run
conda create -n nemesys -c conda-forge pyqmix
from the command line. This is the recommended installation procedure, because it ensures the installation of pyqmix
and all of its dependencies will not alter any existing conda
environment.
To install pyqmix
into an existing conda
environment, run
conda install -c conda-forge pyqmix
However, we suggest you always create a new, dedicated environment instead.
Of course, you may also install pyqmix
via good ol' pip
:
pip install pyqmix
If you have no idea what this is all about, we suggest you follow the procedures described below.
Gustometer Setup
Find the CD and license code
Open the paper-folder you received from CETONI. In the folder you will find a license key and a CD with:
- Software: QmixElements and QmixSDK
- QmixElements Manual in Doc/Software, which specifies system requirements and how to install the software
Prepare your computer
Set up system requirements on your computer as described in the documentation. Refer to QmixElements manual:
- Disable standby or sleep mode
- Disable power saving for USB ports in the power options of the Control Panel
Install QmixElements
- Insert the CD from CETONI in your computer.
- Start the QmixElements_Setup_v###.exe application file as administrator
- During installation, accept to install VCI (VCI Driver)
- In case you get a Windows Security Warning -> Trust software from HMS Technology Center Ravensburg GmbH.
Install QmixSDK
- Install the QmixSDK you received on the CD from CETONI. pyqmix is tested to work with QmixSDK versions 20180626 and later. If your version of QmixSDK is older than that, please contact Cetoni to retrieve an updated version.
- Restart the computer
Connect the pump system to the computer
- Connect the base module to computer
- Connect power supply to base module
- Connect the base module to the computer via the supplied USB cable.
Create a Device Configuration
- Open QmixElements
- Activate License
- Edit -> Activate Licence -> [enter License Key] -> click OK. The License key is found by the CD in the folder provided by CETONI.
- Create the actual Device Configuration
- Device -> Create Configurations -> you are then asked:
Would you like to update your local device database devices.db with a new one?
. If you have a devices.db file on the installation CD from CETONI, then click theYes
button and browse for the file.
From the device list drag all the items you want to configure to the ‘Device Configuration’ which is the large empty black area to the left of the QmixElements software. You do not need to configure the base module.
- Device -> Create Configurations -> you are then asked:
- Save configuration
- File -> save.
- Right-click on the first item in the Device Configuration (the one furthest to the left), select ‘Configure’ and follow the instructions. Repeat the procedure for each item in the Device Configuration.
- Save configuration at the end.
Operate pumps via pyqmix-web
The user-visible part of pyqmix-web runs in the web browser. You need a modern browser to run the application. Recent versions of Chrome, Firefox, and Safari work well; Microsoft Internet Explorer is not supported.
- Download the latest pyqmix-web release from https://github.com/psyfood/pyqmix-web/releases (you will want to get the
.exe
file). - Run the
.exe
file
Install Python and pyqmix
Install Anaconda Python
- Install the Anaconda Python distribution if it is not installed already. You can download it from https://www.anaconda.com/download/. Get the "Python 3.x" version.
- During setup, skip the installation of Microsoft VSCode
- Otherwise just accept the default settings
Create a new Python environment
Create a new conda
Python environment called nemesys
and install the required packages into this environment.
- Click the Windows button / Open the “Start” menu
- Open the Anaconda Prompt. This will open a command line window which is correctly set up to use your Anaconda Python installation.
- Create the
nemesys
Python environment and installpyqmix
as well as the Spyder development environment:- Type:
conda create -n nemesys python=3 pyqmix spyder
- Type:
Operate pumps via pyqmix
Open and run scripts
- Open the Anaconda Prompt as described above.
- Activate the
nemesys
environment- Type:
activate nemesys
- Type:
- Start the Spyder development environment:
- Type:
spyder
- Type:
- Open the example scripts, run and modify them.
- Have fun!
Best Practices
The setup of the pump system and best practices are described in our paper (see reference below). Additionally, we suggest the following procedures the improve reliability and ease of use:
- Make sure output tubes are of equal length to ensure that the stimulus onset is identical for all pumps.
- Ensure that tube cuts are clean and straight, perpendicular to the tube. This can be achieved by using so-called tube-cutters.
- The 50 mL glass syringes fit really tightly into the syringe holders.Especially when new, it might have to push relatively hard to actually insert the syringe into the holder. This will get easier over time, as the syringe and holders “grind in”.
- Glass syringes might break if too much pressure is exerted. Ensure that the syringes are attached tightly to using the the syringe holders and syringe piston holders, but don’t tighten the syringe holder too much as it can smash the syringe glass cylinder.
- Remove air bubbles. We developed a new procedure that is implemented in pyqmix-web and will guide the user through the process.
Citation
If you use this software, please cite our publication:
A pre-print is available from Zenodo.
Version 2021.1.2
- The DLL search improvement introduced in 2021.1 is now working correctly for Python 3.6 and 3.7, too.
Version 2021.1
- Improve automated DLL search path configuration; the DLLs should be loadable out-of-the-box in more situations now, including on systems running Python 3.8 and newer.
- Switch back to using
pywin32
instead ofpypiwin32
.
Version 2019.1
- Handle non-existent configuration directory
Version 2018.12.13
- Update installation instructions
- Automated testing using Travis now also runs on Python 2.7 (only tested Python 3 before)
switch_valve_when_done
keyword argument is now available for all pumping operations- Depend on
pypiwin32
instead ofpywin32
Version 2018.11.07
- Report correct version number when installed from wheel.
Version 2018.11.05
- Updates to documentation
- Handle the case when a user requests to delete a non-existing configuration file.
- Update packages requirements to include
pywin32
. - We now build universal wheels for both Python 2 and 3.
- Add support for Travis continuous integration tests on GitHub.
Version 2018.10.08a
- Functionally identical to version 2018.10.08, but with additional docstrings for the config module.
Version 2018.10.08
This release includes all the changes listed below.
2018-10-06
- Assume default location of Qmix configuration files (to avoid full path).
2018-10-04
- Rename
switch_valve_when_finished
keyword argument toswitch_valve_when_done
to matchwait_until_done
wording - Add
switch_valve_when_finished
keyword argument toQmixPump.aspirate()
method - Wait until the pumps have actually started operating before checking
whether pumping has finished when using the
wait_until_done
kwarg. - Imply
wait_until_done=True
whenswitch_valve_when_done=True
keyword argument is specified. - Improve auto-discovery of Qmix SDK DLLs
2018-09-13
- Rename
blocking_wait
keyword argument towait_until_done
2018-08-09
- Add
QmixPump.fill()
andempty()
methods QmixPump
methods now raise on invalid volume and flow rate parameters- Package specifications have been moved from
setup.py
tosetup.cfg
- Fix bug when determining valid valve positions
2018-08-07
- Fix reathedocs build
2018-08-02
- Add
config
module topyqmix.__all__
- Remove Qmix SDK header directory config option
- Add convenience method
QmixPump.set_syringe_params_by_type()
to set syringe parameters by specifying a syringe type - Set default flow and volume units when instantiation a
QmixPump
2018-08-01
- Support latest Qmix SDK
- Do not restore pump drive position counter by default
- Add convenience method
QmixPump.set_syringe_params_by_type()
to set syringe parameters by specifying a syringe type
2018-05-25
- Support for a configuration file
- Don't do a blocking wait when calibrating pumps by default
- More example scripts
- Add support for several new Qmix SDK functions
2018-02-21
QmixBus
gainedauto_open
andauto_start
init parametersQmixPump
gainedauto_enable
init parameter
2017-10-09
- Convert
config.py
module to sub-package - Add pump configurations to the new
config.pumps
module - Add
pump.init_pump()
convenience function for pump setup - Add
pump.fill_syringes()
andpump.empty_syringes
convenience functions
2017-10-05
- Add
config.py
module
2017-10-04
- Add valve
position
setter. The new property replaces thecurrent_position
property ofQmixValve
andQmixExternalValve
. - Split monolithic
interface.py
into device-specific submodules
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyqmix-2021.1.2.tar.gz
.
File metadata
- Download URL: pyqmix-2021.1.2.tar.gz
- Upload date:
- Size: 58.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02d22b0b39afb0e2af4323a10906ae98648531d6c1db2b187549503fee17d592 |
|
MD5 | 122075b66e6c6030270d92be462c8065 |
|
BLAKE2b-256 | e70c9b2bcdc447a8cffe4783e37deb938f259368404d68393f97dc8e7d20f70d |
File details
Details for the file pyqmix-2021.1.2-py2.py3-none-any.whl
.
File metadata
- Download URL: pyqmix-2021.1.2-py2.py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4de542a216df9597cadeb02b53feb809f7a80e7b12de4c2d7d0aec058a68c102 |
|
MD5 | 2806fc4694071d98e131f28250812eba |
|
BLAKE2b-256 | 7ac2e0db33f532cf5ec6b2fbbfaf8408882752f86831ca3904a16a543502ddcf |