Skip to content
Bill Chapman edited this page Jun 9, 2016 · 9 revisions

CMBHOME: A Package for Neural Data

Bill Chapman a, Andrew Bogaard
Boston University, Department of Brain and Psychological Sciences
a: e-mail: wchapman@bu.edu

Overview

CMBHOME is a MATLAB based toolbox for analysis of electrophysiology and behavioral data. It provides three overarching functions

  1. Data organization: Neural data comes in a variety of data formats, multiple files, and is not meant to be directly used for analysis. Thus, users will typically import data to MATLAB (or python, or C++) for analysis. By providing a standard toolbox for import and organization we avoid having to deal with the raw files again, and maintain organizational paradigms over different users. In short: it's easier to do analysis when you know the data will always look a certain way.

  2. Analysis Aid: There are many mathematical and computational techniques that are used throughout the field over and over (for example, spike time autocorrelations, regressions, circulinear statistics, phase estimation, etc). We implement these methods once in the toolbox and then make use of them in multiple higher level analyses (once you have a method to determine phase of a signal, you use that function in other functions, such as LFP phase estimation).

  3. Graphical Interface: Many high-level analyses can be performed from our graphical user interface, allowing non-programmers to get publication-style figures and statistics with no programming. For researchers performing more novel analyses, we try to provide a clean and simple interface to any methods built in to the toolbox.

Introduction:

This wiki is intended to provide a higher level introduction to the CMBHOME toolbox, particularly for new users. HOWEVER we do assume basic MATLAB knowledge, including how to start the program and enter commands. If you are looking for more involved documentation of the methods used or see a full list of methods, please either view the code or use the doc CMBHOME.Session, doc CMBHOME.LFP, doc CMBHOME.Spike, or doc CMBHOME.Utils command in MATLAB. Where possible we have also included citations of published work defining the methods for each function.

Design We make use of Object-Oriented programming -- the most common paradigm of programming for quality software. For someone unfamiliar, the typical analogy is an alarm clock. A clock has parts (minute hand, hour hand), and does things (alarm goes off). The state of the clock is the sum of all of the parts, and the alarm goes off based when a certain state is reached. In object oriented programming you have an object (we typically call ours root, for no particular reason), which has fields (data and internal states), and does things called methods (generates a figure, filters data, etc). This a useful framework, because all relevant data stays in one variable (the clock), and that object has methods built into it that depend on the internal data.

The toolbox has three main objects:

  • +CMBHOME
    • @Session: Includes time varying behavioral (video) data.
    • @Spike: Includes time stamps for single-unit activity
    • @LFP: Includes time-varying Local Field Potential data.

The exact field names in each of these vary, but they are essentially storing a signal and timestamp. The methods in each of these objects varies, but may include: plotting functions, epoching, standard analyses, temporal autocorrelations, etc. The session object is used as the top-level object (eg: Spike and LFP are fields of a Session). This organization allows us to index Spike and LFP timestamps to the behavioral timescale -- so we can easily associate differentially sampled signals.

Throughout this wiki we call the main CMBHOME Session variable "root", however this variable name can be whatever you desire in your implementation. Fields and methods are referenced as root.fieldName or root.method.

Credit:

If you find the toolbox useful, please provide a citation back to the git repository so that others can know of its existence. We can also add your paper to the list of papers using the toolbox, found at the bottom of the navigation to the right.