[Eeglablist] Using the 'command' field of eeg_plot to reject trials
Makoto Miyakoshi
mmiyakoshi at ucsd.edu
Mon Jun 30 10:00:28 PDT 2014
Thanks MIkolaj. Actually I did not know it. It seems it has been
automatically taken care of in my case probably because I have launched
EEGLAB before using any of eeglab functions...
Makoto
On Sat, Jun 28, 2014 at 12:15 AM, Mikołaj Magnuski <
imponderabilion at gmail.com> wrote:
> Dear Matthew and Makoto,
>
> synchronizing with base workspace eeglab GUI usually requires a bit more
> (unless you want to change your function into a script).
> The easiest way is to declare relevant eeglab variables as globals at the
> beginning of the function (EEG, ALLEEG, etc. - whatever eeglab variables
> you are using and want to sync with workspace gui). For example:
> global EEG
>
> Unfortunately, using globals is usually frowned upon by programmers (for
> good reasons) but I don't think you should worry too much when using
> globals in small applications.
>
> Another way however would be to assign (see assignin docummentation)
> relevant eeglab variables in the base workspace and evaluate (see evalin)
> eeglab GUI commands in the base workspace too.
>
> Try globals first. EEGlab declares most (if not all) of the all-caps base
> workspace variables as globals and synchronizes the gui functions (at least
> some of them) with the workspace this way - so you should be fine with
> global variables (from my experience - using globals is the easiest and
> most efficient way of creating and synchronizing GUI data in matlab without
> blocking the command window with uiwait( ) etc. ).
> 28 cze 2014 05:35 "Makoto Miyakoshi" <mmiyakoshi at ucsd.edu> napisał(a):
>
> Dear Matthew,
>>
>> Looks like you want to automate the epoch rejection process.
>>
>> > My problem may be that I can't seem to find how to load the eeglab
>> workspace variables, other than through the gui.
>>
>> I recommend you replace all eegData in your code to EEG for the sake of
>> simplicity. As long as they are 'EEG' by typing 'eeglab redraw' you can
>> interact with it through EEGLAB main GUI.
>>
>> To load data, use EEG = pop_loadset()... of course you can do eegData =
>> pop_loadset()... but again using 'EEG' allows you to interact it via GUI.
>>
>> Makoto
>>
>>
>> On Tue, Jun 24, 2014 at 9:44 PM, Matthew Moore <matthew.moore at otago.ac.nz
>> > wrote:
>>
>>> Hi,
>>>
>>> I am having a bit of trouble getting eegplot to allow inspection and
>>> editing of candidates for rejection.
>>>
>>> I have looked at this thread:
>>> http://sccn.ucsd.edu/pipermail/eeglablist/2011/004085.html
>>>
>>> I tried to implement the command listed there, but am having trouble. My
>>> problem may be that I can't seem to find how to load the eeglab workspace
>>> variables, other than through the gui.
>>>
>>> I would really appreciate if someone could have a look at the code and
>>> give me some pointers.
>>>
>>> Matt
>>>
>>> function cleanedEEGData = detectArtefacts(eegData,locFile)
>>> %DETECTARTEFACTS Detects artefactual data using EEGLAB's functions, then
>>> % displays the data in a plot for the user to check.
>>> % Returns the eegData with artefactual trials removed.
>>> % locFile is the file containing electrode locations.
>>>
>>> epochLength=eegData.xmax;
>>> epochTimeFrames=eegData.pnts;
>>> sampleRate=eegData.srate;
>>> events=eegData.event;
>>> nElec=eegData.nbchan;
>>>
>>> %Absolute limit of electrode values in uV
>>> lowerLimit=-150;
>>> upperLimit=150;
>>>
>>> %Maximum slope over an epoch in uV/epoch
>>> maxSlope=60;
>>> rVal=0.3;
>>>
>>> %Reject unlikely epochs, by number of SDs
>>> sdJPSingleChan=4;
>>> sdJPAllChans=4;
>>>
>>> %Reject abnormal distributions, by number of SDs
>>> sdKurtSingleChan=4;
>>> sdKurtAllChans=4;
>>>
>>> %Reject abnormal spectra
>>> thresholds=[-50 50;-100 25];
>>> frequencies=[0 2;20 40];
>>>
>>> %Do the error detecting.
>>>
>>> eegData=pop_eegthresh(eegData,1,1:nElec,lowerLimit,upperLimit,0,epochLength,1,0,0);
>>>
>>> eegData=pop_rejtrend(eegData,1,1:nElec,epochTimeFrames,maxSlope,rVal,1,0,0);
>>>
>>> eegData=pop_jointprob(eegData,1,1:nElec,sdJPSingleChan,sdJPAllChans,1,0);
>>>
>>> eegData=pop_rejkurt(eegData,1,1:nElec,sdKurtSingleChan,sdKurtAllChans,1,0);
>>> % eegData=pop_rejspec( eegData,
>>> 1,'elecrange',1:30,'threshold',thresholds,'freqlimits',frequencies,'eegplotcom','','eegplotplotallrej',1,'eegplotreject',0,'specdata',eegData.specdata);
>>>
>>> %Get the format for marking trials in an eegplot
>>>
>>> plotRejThr=trial2eegplot(eegData.reject.rejthresh,eegData.reject.rejthreshE,epochTimeFrames,eegData.reject.rejthreshcol);
>>>
>>> plotRejTre=trial2eegplot(eegData.reject.rejconst,eegData.reject.rejconstE,epochTimeFrames,eegData.reject.rejconstcol);
>>> plotRejJp
>>> =trial2eegplot(eegData.reject.rejjp,eegData.reject.rejjpE,epochTimeFrames,eegData.reject.rejjpcol);
>>>
>>> plotRejKur=trial2eegplot(eegData.reject.rejkurt,eegData.reject.rejkurtE,epochTimeFrames,eegData.reject.rejkurtcol);
>>> %
>>> rejSpe=trial2eegplot(eegData.reject.rejfreq,eegData.reject.rejfreqE,epochTimeFrames,eegData.reject.rejfreqcol);
>>>
>>> %Put the reject candidates in one array.
>>> rejE=[plotRejThr;plotRejTre;plotRejJp;plotRejKur];%;rejSpe];
>>>
>>> %command string for reject marked trials... all marked epochs...
>>> %from http://sccn.ucsd.edu/pipermail/eeglablist/2011/004085.html
>>> cmd = [ ...
>>> '[tmprej tmprejE] = eegplot2trial( TMPREJ,EEG.pnts,EEG.trials);' ...
>>> '[EEGTMP LASTCOM] = pop_rejepoch(EEG, tmprej, 1);' ...
>>> 'if ~isempty(LASTCOM),'...
>>> ' [ALLEEG EEG CURRENTSET tmpcom] = pop_newset(ALLEEG, EEGTMP,
>>> CURRENTSET);' ...
>>> ' if ~isempty(tmpcom),' ...
>>> ' EEG = eegh(LASTCOM, EEG);' ...
>>> ' eegh(tmpcom);' ...
>>> ' eeglab(''redraw'');' ...
>>> ' end;' ...
>>> 'end;' ...
>>> 'clear EEGTMP tmpcom;' ...
>>> ] ;
>>>
>>> %Draw the data.
>>> eegplot(eegData.data,...
>>> 'eloc_file',locFile,...
>>> 'srate',sampleRate,...
>>> 'events',events,...
>>> 'winrej',rejE,...
>>> 'command',cmd,...
>>> 'butlabel','Reject');
>>>
>>>
>>> end
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>>
>>
>> --
>> Makoto Miyakoshi
>> Swartz Center for Computational Neuroscience
>> Institute for Neural Computation, University of California San Diego
>>
>> _______________________________________________
>> 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
>>
>
--
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20140630/f285e104/attachment.html>
More information about the eeglablist
mailing list