In the course of my graduate research, I maintained a large portion of the software used in the Baccus lab. This includes the entire data acquisition pipeline, preprocessing tools, and a neurophysiology data analysis suite.

Recording software

Most of the lab’s data is electrophysiology, recording the electrical activity of neural tissue. In the retina, this is acquired by placing the intact retina on a micro-electrode array (MEA), allowing us to acquire a large number (tens or hundreds) of cells simulatenously. The recording software suite is written mainly in C++. Here’s a quick description of the main components of the pipeline.

  • libdatafile - A shared library which provides an API for reading and writing files containing data and metadata from a single MEA recording.

  • libdata-source - A shared library which provides a unified interface to all of the several different types of MEAs used in the lab’s recording systems.

  • blds - A server application which manages a data source on behalf of networked clients.

  • libblds-client - A shared library implementing the client-side communication with the data server.

  • meactl - A GUI application for controlling a data source and starting/stopping acquisition of data from it.

  • meaview - An application to visualize data from a current or old recording, in real time.

  • oatool - A Python executable and library implementing online analysis (such as receptive field estimation) of neurophysiological data.

Pyret

pyret is a Python package which provides a number of widely-used neurophysiology analysis methods in a simple, fast, and efficient implementation. It provides methods for computing spike-triggered analysis (estimation of receptive fields), linear-nonlinear cascade models of neural function, and a suite of tools for visualizing the results of the included analyses.

The code can be found on PyPI or GitHub, and a short paper detailing pyret can be found on the Journal of Open Source Software.

Other

  • gsvd - A Python wrapper to the LAPACK generalized singular value decomposition (GSVD), which is a useful matrix decomposition for solving ill-posed least-squares problems, regularization, and clustering.