[Eeglablist] Passing vector elements to pop_select() 'no channel' argument

Morett, Laura laura.morett at yale.edu
Wed Apr 5 06:19:01 PDT 2017


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
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/20170405/882d542c/attachment.html>


More information about the eeglablist mailing list