Main Menu (Mobile)- Block

Main Menu - Block


janelia7_blocks-janelia7_node_tool_type_list | block
node_title | node_title


node:body | entity_field

Matlab Program for Electrophysiological Data Acquisition

Symphony is a data acquisition system focused on electrophysiology experiments. Symphony allows research scientists to write well-structured, user-configurable acquisition routines in MATLAB without getting caught up in a lot of non-essential details. It also provides an easy-to-use graphical user interface for running those routines as part of an overall, well-documented experiment. 


Electrophysiologists tend to write custom software for data acquisition because existing solutions are too restrictive or too expensive. Unfortunately, while building custom systems can offer advantages in constraints and costs, a significant amount of time may be spent just laying the foundation before writing the actual routines of interest – and resulting systems rarely provide sufficient flexibility.

Symphony intends to improve this situation by providing a flexible, extensible, free, and open-source system for writing high-level acquisition routines. It aims to shift researcher's focus from concerns of interfacing with digitizers, amplifiers, etc., to more research appropriate concerns like generating stimuli and recording responses. It also seeks to provide a well-organized, common structure for acquisition logic that facilitates writing, reading, sharing, and maintaining routines. It finally tries to make these routines easy to run as part of an overall, well-organized and well-documented experiment.


Symphony allows users to control data acquisition by writing routines called protocols. Protocols are MATLAB classes that run experimental trials called epochs, which define stimuli to present and responses to record.  Protocols also perform tasks like running on-line analysis and displaying figures.

Protocols use rig configurations to designate the hardware through which epochs output stimuli and input responses. Rig configurations are MATLAB classes that describe the list of devices that form an experimental rig. Device descriptions typically consist of device names and digitizer streams (channels), which connect devices.

A list of these user-created protocols and rig configurations are available through a graphical user interface. The interface serves to conduct experiments by allowing the user to run various protocols and record the results of the epochs produced. The interface also allows for customizing protocol behavior and documenting experimental conditions.


Symphony currently allows:

  • Writing & running custom, user-configurable protocols
  • Acquiring data in discrete epochs (i.e., non-continuous)
  • Generating analog and digital stimuli and recording analog and digital responses
  • Performing online analysis between epochs
  • Displaying figures to plot response and analysis data
  • Saving and loading protocol parameters to/from files
  • Viewing graphical representations of stimuli before running protocols
  • Documenting basic information for groups of epochs

Symphony currently supports:

  • HEKA Instruments ITC18 digitizer (PCI/USB interface)
  • Molecular Devices Axon MultiClamp 700B amplifier
  • MATLAB 2011a+ (32-bit)
  • Windows 7, Mac OS X (for protocol testing and development only) ​

For inquiries, please reference:

Janelia 2012-012

node:field_image | entity_field
node:field_label | entity_field
Flexible, open-source, easy-to-use.
individual_tool_resources | views
janelia_helper-janelia7_publication_list | block
janelia7_blocks-janelia7_tool_collaborators | block
janelia7_blocks-janelia7_program_administration | block


Michael Perham
Head of Innovation Management
addtoany-addtoany_button | block

Share this Tool