[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