[Eeglablist] Passing vector elements to pop_select() 'no channel' argument
Morett, Laura
laura.morett at yale.edu
Wed Apr 5 20:07:08 PDT 2017
Hi Chao,
Thanks for your helpful reply. I tried both configurations, and the first one (numeric) appears to allow this portion of my script to proceed. However, when I run it, I now receive the following error:
Removing 1 channel(s)...
Index exceeds matrix dimensions.
Error in pop_select (line 234)
noChannelAsCell{nochanId} = EEG.chanlocs(g.nochannel(nochanId)).labels;
Error in eeg_interp (line 139)
EEG = pop_select(EEG, 'nochannel', badchans);
Error in pop_interp (line 156)
EEG = eeg_interp(EEG, bad_elec, method);
Below is the next line of the script. Any insight anyone can provide into what’s causing this new error would be greatly appreciated.
EEG = pop_interp(EEG, chan_remove{s}, 'spherical');
Thanks,
Laura
********************************************************
Laura M. Morett
Hilibrand Postdoctoral Fellow
Yale Child Study Center
230 S. Frontage Rd.
New Haven, CT 06520
As of August 16, 2017:
Assistant Professor of Educational Psychology
Educational Neuroscience Initiative
University of Alabama
Box 870231
Tuscaloosa, AL 35487-0231
Email: laura.morett at yale.edu<mailto:laura.morett at yale.edu>
Phone: (203) 737-4586
Web: http://lauramorett.strikingly.com/<https://urldefense.proofpoint.com/v2/url?u=http-3A__lauramorett.strikingly.com_&d=CwMF-g&c=-dg2m7zWuuDZ0MUcV7Sdqw&r=7RydtjFxlOLitiTKeuyufwjZVnuS2cr0LD3ZBHQd6QA&m=hcKHc9qk081CzOBRcCJRuXs-41-8mLMuX9gmiw_QG_g&s=UQlF7t1IaNyCaJW5l4lvUXFZvEYnMtD2_GIYvnLLIaE&e=>
From: chao wang <hnchaowang at gmail.com>
Date: Wednesday, April 5, 2017 at 9:14 PM
To: EEGLAB List <eeglablist at sccn.ucsd.edu>
Cc: "Morett, Laura" <laura.morett at yale.edu>
Subject: Re: Passing vector elements to pop_select() 'no channel' argument
Hi, Laura
In the help of the function, it says this parameter should be a "vector of channel indices to exclude from the new dataset. Can also be a cell array of channel names." So I think the following formats might be acceptable:
chan_remove = {128, [87, 119], 104, 104, 119, 15}; % (each cell is a vector of channel indices)
OR
chan_remove2 = {'E128', {'E87','E119'}, 'E104', 'E104', 'E119', 'E15'}; % (each cell is a cell array of channel indices)
You can try them.
Best,
Chao
On Thu, Apr 6, 2017 at 3:00 AM, <eeglablist-request at sccn.ucsd.edu<mailto:eeglablist-request at sccn.ucsd.edu>> wrote:
---------- Forwarded message ----------
From: "Morett, Laura" <laura.morett at yale.edu<mailto:laura.morett at yale.edu>>
To: "eeglablist at sccn.ucsd.edu<mailto:eeglablist at sccn.ucsd.edu>" <eeglablist at sccn.ucsd.edu<mailto:eeglablist at sccn.ucsd.edu>>
Cc:
Bcc:
Date: Wed, 5 Apr 2017 13:19:01 +0000
Subject: [Eeglablist] Passing vector elements to pop_select() 'no channel' argument
Dear list,
I am writing to ask how I can pass a vector with multiple channel names for removal to pop_select(). At present, I’ve defined the following vectors with the names of the channels that I want to remove (chan_remove) and the subjects that I want to remove them from (subjs_rm_chan) near the beginning of my script:
chan_remove = {{'E128'}, [{{'E87'} {'E119'}}], {'E104'}, {'E104'}, {'E119'}, {'E15'}}
subjs_rm_chan = {'11113','11115','11135','11138','11145','11146'};
nsubjbadch = length(subjs_rm_chan); % number of subjects w/ bad channels
Further down, I attempt to remove them using the following code:
for s=1:nsubjbadch % Loop through list of subjects with bad channels
data_path = [home_path subjs_rm_chan{s} '/']; % Path to the folder containing the current subject's data
EEG = pop_loadset('filename',[subjs_rm_chan{s} '_reref_filt.set'], 'filepath', data_path);
disp([chan_remove{s}]);
EEG = pop_select(EEG,'nochannel', chan_remove{s});
When I run this code, I receive the following errors:
Error using cell/unique (line 85)
Input A must be a cell array of character vectors.
Error in cell/setdiff>cellsetdifflegacy (line 199)
[a,ia] = unique(a,'legacy');
Error in cell/setdiff (line 133)
[varargout{1:nlhs}] = cellsetdifflegacy(varargin{1:2},logical(flaginds(1)));
Error in setdiff_bc (line 20)
[C,IA] = setdiff(A,B,varargin{:},'legacy');
Error in eeg_interp (line 137)
goodchans = setdiff_bc(1:EEG.nbchan, badchans);
Error in pop_interp (line 156)
EEG = eeg_interp(EEG, bad_elec, method);
I checked, and chan_remove is indeed not a cell array of character vectors, so I tried using the following alternative:
chan_remove = {[128], [[87], [119]], [104], [104], [119], [15]};
However, this doesn’t solve the problem, returning the following error when I run the code above:
Index exceeds matrix dimensions.
Error in pop_select (line 234)
noChannelAsCell{nochanId} = EEG.chanlocs(g.nochannel(nochanId)).labels;
Error in eeg_interp (line 139)
EEG = pop_select(EEG, 'nochannel', badchans);
Error in pop_interp (line 156)
I’ve tried several different variations of syntax in defining chan_remove to no avail. Does anyone know:
1. How I can pass a vector of channel names to cycle through to be selected and removed?
2. How I can pass multiple channel names as one element to be selected and removed (see second element)?
Thanks in advance for any help anyone can provide.
Best wishes,
Laura Morett
********************************************************
Laura M. Morett
Hilibrand Postdoctoral Fellow
Yale Child Study Center
230 S. Frontage Rd.
New Haven, CT 06520
As of August 16, 2017:
Assistant Professor of Educational Psychology
Educational Neuroscience Initiative
University of Alabama
Box 870231
Tuscaloosa, AL 35487-0231
Email: laura.morett at yale.edu<mailto:laura.morett at yale.edu>
Phone: (203) 737-4586<tel:(203)%20737-4586>
Web: http://lauramorett.strikingly.com/<https://urldefense.proofpoint.com/v2/url?u=http-3A__lauramorett.strikingly.com_&d=CwMF-g&c=-dg2m7zWuuDZ0MUcV7Sdqw&r=7RydtjFxlOLitiTKeuyufwjZVnuS2cr0LD3ZBHQd6QA&m=hcKHc9qk081CzOBRcCJRuXs-41-8mLMuX9gmiw_QG_g&s=UQlF7t1IaNyCaJW5l4lvUXFZvEYnMtD2_GIYvnLLIaE&e=>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20170406/6aed7263/attachment.html>
More information about the eeglablist
mailing list