| RUNICA | Perform Independent Component Analysis (ICA) decomposition of input data using the logistic infomax ICA algorithm of Bell & Sejnowski (1995) with the natural gradient feature of Amari, Cichocki & Yang, or optionally the extended-ICA algorithm of Lee, Girolami & Sejnowski, with optional PCA dimension reduction. Annealing based on weight changes is used to automate the separation process. |
| Usage: | >> [weights,sphere] = runica(data); % train using defaults else >> [weights,sphere,compvars,bias,signs,lrates,activations] = runica(data,'Key1',Value1',...); |
| Input: | |
data |
input data (chans,frames*epochs). Note that if data consists of multiple discontinuous epochs, each epoch should be separately baseline-zero'd using >> data = rmbase(data,frames,basevector); |
| Optional keywords [argument]: | |
'extended' |
[N] perform tanh() "extended-ICA" with sign estimation N training blocks. If N > 0, automatically estimate the number of sub-Gaussian sources. If N < 0, fix number of sub-Gaussian comps to -N [faster than N>0] (default|0 -> off) |
'pca' |
[N] decompose a principal component (default -> 0=off) subspace of the data. Value is the number of PCs to retain. |
'sphering' |
['on'/'off'] flag sphering of data (default -> 'on') |
'weights' |
[W] initial weight matrix (default -> eye()) (Note: if 'sphering' 'off', default -> spher()) |
'lrate' |
[rate] initial ICA learning rate (<< 1) (default -> heuristic) |
'block' |
[N] ICA block size (<< datalength) (default -> heuristic) |
'anneal' |
annealing constant (0,1] (defaults -> 0.90, or 0.98, extended) controls speed of convergence |
'annealdeg' |
[N] degrees weight change for annealing (default -> 70) |
'stop' |
[f] stop training when weight-change < this (default -> 1e-6 if less than 33 channel and 1E-7 otherwise) |
'maxsteps' |
[N] max number of ICA training steps (default -> 512) |
'bias' |
['on'/'off'] perform bias adjustment (default -> 'on') |
'momentum' |
[0 |
'specgram' |
[srate loHz hiHz frames winframes] decompose a complex time/frequency transform of the data (Note: winframes must divide frames) (defaults [srate 0 srate/2 size(data,2) size(data,2)]) |
'posact' |
make all component activations net-positive(default 'off'} Requires time and memory; posact may be applied separately. |
'ncomps' |
[N] number of ICA components to compute (default -> chans or 'pca' arg) using rectangular ICA decomposition. This parameter may return strange results. This is because the weight matrix is rectangular instead of being square. Do not use except to try to fix the problem. |
'verbose' |
give ascii messages ('on'/'off') (default -> 'on') |
| Outputs: | [Note: RO means output in reverse order of projected mean variance unless starting weight matrix passed ('weights' above)] |
weights |
ICA weight matrix (comps,chans) [RO] |
sphere |
data sphering matrix (chans,chans) = spher(data) Note that unmixing_matrix = weights*sphere {if sphering off -> eye(chans)} |
compvars |
back-projected component variances [RO] |
bias |
vector of final (ncomps) online bias [RO] (default = zeros()) |
signs |
extended-ICA signs for components [RO] (default = ones()) [ -1 = sub-Gaussian; 1 = super-Gaussian] |
lrates |
vector of learning rates used at each training step [RO] |
activations |
activation time courses of the output components (ncomps,frames*epochs) |
| Authors: | Scott Makeig with contributions from Tony Bell, Te-Won Lee, Tzyy-Ping Jung, Sigurd Enghoff, Michael Zibulevsky, Delorme Arnaud, CNL/The Salk Institute, La Jolla, 1996- |