AA - MRC CBU Imaging Wiki
location: AA

Automatic analysis (aa)

Automatic analysis (aa) is a pipeline system for neuroimaging, written in Matlab. It supports SPM 5/8 and some functions from FSL.

As of December 2020, AA is deprecated at CBU. The last update that was deployed at CBU is release 5.4.0_202008, which is available on the imaging system under /imaging/local/software/AA/release-5.4.0_202008. For critical errors in existing pipelines, please contact Johan Carlin for support. For new projects, please investigate alternatives such as nipype, which is available at CBU as part of the Neuroconda environment.

AA continues to be developed outside of CBU, and its developers can be reached on the project Github page.

The documentation below is outdated and should be read with caution.

For more information see:

Paths to aa

Different versions live in:

  • legacy versions (0.1beta - 2.0) - {X} unsupported

    • /imaging/local/spm/aa/aa-ver0.1_beta

    • /imaging/local/spm/aa/aa-ver0.2_beta

    • ...

  • old versions (2.2 - 4.beta)
    • /imaging/local/spm/aa_svn_new/versions/release-2.2

    • /imaging/local/spm/aa_svn_new/versions/release-3.0

    • ...

  • new version (4.0 - 4.1) (based on the latest devel-share branch from GitHub)

    • /imaging/local/software/AA/release-4.0

    • /imaging/local/software/AA/release-4.2 - stable

    • /imaging/local/software/AA/release-4.2_[YYYYMM] - backups on [YYYYMM]

    • /imaging/local/software/AA/release-4.3 - {OK} recommended

Installing aa


  • Operating system: Linux only!
  • Must-have:
    • MATLAB: tested on versions >=r2009a. (!) In CBSU, you need r2012b for parallel computing

    • SPM: most functions work with SPM5 and SPM8, but full functionality requires SPM12

    • For MEG: Neuromag (only ELEKTA systems are supported, so far)

Using aa

For a comprehensive summary, please read the latest manuscript. Please, do not forget to cite it when using!


Before running aa you need to add the corresponding path to MATLAB Path:

  • File/Set Path...
  • addpath('path_to_aa');
    aa_ver4; % adds aa subfolders to the path

(!) To avoid version conflicts make sure that it is added to the top of the Path. It is even more important that path_to_aa/extrafunctions/spm_mods is on the top (of SPM's paths), so modification to the spm may have effect.


You need a

Optionally, you can also specify your own parameter settings loaded by aarecipe. E.g.: User-specific parameter settings (you may need to change the path pointing to the "parent" xml)

  • aap = aarecipe('aap_user_parameters.xml');


Parallel computing

  • Usage
    • To enable parallel computing you have to be logged in an appropriate computing machine (login11-14), make sure that our local MATLAB scripts for qsub (/hpc-software/matlab/cbu) is in your MATLAB path, which is there usually, but it is worth checking :), and add the following line to your UMS:

    • aap.options.wheretoprocess = 'qsub'; % parallel; typical localsingle
    • (!) Because each thread will load the saved MATLAB path, it is very important that it is set and saved correctly before initiating parallel jobs. See Configuration for more information!

  • Monitoring

Handling multiple DICOM sources

  • Colon-separated-list (CSL) for rawdatadir:
    • The “old” script should work without any changes but the newer ones (based on Recent Update on 2013/09/06) should revert. When multiple sources are defined, use CSL. E.g.:
    • aap.directory_conventions.rawdatadir = ‘/mridata/cbu:/mridata/csl:/mridata/camcan’; 
      % default at the moment (see aap_parameters_defaults_CBSU.xml)

Support for NIFTI-4D images

  • As a default, NIFTI-3D is set. To enable NIFTI-4D, you have to specify it in the UMS:
  • aap.options.NIFTI4D = 1; % 4D support; typical value 0

Multi-level interlinked reporting

  • Levels:
    • Study (reporting second-level)
    • Subjects (each subjects separately)
    • Summaries:
      • Subjects
      • Registration
      • First-level thresholded maps
  • Usage
    • Based on aap structure

    • aa_report(fullfile(aas_getstudypath(aap),aap.directory_conventions.analysisid));
    • If you are in the analysis folder
    • aa_report;

Garbage collection

  • Tidy up unnecessary files - delete any inputs to a module that are not also specified as an output.
  • Usage:
    • Based on aap structure

    • aas_garbagecollection(aap,true);
    • If you are in the analysis folder
    • aas_garbagecollection(pwd,true);

(!) From v4.2, it is automatically performed at the end of the analysis according to aap.options.garbagecollection

"Inheritable" parameter settings

There is an option to have site-, user-, and/or study-specific parameter settings containing only the parameters to be overridden (see example).

Non-Standard Modules

  • First-level thresholding
    • List of significant activation maps
    • Overlays on axial slices (T1 MNI)
    • Rendering results in 3D
  • FSL

  • FreeSurfer

Advanced Features

Input file

It is possible to specify Subjects, Sessions and Events based on a text file. Required options in aap.acq_details.input (see also aap_parameters_defaults_CBSU.xml):

  • list: text file:
    • Required format:
      • a CSV file: cells are separated with semicolon

      • subcells are separated with "_"
      • a header in the first line
    • Required columns (may contain more):
      • "ID": numbers for identifying subjects
      • "FMRI1": cells for the fMRI measurement; it must contain the same number of subcells as the coresponding column header
        • first subcell is the CBU volunteer number (without "CBU")
        • series numbers are defined in the consecutive subcells with the same order as their names in the coresponding column header
    • E.g.:
      • ID Age Sex FMRI1_Loc_Con_LDeasy_LDhard
        02 29 f 90952_7_6_4_5
        As "pure" text:
      • ID;Age;Sex;FMRI1_Loc_Con_LDeasy_LDhard
      • 02;29;f;90952_7_6_4_5
  • selected_sessions: subselection of a subset of series:
    • E.g. (based on the example above): [3 4] --> LDeasy and LDhard

  • referencedirectory_tmpl: a template for path to the folder containing Event files (.mat files in SPM-format)
    • Required format:
      • must contain "*" which will be substituted withID (see above)

      • E.g.: '/imaging/ta02/ActionWords/Analysis/E-Prime/DAW*/ref'
    • The folder should contain the regressor(s) in SPM format (.mat file) with filename format: condition_vol_ID-Session Name.mat.

      • E.g. (based on the example above): condition_vol_2-LDeasy.mat
  • Then you add these lines to your UMS (based on the example above):
  • aap.acq_details.input.list='/imaging/ta02/ActionWords/Analysis/Subject_List_Test.csv';
    aap.acq_details.input.selected_sessions = [3 4];
    aap.acq_details.input.referencedirectory_tmpl = '/imaging/ta02/ActionWords/Analysis/E-Prime/DAW*/ref';
    aap = aas_processinput(aap);

Citing aa

Cusack R, Vicente-Grabovetsky A, Mitchell DJ, Wild CJ, Auer T, Linke AC, Peelle JE (2015). Automatic analysis (aa): Efficient neuroimaging workflows and parallel processing using Matlab and XML. Frontiers in Neuroinformatics 8:90.

Recent Updates


New feature - first-level model
  • Previous implementation allowed for changing only the UNITS. Now, it is possible to fully customize the basis function. The defaults are:
  • aap.tasksettings.aamod_firstlevel_model.xBF.UNITS = 'secs'; 
    aap.tasksettings.aamod_firstlevel_model.xBF.Volterra = 1;
    aap.tasksettings.aamod_firstlevel_model.xBF.name = 'hrf';
    aap.tasksettings.aamod_firstlevel_model.xBF.length = 32;
    aap.tasksettings.aamod_firstlevel_model.xBF.order = 1;
    aap.tasksettings.aamod_firstlevel_model.xBF.T = 17; % number of time bins per TR
    aap.tasksettings.aamod_firstlevel_model.xBF.T0 = []; % slice at first time bin (empty allows for automatic setting - for both T and T0 - based on slice-time correction)
  • (!) It means, however, that the old reference aap.tasksettings.aamod_firstlevel_model.UNITS has been deprecated, and aap.tasksettings.aamod_firstlevel_model.xBF.UNITS must be used instead (see UMS).

Fix - subjectname
  • The most recent update fixes the correspondence of the subjectname, the name you use when adding subject in the User Master Script (USM), and the referring aap setting aap.directory_conventions.subjectoutputformat. It means that subjectname has to be provided according to the setting. The default is 'CBU%06d*', which means that you need to provide the number (as an integer, without CBU), e.g. 90952. Many of you may use part or full name of the directory, which will result an error message most likely upon aamod_evaulatesubjectnames. You have two options:

    • Either, specify subjectname in UMS according to the setting (see above).

    • Or, change the setting:
      • If you use partial name (e.g. 'CBU090952'), then add this line to the UMS:

      • aap.directory_conventions.subjectoutputformat = '%s*';
      • If you use full name (e.g. 'CBU090952_MR09032/20090828_131456'), then add this line to the UMS:

      • aap.directory_conventions.subjectoutputformat = '%s';

2013/11/21 New features!

  • "Inheritable" parameter setting

  • aap.directory_conventions.spmtoolsdir: option to specify path for SPM tools which will be taken over when running analysis on the computing cluster. More paths can be specified using the CSL concept similarly to multiple DICOM sources

2013/10/29 New features!

2013/09/06 New features!

Known issue (backward compatibility) SOLVED (see Recent Update on 2013/10/29):

If you want to customize DICOM sources, you need to put your own path to source not into rawdatadir directly (as used to), but into rawdatadir.paths (cell array) or rawdatadir.paths{1} (cellstring).

2013/08/08 Parallel computing is working

Known bugs:

Conventional SPM diagnostic will be missing for:

  • aamod_realignunwarp (no report of fieldmaps)
  • aamod_coreg_noss

However, FSL diagnostics are unaffected.

2013/08/02 new version v4.1 (latest devel-share branch from GitHub)

  • merge with GitHub completed

  • release-4.1 is now the latest stable
  • NIFTI-4D support is independent from SPM version. N.B.: Configuration!

2013/06/26 merge with the latest devel-rhodri branch from GitHub

  • release-4.0 is now the latest stable

2013/06/06 new feature

2013/05/13 new feature

  • Garbage collection tested
  • New report summary:
    • Head movement: outlier-detection with boxplot

2013/04/24 CBSU Patch/Extension for Version 4 is available

New features:

  • Handling input file as a list of subjects and sessions

  • Module for first-level thresholding

  • Multi-level interlinked reporting:

Known bugs:

Parallel computing is still not working!

2013/03/03 Version 4 is available

New features in version 4

CbuImaging: AA (last edited 2020-12-01 10:42:42 by JohanCarlin)