Hi Ged,
Thanks for taking interest in the toolbox. To start with the easiest
part - memory demand. The total memory consumption during an analysis
can easily reach GB-level. However, since the algorithm is composed of
several steps (e.g. BOLD model, filtering, CCA) much of the memory can
be reused. The worst case is the filtering step in 3-dimensional
analysis demanding:
6 filter kernels * NScan * NVoxel * Float (4 bytes)
which can produce both 1 and 2 GB of data. However, the toolbox makes
heavy use of memory mapped files and data reorganization to streamline
the memory access patterns. During development I have successfully
executed all test cases using 1 GB RAM. Sure, the hard disk gets it
hard but the analysis completes. A recent test case ended up with close
to a 1.7 GB large memory mapped file (6 * 134 scans * 79*95*69 voxels *
4 bytes) and the toolbox still completed the analysis without a hassle.
Consequently, the first thing to do if performance is of primary
importance is to add RAM. 2-dimensional analysis roughly needs half the
amount of memory as 3D-analysis.
The CCA-implementation in the toolbox is specifically targeted for the
fMRI scenario. As such it doesn't provide the generic CCA solution but
a restricted solution. The restriction is that the sign of the weights
of each separate data set has to be the same. E.g.:
Sign(WeightX1) == Sign(WeightX2) as well as Sign(WeightY1) == Sign
(WeightY2)
The calculation of the restricted CCA is also only rank verified for
the image data since the expected BOLD response is already known to be
OK. Finally, the CCA only returns the best fit solution, i.e.
coefficients, weights and variable indexes corresponding to the dataset
combinations having the highest correlation.
However, it is not too difficult to modify the function RestrictedCCA()
(file:RestrictedCCA.m) to become a generic CCA. A good starting point
is to:
1. Add a rank checking for VarX after line 94 (copy/modify lines 112-
113)
2. Remove the restriction (line 131 to 149, including
corresponding "end"-
statements)
3. Modify lines 152 - 166 depending on if you want the best solution
or
a specific solution.
Since the toolbox implementation check all possible solutions, there is
further room for optimization in cases where a specific solution is
requested. A modification may not work with the GUI but if you only
want to perform CCA on a data set the RestrictedCCA() is a good
starting point. The CCA also has to be initialized by a call to
InitRestrictedCCA() (file:InitRestrictedCCA.m) specifying the number of
variables in the X- and Y-data sets.
I hope this answers your questions. If not, don't hesitate to get back.
Best,
Nils
CMIV
Linköping University/US
SE-581 85 Linköping
Sweden
Nat : 013-22 89 96
Int : +46 - 13 22 89 96
----- Original Message -----
From: Ged Ridgway <[log in to unmask]>
Date: Wednesday, June 27, 2007 1:28 pm
Subject: Re: [SPM] Release - Canonical correlation toolbox ver 2.00
To: Nils Paulsson <[log in to unmask]>
> Hi Nils,
>
> Can I check a couple of things with you? (I should probably look
> through the code, but I'm being lazy!)
>
> Does this toolbox provide for general CCA of imaging data and
> covariates? Or just the specific fMRI-activation scenario you
> describe? For example, if one has structural "VBM" data, and
> wishes to
> find the canonical variate images for certain covariates... I
> understand that Fisher's Linear Discriminant Analysis is a special
> case of CCA (with a binary covariate specifying group membership),
> so
> I wonder if the toolbox could, for example, be used for LDA...
>
> Secondly, how memory hungry is the toolbox? E.g. does it require
> an
> Nvoxel-by-Nvoxel covariance matrix to be stored at any point? Or
> an
> Nscan-by-Nvoxel data matrix? Or just an Nscan-by-Nscan covariance
> matrix (like for example PCA using the "Eigenfaces" trick)?
>
> Many thanks in advance for any time you can spare to help me, feel
> free to reply via the list if you think this may be of more
> general
> interest.
>
> Best,
> Ged.
>
> Nils Paulsson wrote:
> > Dear All
> >
> > I'm happy to announce the release of the latest version of the
> CCA-fMRI
> > toolbox for SPM. This new version (ver 2.00) supports SPM 5,
> whereas
> > the previous version (ver 1.00) supports SPM 2.
> >
> > The toolbox utilizes canonical correlation analysis in
> combination with
> > the Balloon model and adaptive filtering of fMRI data to detect
> areas
> > of brain activation. The CCA-fMRI toolbox provides its own user
> > interface and can also be used as stand alone scripts, e.g. for
> batch
> > processing.
> >
> > For download and documentation, please have a look at:
> >
> > http://cca-fmri.sourceforge.net/
> >
> >
> > Sincerely,
> > Nils Paulsson
> >
> > CMIV
> > Linköping University/US
> > SE-581 85 Linköping
> > Sweden
> > Nat : 013-22 89 96
> > Int : +46 - 13 22 89 96
> >
>
|