Skip to main content

Human-computer interface experimentation library

Project description

AxoPy Logo

Travis CI Status Documentation Status Codecov test coverage PyPI package Anaconda package

Documentation: https://axopy.readthedocs.io

Axo-Pythonic synapses are those in which an axon synapses upon a Python program. AxoPy aims to facilitate such connections between electrophysiolgical signals and machines by making it easy for researchers to develop human-computer interface experiments. If you’ve ever found yourself spending more time thinking about how to implement your experiments than thinking about what the experiment should be, AxoPy may be able to help.

AxoPy consists of:

Graphical interface

Central to AxoPy is the graphical user interface providing visual feedback to the subject and controlling the flow of the experiment. The GUI is backed by PyQt5, and you’re free to implement customized graphical elements if those built in to AxoPy don’t suit your needs.

Data acquisition

AxoPy establishes a fairly simple API for communicating with input hardware, so all that’s usually needed is a bit of middleware to get going. Check out pytrigno or pymcc to see what this is like. A couple input devices are built in (keyboard, noise generator), so examples run without needing special hardware.

Data storage

Data is stored in a file structure with common file formats (CSV and HDF5) so you can a) start working with data as soon as an experiment session is over and b) you don’t need anything but standard tools (pandas, h5py) to do so. A high-level interface to the storage structure is also provided to make traversing a dataset simple.

Pipeline processing

Estimating intentions of the user from raw electrophysiological signals often involves a large number of processing operations. AxoPy facilitates flexible construction of pipelines that can be reused in different parts of an experiment and re-used for offline post-processing, etc.

Quickstart

Installation

pip

AxoPy is available on PyPI, so the following should get it installed if you’re using a standard Python installation with pip:

$ pip install axopy

Note: if you have Python < 3.5, pip will not be able to install the pyqt5 package for you because wheels for pyqt5 are only provided for Python >= 3.5. If you are stuck on an older version of Python, consider using conda (described below, works for any Python version) or installing Qt5 and PyQt5 yourself before running the command above.

See the development documentation for information on setting up a development environment to work on AxoPy itself.

conda

AxoPy is also available on conda-forge, so if you’re using (Ana)conda with any Python version, you can install it with:

$ conda install -c conda-forge axopy

Hello, AxoPy

Here’s a minimal example to display some randomly generated signals in an “oscilloscope”:

import axopy

daq = axopy.daq.NoiseGenerator(rate=1000, num_channels=4, read_size=100)
exp = axopy.experiment.Experiment(daq=daq)
exp.run(axopy.task.Oscilloscope())

Next Steps

Check out the documentation for more information on creating experiments. Some examples are also available.

Contributing

Please feel free to share any thoughts or opinions about the design and implementation of this software by opening an issue on GitHub. Constructive feedback is welcomed and appreciated.

GitHub issues also serve as the support channel, at least for now. Questions about how to do something are usually great opportunities to improve documentation, so you may be asked about your thoughts on where the answers should go.

If you want to contribute code, open a pull request. Bug fix pull requests are always welcome. For feature additions, breaking changes, etc. check if there is an open issue discussing the change and reference it in the pull request. If there isn’t one, it is recommended to open one with your rationale for the change before spending significant time preparing the pull request.

Ideally, new/changed functionality should come with tests and documentation. If you are new to contributing, it is perfectly fine to open a work-in-progress pull request and have it iteratively reviewed. See the development documentation for instructions on setting up a development environment, running tests, and building the documentation.

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

axopy-0.2.3.tar.gz (40.9 kB view details)

Uploaded Source

Built Distribution

axopy-0.2.3-py2.py3-none-any.whl (45.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file axopy-0.2.3.tar.gz.

File metadata

  • Download URL: axopy-0.2.3.tar.gz
  • Upload date:
  • Size: 40.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.7.2

File hashes

Hashes for axopy-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f4bb344de40cdc94dc5386efccb3e675aa9395747cd407a4a152441855629354
MD5 9d570cdef4f6c0e2356d6402f401dd34
BLAKE2b-256 2e712bb4e73aa3933efdfe92a11956cef39168b1d6519705ee5be9f9d1402c7a

See more details on using hashes here.

File details

Details for the file axopy-0.2.3-py2.py3-none-any.whl.

File metadata

  • Download URL: axopy-0.2.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.7.2

File hashes

Hashes for axopy-0.2.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c4f8c5384b068c7ee7f10610f8179590c3d511da7349a8252fe8518947a26f6c
MD5 9199b14dabe122ad097e7c97e9108228
BLAKE2b-256 4ed2d4e1f99c374c8654d14c58faecc962801034761e218973075885419be919

See more details on using hashes here.

Supported by

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