Analysis of MEG Data in SPM5

Many of us here use SPM for EEG and/or MEG analysis. The main reason is that SPM is freeware (requiring only Matlab), and thus modifiable and relatively easily to understand (Matlab is a relatively "high-level" language, which is easy to learn if you have any experience in procedural computer programming). Several of us are actively extending SPM for our own purposes, particularly in relation to the Neuromag type of MEG data.

SPM also offers some unique features (ie, not yet available in other packages):

Note that SPM5 does not do ECD solutions for MEG or offer optimised graphics (e.g, for browsing raw data) (though SPM8 will; see section on code below). SPM is also really designed for group-level, image-based statistics; if you want a more accurate source space (cortical mesh) and forward model for single-subject inversions (with better and faster graphics), you could consider MNE+Freesurfer instead.


Further Help

Some relevant papers

The code

SPM has been developed at the FIL (in London), with input from people round the world. Here is its home:

At the moment, we are using "SPM5" (with any latest updates automatically pulled from the FIL). At the CBU, SPM5 is installed here:


We have edited/refined some of these functions. These modifications are stored here:


If you start SPM5 from Linux using Rhodri's wrappers, both these directories will be added to your Matlab path, with the cbu_updates directory higher in the path (so you will be using local CBU versions of any functions duplicated across these directories).

The functions in cbu_updates may be periodically updated, which will be preceded by an email to CBU imagers. More recent changes are under subversion control (SVN): If you are an external collaborator (outside the CBU network), or want access to the most recent changes (at your own risk), consult MeegCodeCbuSvn.

In the future, we will move to "SPM8". One exciting reason for this is that SPM8 will share the same data format with Field-Trip and EEGLAB (which are also Matlab packages for analysing EEG+MEG data). This will allow us to take the best features of each (e.g, source localisation and dynamic causal modelling in SPM8; time-frequency analysis and beam-formers in Field-Trip; Independent Component Analysis in EEGLAB). This is another advantage of Matlab-based academic-community-based freeware.

Basic preprocessing and source localisation in SPM8 will not differ much from SPM5. The main improvements concern Dynamic Causal Modelling (DCM) for EEG/MEG (together with better graphics and GUI). The reason that we are sticking with SPM5 for the moment is that the data format and forward modelling for Neuromag data is not quite finalised in Field-Trip/SPM8.

SPM5 can read raw and averaged FIF files, though you will probably first want to run your raw data through the Maxfilter utility, particularly if you 1) used Active Shielding during acquisition, 2) if you want to apply (temporal) SSS to remove noise, 3) if you used continuous HPI and/or 4) if you want to transform all subjects to a common (device) space. Max Filter can also downsample (eg from 1000Hz to 200Hz) and convert the data into different datatypes (e.g, short), which will help reduce filesize and processing time.

SPM5 uses Brainstorm (another freeware Matlab package) for creating forward models. You do not need to know how to use Brainstorm, but if you are interested, here is a link: