WaveSurfer

An application for acquiring neurophysiology data in Matlab

Key Features

System Requirements

Download

Download the .zip file for the latest release here. Older versions are here.

Version 0.913 and earlier have a bug where they don't record the ADC calibration data from the NI board, leading to 5-7% errors in the signals when read back in with ws.loadDataFile(). Because of this, these versions should not be used, and we no longer make them available here. If you have data files recorded with one of these versions, download the latest version of WaveSurfer and use the ws.addScalingToHDF5FilesRecursively() tool to read the calibration data off your board and append it to your data files.

Installation

  1. Install a recent version of the National Instruments DAQmx drivers.
  2. In Matlab, check your path for any directories that contain older versions of WaveSurfer, and delete these directories from the path.
  3. Extract the .zip file contents to a convenient location.
  4. In Matlab, cd to this just-created directory.
  5. At the Matlab command line, execute "installWavesurfer". This will permanently modify your Matlab path so that all components needed by WaveSurfer are on it. (If you don't want to permanently modify the path, execute "installWavesurferForNow" instead of the above. This modifies the path only for the current Matlab session.)
  6. At the Matlab command line, execute "wavesurfer". You should now be presented with the WaveSurfer user interface.
  7. Go to Tools > Device & Channels... to specify what DAQ board you want to use, what channels you want to use, and to set channel units and scales, if desired.
  8. In the main window, click the Stimulation > Enabled checkbox to turn on stmulation. Click the Display > Enabled checkbox to show the "oscilloscope" windows where acquired data will be displayed.
  9. In the main window, click the play button (the one with the black righward-pointing arrow) to acquire data without saving to disk. Click the record button (the one with the red circle) to acquire data and save it to disk.
  10. To save your device settings, channel settings, and window positions, go to File > Save Protocol. These can then be loaded in a new WaveSurfer sessions by going to File > Open Protocol...
  11. If you have questions, please contact the WaveSurfer developers.

Important Note about Older Versions of WaveSurfer

Versions 0.913 and earlier have a bug where they don't record the ADC calibration data from the NI board, leading to 5-7% errors in the signals when read back in with ws.loadDataFile(). This bug was fixed in version 0.914. Because of this bug, version 0.913 and earlier should not be used, and we no longer make them available here. If you have data files recorded with one of these versions, download the latest version of WaveSurfer and use the ws.addScalingToHDF5FilesRecursively() tool to read the calibration data off your board and append it to your existing data files. The help for ws.addScalingToHDF5FilesRecursively() provides more details.

Documentation

The user manual for a recent version of WaveSurfer is here. An FAQ is here. Manuals for older versions are here.

The coordination between WaveSurfer and ScanImage has changed in recent versions, and this is not reflected in the most recent WaveSurfer manual available. The new capabilities are described here.

Community

There is a Google Group devoted to WaveSurfer, located here. And feel free to e-mail the developers if you have questions!

Copyright

Except where noted, all code, documentation, images, and anything else in WaveSurfer is copyright 2013–2019 by the Howard Hughes Medical Institute.

License

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Financial Support

WaveSurfer is developed at the HHMI Janelia Research Campus. It has been supported by the Svoboda Lab, who initiated the project, and by the Magee, Spruston, Jayaraman, Lee, Hantman, and Koyama Labs. The project is coordinated by Janelia's Scientific Computing Software group.

History

WaveSurfer supplants an earlier application, Ephus, for electrophysiology and similar data-acquisition tasks. WaveSurfer is a from-scratch rewrite of Ephus developed by Janelia's Scientific Computing group, and shares no code with Ephus. Vijay Iyer specified the original design. Patrick Edson was a co-developer of the earliest versions of WaveSurfer. WaveSurfer borrows design features from DataPro, an electrophysiological acquisition and analysis system for Wavemetrics Igor Pro, originally written by Nelson Spruston and later rewritten by Adam L. Taylor .

Developers

Adam L. Taylor (Lead)
Ben J. Arthur
David Ackerman

Contributors

WaveSurfer includes code from the JSONlab project, by Qianqian Fang. This code is covered by its own copyright and licensing. We thank Dr. Fang for making it publicly available.

Niraj Desai at NINDS contributed bug fixes to WaveSurfer.

Release History

WaveSurfer's release history can be found here.

updated April 25, 2022