[Eeglablist] AMICA on semicontinuous data
Jason Palmer
japalmer29 at gmail.com
Wed Apr 9 13:10:10 PDT 2014
Dear Tatu,
Apparently that data is causing a "stack overflow", which can occur with
large datasets using the Windows version (which forces a maximum stack
size). It may be just small enough with the block of data removed. However,
since it also contains large artifacts, this probably contributes to the
need for addition stack resources. The Mac and Linux versions should not
have this issue.
I typically remove large artifacts before running ICA by simply detecting
timepoints where the potential magnitude is greater than say 150uV, and use
pop_select.m to remove them. Or if the boundary events are always at the
beginning/end, or known locations, you can use pop_select to remove them as
well. Or you could search for boundary events and remove continuous section
around the boundaries.
FYI, I usually remove bad channels with simple heuristics, do average
reference, and high-pass filter above 1 Hz as the remaining pre-processing.
Best,
Jason
-----Original Message-----
From: eeglablist-bounces at sccn.ucsd.edu
[mailto:eeglablist-bounces at sccn.ucsd.edu] On Behalf Of Tatu Huovilainen
Sent: Wednesday, April 09, 2014 1:47 AM
To: eeglablist at sccn.ucsd.edu
Subject: [Eeglablist] AMICA on semicontinuous data
Hello EEGlab community,
I'm still somewhat new to EEGlab, but the features and their documentation
have made it really easy to hop on. Still, I've run into a problem I don't
have the knowhow to solve and the documentation on it is pretty scarce.
I'm using AMICA for cleaning the data, which works unbelievably well by the
way, but I've learned that if there's even one boundary event in the data
the program crashes. This is problematic as some of the blocks I'm trying to
run ICA on have some ~10 second windows with huge artefacts that have to be
removed. Below is an output of the AMICA command. It's from a block that
without a removed part would run through perfectly well.
Has anyone encountered this before, and is there maybe some simple
workaround I don't see?
Any advice would be appreciated. Thank you in advance!
-Tatu
(Using Matlab R2012a & EEGlab 13.1.1
[ EEG.icaweights, EEG.icasphere, mods ] = runamica12(
EEG.data(chanInd('EEG'),:) ); %%% The chanInd('EEG') just returns a list of
channels of the type.
The system cannot find the path specified.
The system cannot find the path specified.
The system cannot find the path specified.
No recognized parallel environment found. Run qconf -spl to get a list of
available environments and use keyword use_pe.
Running locally with maximum of 4 threads.
Writing data file: D:\Tatu\AMICATMP\tmpdata61471.fdt
1 processor name = XXXXXX
1 host_num = 1376903278
This is MPI process 1 of 1 ; I am process 1
of
1 on node: XXXXXX %Post removed, probably no need..
1 : node root process 1 of 1
Processing arguments ...
num_files = 1
FILES:
D:\Tatu\AMICATMP\tmpdata61471.fdt
num_dir_files = 1
initial matrix block_size = 256
do_opt_block = 0
number of models = 1
number of density mixture components = 3
pdf type = 0
max_iter = 2000
num_samples = 1
data_dim = 134
field_dim = 382975
do_history = 0
histstep = 10
share_comps = 0
share_start = 100
comp_thresh = 0.990000000000000
share_int = 100
initial lrate = 5.000000000000000E-002
minimum lrate = 1.000000000000000E-008
lrate factor = 0.500000000000000
initial rholrate = 5.000000000000000E-002
rho0 = 1.50000000000000
min rho = 1.00000000000000
max rho = 2.00000000000000
rho lrate factor = 0.500000000000000
kurt_start = 3
num kurt = 5
kurt interval = 1
do_newton = 1
newt_start = 50
newt_ramp = 10
initial newton lrate = 1.00000000000000
do_reject = 0
num reject = 3
reject sigma = 3.00000000000000
reject start = 2
reject interval = 3
max_thrds = 2
write step = 10
write_nd = 0
write_LLt = 1
dec window = 1
max_decs = 3
fix_init = 0
update_A = 1
update_c = 1
update_gm = 1
update_alpha = 1
update_mu = 1
update_beta = 1
invsigmax = 100.000000000000
invsigmin = 0.000000000000000E+000
do_rho = 1
load_rej = 0
load_c = 0
load_gm = 0
load_alpha = 0
load_mu = 0
load_beta = 0
load_rho = 0
load_comp_list = 0
do_mean = 1
do_sphere = 1
doPCA = 1
pcakeep = 134
pcadb = 30.0000000000000
byte_size = 4
doscaling = 1
scalestep = 1
A subdirectory or file D:\Tatu\AMICATMP\amicaouttmp\ already exists.
output directory = D:\Tatu\AMICATMP\amicaouttmp\
1 : setting num_thrds to 2 ...
1 : using 2 threads.
1 : node_thrds = 2
bytes in real = 1
1 : REAL nbyte = 1
getting segment list ...
blocks in sample = 382975
total blocks = 382975
node blocks = 382975
node 1 start: file 1 sample 1 index
1
node 1 stop : file 1 sample 1 index
382975
1 : data = 19.4008998870850 8.51673507690430
getting the mean ...
mean = -1.38158794941323 9.108994773376549E-003
-9.745015379274158E-003
subtracting the mean ...
getting the sphering matrix ...
cnt = 382975
doing eig nx = 134 lwork = 179560
minimum eigenvalues = 1.32521304789175 1.60365130875427
1.83976537562973
maximum eigenvalues = 287079.512877785 8402.99938147310
4669.66292334350
num eigs kept = 134
numeigs = 134
sphering the data ...
1 Allocating variables ...
1 : Initializing variables ...
1 : block size = 256
1 : entering the main loop ...
forrtl: severe (170): Program Exception - stack overflow
Image PC Routine Line Source
amica12win64.exe 000000013FCEE047 Unknown Unknown Unknown
amica12win64.exe 000000013FC55847 Unknown Unknown Unknown
libiomp5md.dll 000000001007BC0C Unknown Unknown Unknown
libiomp5md.dll 000000001005C428 Unknown Unknown Unknown
libiomp5md.dll 0000000010053BC8 Unknown Unknown Unknown
libiomp5md.dll 000000001003591C Unknown Unknown Unknown
amica12win64.exe 000000013FC41A35 Unknown Unknown Unknown
amica12win64.exe 000000013FC1447C Unknown Unknown Unknown
amica12win64.exe 000000014008F42C Unknown Unknown Unknown
amica12win64.exe 000000013FCEE56F Unknown Unknown Unknown
kernel32.dll 0000000076CA652D Unknown Unknown Unknown
ntdll.dll 0000000076DDC541 Unknown Unknown Unknown
No gm present, setting num_models to 1
No W present, exiting
Reference to non-existent field 'W'.
Error in runamica12 (line 851)
weights = mods.W(:,:,1);
--------------------------------
Tatu Huovilainen
Research Assistant
CBRU - Helsinki University
_______________________________________________
Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu
For digest mode, send an email with the subject "set digest mime" to
eeglablist-request at sccn.ucsd.edu
More information about the eeglablist
mailing list