Skip to main content

etho

Project description

etho: A Python framework for coordinating stimuli, data acquisition, and hardware control in neuroscience experiments

Test Documentation License: MIT

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.

etho architecture

  1. The user selects an experiment protocol and stimulus playlist.
  2. The experiment controller initializes the requested hardware services.
  3. Services coordinate acquisition and stimulation during the experiment.
  4. Callbacks save and visualize acquired data.
  5. Each service writes detailed logs for debugging and provenance tracking.
  6. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

etho_python-0.23.0.tar.gz (90.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

etho_python-0.23.0-py3-none-any.whl (87.6 kB view details)

Uploaded Python 3

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

Hashes for etho_python-0.23.0.tar.gz
Algorithm Hash digest
SHA256 a6fb6c7b207eb3117f617be9545bf4483b9aa5355235805b6b675536d6a634cb
MD5 0e85dd0eae0da7a78011bee6c295bc0f
BLAKE2b-256 498be7b7cd64c8f5eef13e18550d5fd6d123aac50b8b6e8cb6a44f1d9a75f4bf

See more details on using hashes here.

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

Hashes for etho_python-0.23.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4050510f9900cedc965131b7c5287c948fcda85653ed440dedd35c18c82f19cf
MD5 cbf2653f2cb570b2ad4c6b7e4865613a
BLAKE2b-256 3d41b303ec0660d41fc7f0fbcf16f8bd410a976c33a48eaf4a2b48a99b383230

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page