pypulsepal
Project description
PyPulsePal
Python API for the PulsePal open-source pulse train generator
This package provides an API to the PulsePal hardware.
This API is a re-implementation of the original PulsePal Python 3 API that draws from the pybpod-api
communication protoool.
Example usage
script/function
from pypulsepal import PulsePal
serial_port = "/dev/ttyACM0" # for unix or "COM"-style port names for Windows
# Create PulsePal object
pp = PulsePal(serial_port=serial_port)
# Set parameters
## Manually
pp.program_one_param(channel=2, param_name="phase1Duration", param_value=.002)
## Via convencience functions
pp.set_resting_voltage(channel=2, voltage=4.2)
# Upload parameters
pp.upload_all()
# Trigger channels
pp.trigger_selected_channels(channel_2=True, channel_4=True)
pp.trigger_all_channels()
# Stop outputs
pp.stop_all_outputs()
# Save settings (also done automatically on disconnect)
pp.save_settings()
as context manager
import time
from pypulsepal import PulsePal
with PulsePal(serial_port="/dev/ttyACM0") as pp:
# set params
pp.upload_all()
# do something
time.sleep(2)
Write default
params to all channels
from pypulsepal.write_tests import write_default_settings
write_default_settings(serial_port="/dev/ttyACM0")
Write (funky) test
params to all channels
from pypulsepal.write_tests import write_test_settings_for_manual_check
write_test_settings_for_manual_check(serial_port="/dev/ttyACM0")
Installation
pip
pip install pypulsepal
git
git clone https://github.com/larsrollik/pypulsepal.git
cd pypulsepal/
pip install -e .
pip + git
pip install git+https://github.com/larsrollik/pypulsepal.git
Problems & issues
Please open issues or pull-requests in this repository.
Citation
Please cite the original PulsePal and PyBpod code and publications that this package is based on.
To cite PyPulsePal
with a reference to the current version (as publicly documented on Zenodo), please use:
Rollik, Lars B. (2021). PyPulsePal: Python API for the PulsePal open-source pulse train generator. doi: --doi--.
BibTeX
@misc{rollik2022pypulsepal,
author = {Lars B. Rollik},
title = {{PyPulsePal: Python API for the PulsePal open-source pulse train generator}},
year = {2022},
month = mar,
publisher = {Zenodo},
url = {https://doi.org/--doi--},
doi = {--doi--},
}
License & sources
This software is released under the GNU GPL v3.0.
This work is derived from the Sanworks PulsePal Python API (commit: 5bb189f).
The architecture of the API is imported and inspired by the pybpodapi.com.arcom
module from the pybpod-api.
For changes from the original implementation, see the git history since commit 972bc1e.
Useful code references
- PyBpod com ArCOM
- PyBpod com protocol
- PyBpod message headers
- PulsePal Python 3 API
- PulsePal .ino file
- PulsePal param definitions
TODO
- Simplify parameter dicts in
definitions
: into nested dict with first level for name, then standard sub-dict (default value, dtype, dtype legacy(model 1), scaling, ) - Complete API functions with all PulsePal opcodes, e.g. for Arduino logic levels (see PulsePal USB v2 opcode list)
- Move PulsePal hardware settings to init and remove defaults for easier upgrade in future
- API function to accept list of dicts (from json settings file)
- to make overwrites on channels to get from value-based logic to channel parameter sets
- add write function to save all settings to json for documentation
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 pypulsepal-0.0.1.tar.gz
.
File metadata
- Download URL: pypulsepal-0.0.1.tar.gz
- Upload date:
- Size: 48.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 705796bea415b5aa3180b7ba4c339eab58b060885525ee505bae37cffed9c178 |
|
MD5 | ffab7f8dfb7396bfa3772304ed8f19c8 |
|
BLAKE2b-256 | 6db5289d9af07a79d781aa3d0c8f0f7a0c878ccd07a8082ca3ea64375a772521 |
File details
Details for the file pypulsepal-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: pypulsepal-0.0.1-py3-none-any.whl
- Upload date:
- Size: 33.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06780d68e4c827895ae084b9f283461d5832d9236b8876abec9ee2690119bacd |
|
MD5 | 877abc8affee96e074cd6fb1cd19aa09 |
|
BLAKE2b-256 | 736cbcd638cdd5013972aa54d6bf17434a967a6cf883e44d717f770bcf349f1f |