A modular Python library for neuroscientific hardware control, data analysis, and experimental setups.
Poulet provides a collection of tools for neuroscience researchers, including:
- Hardware communication (e.g., serial devices, DAQ interfaces)
- Data analysis utilities
- Experimental workflow automation
The library is organized into these core modules:
| Module | Description |
|---|---|
| config | It contains the SETTINGS and LOGGER constants for loading environmental variables and logging. |
| converters | For converting different filetypes to common data science (h5, plk, etc.). |
| hardware | Low-level drivers and interfaces for external devices (e.g., amplifiers, stimulator). |
| tools | Helper functions (serializers, generators, file I/O) – typically class-free. |
| utils | High-level interactive tools for experiments and data processing. |
pip install -U .Install specific modules:
pip install -U .[hardware] # Only hardware dependencies
pip install -U .[tools,utils] # Tools + utilities
# Special case for seq or all:
pip install -U git+https://github.com/LJMUAstroecology/flirpy.git
pip install -U .[seq]
pip install -U .[all] # Everythingpip install -U git+https://github.com/LJMUAstroecology/flirpy.git
pip install -U -e .[all] # For contributorsThe config/ folder includes:
- settings.py – Environment variables for dynamic configuration (avoid hardcoded values).
- Custom logger – Use instead of print() for better debugging.
Example:
from poulet_py import LOGGER
LOGGER.info("Starting trial...")Check the examples/ folder for usage scripts, such as:
- examples/oscilloscope.py – Oscilloscope like visualization.
We welcome contributions! Follow these guidelines:
- Branching
- Work on a dedicated branch (git checkout -b your-feature).
- Submit PRs to the dev branch (PRs to main will be rejected).
- Code Standards
- Tests: Add unit tests in tests/ (mirroring the module structure).
- Documentation: Use docstrings and update init.py for lazy loading.
- Type hints: Recommended for new functions.
- Commit Messages
- Use semantic prefixes (e.g., feat:, fix:, docs:).