etho
Project description
etho: A Python framework for coordinating stimuli, data acquisition, and hardware control in neuroscience experiments
etho is an open-source Python framework for running behavioral neuroscience experiments that require coordinated stimulus presentation, hardware control, data acquisition, and experiment logging.
It was developed for experiments on acoustic communication and social behavior, where multiple hardware devices must operate together with reproducible timing. etho coordinates cameras, National Instruments DAQ hardware, acoustic and optogenetic stimulation, environmental sensors, and external imaging systems through a modular service-based architecture.
The software is designed to make experiments reproducible, configurable, and maintainable by separating:
- experiment logic (
protocol.yaml) - stimulus definitions (
playlist.txt) - hardware calibration
- acquisition callbacks
- service-level logs
from the underlying device code.
Features
- Modular service-based architecture
- Coordinated control of heterogeneous hardware
- Human-readable YAML experiment protocols
- Playlist-based stimulus specification
- Acoustic and optogenetic stimulus generation
- National Instruments DAQ integration
- Multiple camera backends
- Trigger synchronization with external systems (e.g. ScanImage)
- Per-service experiment logging
- HDF5 / Zarr / video data export
- Command-line and GUI interfaces
- Calibration workflows for speakers and LEDs
- Callback system for online display and data processing
Typical use cases
etho is intended for experiments requiring synchronized:
- stimulus playback
- analog/digital acquisition
- video recording
- optogenetic stimulation
- trigger generation
- environmental monitoring
Typical applications include:
- acoustic communication experiments
- behavioral neuroscience
- sensory stimulation
- closed-loop experiments
- imaging synchronization
- multimodal behavioral assays
Although originally developed for Drosophila experiments, the framework is not species-specific.
Software architecture
The experiment workflow in etho is organized around protocols, playlists, services, callbacks, data outputs, and logs.
- The user selects an experiment protocol and stimulus playlist.
- The experiment controller initializes the requested hardware services.
- Services coordinate acquisition and stimulation during the experiment.
- Callbacks save and visualize acquired data.
- Each service writes detailed logs for debugging and provenance tracking.
- Data, configuration, and logs together form a reproducible experiment record.
Installation
See the full installation guide:
https://janclemenslab.org/etho/install.html
Typical installation:
conda create -n etho -y python=3.13 uv pip
uv venv etho
source etho/bin/activate
uv pip install etho-python
Some hardware backends require additional vendor SDKs and drivers.
Quick start
Launch GUI
etho gui
Run an experiment
etho run protocol.yaml
Example protocol structure
maxduration: 600
DAQ:
samplingrate: 10000
device: Dev1
CAMERAS:
frame_rate: 100
Documentation
Full documentation is available at:
https://janclemenslab.org/etho
Documentation includes:
- installation
- hardware configuration
- protocol format
- playlists
- calibration
- callbacks
- logging
- API documentation
Development status
etho has been under active development since 2018 and is used in ongoing behavioral neuroscience experiments in the Clemens laboratory.
The repository contains:
- automated tests
- continuous integration
- documentation
- example protocols
- public issue tracking
Contributions and bug reports are welcome.
Contributing
Please see CONTRIBUTING.md.
If you encounter problems or would like to request features, please open an issue: https://github.com/janclemenslab/etho/issues
Citation
If you use etho in research, please cite:
TODO
A JOSS paper describing the software is currently in preparation.
License
MIT License.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file etho_python-0.23.0.tar.gz.
File metadata
- Download URL: etho_python-0.23.0.tar.gz
- Upload date:
- Size: 90.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.33.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6fb6c7b207eb3117f617be9545bf4483b9aa5355235805b6b675536d6a634cb
|
|
| MD5 |
0e85dd0eae0da7a78011bee6c295bc0f
|
|
| BLAKE2b-256 |
498be7b7cd64c8f5eef13e18550d5fd6d123aac50b8b6e8cb6a44f1d9a75f4bf
|
File details
Details for the file etho_python-0.23.0-py3-none-any.whl.
File metadata
- Download URL: etho_python-0.23.0-py3-none-any.whl
- Upload date:
- Size: 87.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.33.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4050510f9900cedc965131b7c5287c948fcda85653ed440dedd35c18c82f19cf
|
|
| MD5 |
cbf2653f2cb570b2ad4c6b7e4865613a
|
|
| BLAKE2b-256 |
3d41b303ec0660d41fc7f0fbcf16f8bd410a976c33a48eaf4a2b48a99b383230
|