Package: axopy
Documentation:https://axopy.readthedocs.ioAxo-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 aboutwhat the experiment should be, AxoPy may be able to help.AxoPy consists of:Graphical interfaceCentral 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 acquisitionAxoPy 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 outpytrignoorpymccto see what this is like. A couple input
devices are built in (keyboard, noise generator), so examples run without
needing special hardware.Data storageData 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 processingEstimating 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.QuickstartInstallationpipAxoPy is available onPyPI, so the following should get it installed if
you’re using a standard Python installation withpip:$ pip install axopyNote: if you have Python < 3.5,pipwill not be able to install thepyqt5package for you because wheels forpyqt5are only provided for
Python >= 3.5. If you are stuck on an older version of Python, consider usingconda(described below, works for any Python version) or installing Qt5 and
PyQt5 yourself before running the command above.See thedevelopment documentationfor information on setting up
a development environment to work on AxoPy itself.condaAxoPy is also available onconda-forge, so if you’re using (Ana)conda with
any Python version, you can install it with:$ conda install -c conda-forge axopyHello, AxoPyHere’s a minimal example to display some randomly generated signals in an
“oscilloscope”:importaxopydaq=axopy.daq.NoiseGenerator(rate=1000,num_channels=4,read_size=100)exp=axopy.experiment.Experiment(daq=daq)exp.run(axopy.task.Oscilloscope())Next StepsCheck out thedocumentationfor more information on creating experiments. Someexamplesare also available.ContributingPlease feel free to share any thoughts or opinions about the design and
implementation of this software byopening 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 thedevelopment
documentationfor instructions on setting up a development environment,
running tests, and building the documentation.