User Tools

Site Tools


eeglabsessh2b

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
eeglabsessh2b [2014/01/28 19:51]
bastienboutonnet created
eeglabsessh2b [2014/10/08 03:14] (current)
Line 1: Line 1:
-<color SkyBlue+====== Session Two: Post-Processing & Analysis (GUI) ====== 
-Be patient ​:) This page will go live on Wed5th at 10am.\\+===== Preparation of Day Crew Script for analysis in ERPLAB ​ ===== 
 + 
 +As we have seen once we ran the Night Crew we get a set which contains ICA weights. At this point human supervision is unavoidable as we need to explore ICs and subtract the ones that are responsible for artefacts. 
 + 
 +At the end of each set we will have saved a set which will not only contain ICA weights but which will have been corrected by subtracting ICs responsible for artefacts. 
 + 
 +==== 1. Loading ICAed set ==== 
 +We will not use ''​pop_loadcnt()''​ this time because the final set that the Night Crew created is in the EEGLAB format. To load a ''​*.set''​ file we use ''​pop_loadset()''​ 
 + 
 +<code matlab
 +EEG = pop_loadset('​filename',​ 503_ICAC.set);​ 
 +</​code>​ 
 + 
 +Easy! 
 + 
 +==== 2. Make ERPLab happyepoched to continuous dataset ==== 
 +As we saw earlier ERPLab wants a continuous set. Luckily its developers provide a function for that: 
 + 
 +<code matlab>​ 
 +EEG = pop_epoch2continuous(EEG)
 +</​code>​ 
 + 
 +Yes! Just as easy as this! 
 + 
 +==== 3. Create Eventlist ==== 
 +The following line will create a simple event list and will convert the "​mess"​ created by the previous function by converting the strings ''​boundary''​ to a numerical value ''​-99''​. 
 + 
 +<code matlab>​ 
 +EEG  = pop_creabasiceventlist( EEG , '​AlphanumericCleaning',​ 'on''​BoundaryNumeric',​ { -99 }, '​BoundaryString',​ { '​boundary'​ } ); 
 +</​code>​ 
 + 
 +==== 4. Assign bins ==== 
 +Don't forget to update the path of the BDF file. 
 +<code matlab>​ 
 +EEG  = pop_binlister( EEG , '​BDF',​ '/​Path/​Of/​BDFFile',​ '​ExportEL',​ 503_bin.txt',​ '​IndexEL', ​ 1, '​SendEL2',​ '​All',​ '​UpdateEEG',​ '​on',​ '​Voutput',​ '​EEG'​ ); 
 +</​code>​ 
 + 
 +==== 5. Extract bin-based epochs (& baseline correct) ==== 
 +Does what it says on the tin. 
 +Specify limits of epoch window. 
 +Third argument sets the baseline correction (here ''​pre''​ for pre-stimulus interval) 
 +<code matlab>​ 
 +EEG = pop_epochbin(EEG , [-100  1000], '​pre'​);​ 
 +</​code>​ 
 + 
 +==== 6. Detect & Mark Artefacts for rejection ==== 
 +  * Specify channel array, in that example we excluded VEOG & HEOG 
 +  * Flag 1, dictates how the artefacted epoch is labeled. Here it will have a flag value of 1 but could be set tp another number (say because we want to perform other types of artefacts detections) 
 +  * Threshold, min max array. 
 +  * Time window, min max array 
 + 
 +<code matlab>​ 
 +EEG  = pop_artextval( EEG , '​Channel',​ [1:65 67], '​Flag', ​ 1, '​Threshold',​ [-75 75], '​Twindow',​... 
 + [-100 1000] ); 
 +</​code>​ 
 + 
 +==== 7. Averaging ==== 
 +  * Criterion:  
 +    * 1=Exclude trials labelled as artefacts 
 +    * 0=Include all trials 
 +    * 2=Only trials with artefacts 
 +    * SEM here will be calculated. 
 + 
 +<code matlab>​ 
 +ERP = pop_averager(EEG , '​Criterion',​ 1, '​SEM',​ '​on'​);​ 
 +</​code>​ 
 + 
 +<WRAP center round important 60%> 
 +**NOTE**: The result from the averaging is now assigned to a **new** object called ERP! 
 +</​WRAP>​ 
 + 
 +==== 7. Saving ERP set ==== 
 +At this point we will want to save the result of our batch. While for all other previous steps we use the ''​pop_saveset()''​ command, because we are now dealing with and ERP set, we need another command to save this ERPset: 
 + 
 +<code matlab>​ 
 +ERP = pop_savemyerp(ERP,​ '​erpname',​ 503_ERP , '​filename',​ 503_ERPs.erp'​);​ 
 +</​code>​ 
 + 
 +==== 8. Save a summary of artefact detection === 
 +It may come in handy to save a summary of the Artefact Detection for each subject so you can review it once you come back to your computer. Here's how to do that: 
 + 
 +<code matlab>​ 
 +pop_summary_AR_eeg_detection(EEG,​ 503_AR_Summary.txt'​);​ 
 +</​code>​ 
 + 
 + 
 +<WRAP center round todo 80%> 
 +**HACK #6** 
 + 
 +{{:​hacklogo2.png?​nolink&​40 |}}\\
 \\ \\
-Until thencheck the [[overview|overview]] page where you will find all the info for the hackathon.\\ +Just as we did for the Night Crewyour task now is to prepare a DayCrew that will take the ICA corrected set and bring it to an ERP set analysable by ERPLab. 
-You can also download ​the necessary files [[download|here]].+ 
 +For extra luxury we may want to have our script perform the following:​ 
 +  * that it **saves** the a set after just before averaging 
 +  * make sure your loop **doesn'​t get stuck** because of a buggy dataset. 
 +  * save final dataset. (NOTE. when saving datasets ​you might want to think of a way to name the dataset with the subject information). 
 + 
 +For REAL luxury 
 +  * make matlab create the destination directory. Maybe you want to keep your ERPsets in a different folder from the other EEGLAB-type sets? If you feel brave think about this too. 
 +</​WRAP>​ 
 + 
 + 
 + 
 + 
 + 
 + 
 +<file matlab ​ DayCrew_ERPLAB.m>​ 
 +% This script runs the second set of pre-processing up to averaging.  
 +% it is designed to prepare the data for analysis in ERPLAB! 
 +% Datasets created as the output of this scrip are only going to be 
 +% compatible for analysis in ERPLAB 
 +
 +%%%%%%%%%%% IMPORTANT NOTE: Until further notice this routine should be 
 +% ran on an installation of ERPLAB within a version of EEGLAB no  
 +% higher than 12 as the epoching routine creates a bug in EEGLAB 13. 
 +% developers of ERPLAB are working on a fix and should release it in  
 +% further versions. 
 +
 +% Author: Bastien Boutonnet, bastien.b@icloud.com 
 +  
 +  
 +subject={'​505'​};​ 
 +  
 +pathname_read='/​Users/​Shared/​HackathonFiles/​TutorialData/​EEGLABHack2/​2PostICACorr/';​ 
 +pathname_writePostProc='/​Users/​Shared/​HackathonFiles/​TutorialData/​EEGLABHack2/​2PostICACorr/​PostProc/';​ 
 +pathname_writeERPSets='/​Users/​Shared/​HackathonFiles/​TutorialData/​EEGLABHack2/​2PostICACorr/​ERPSets/';​ 
 +  
 +for i=1:​length(subject) 
 +   ​fprintf('​Processing Subject #%g : %s...\n', i, subject{i});​ 
 +  
 +%creates ​the destination folders assuming you have not created it manually before 
 +%if test makes sure the folder only gets created once. 
 +    if isequal(exist(pathname_writePostProc,​ '​dir'​),​7) %7 = directory 
 +        display('​%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Destination folder exists. All Good to go!'​);​ 
 +    else 
 +        ​[mdirstatus, mdirmessage]=mkdir(pathname_writePostProc);​ 
 +        display('​%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Destination folder does not exist. Chillax! Will be created'​);​ 
 +    end 
 +  
 +     if isequal(exist(pathname_writeERPSets,​ '​dir'​),​7) %7 = directory 
 +        display('​%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Destination folder exists. All Good to go!'​);​ 
 +    else 
 +        ​[mdirstatus, mdirmessage]=mkdir(pathname_writeERPSets);​ 
 +        display('​%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Destination folder does not exist. Chillax! Will be created'​);​ 
 +    end 
 +  
 +    %try 
 +  
 +    %Loads ICA corrected set 
 +    EEG = pop_loadset('​filename',​ [pathname_read subject{i} '​RRCOREPFICAC.set'​]); 
 +  
 +    %epoched to continuous set 
 +    EEG = pop_epoch2continuous(EEG);​ 
 +  
 +    %create basic eventlist 
 +    EEG  = pop_creabasiceventlist( EEG , '​AlphanumericCleaning',​ '​on',​ '​Newboundary',​ { -99 }, '​Stringboundary',​ { '​boundary'​ }, '​Warning',​ '​on'​ ); 
 +  
 +    %assign bins 
 +    EEG  = pop_binlister( EEG , '​BDF',​ '/​Users/​Shared/​HackathonFiles/​TutorialData/​bindesc.txt', '​ExportEL',​ [pathname_writePostProc subject{i} '​_bins.txt'​],​ '​IndexEL', ​ '​no',​ '​SendEL2',​ '​Workspace&​EEG',​ '​UpdateEEG',​ '​on'​);​ 
 + 
 +    %extract bin-based epochs & baseline correct 
 +    EEG = pop_epochbin(EEG , [-100  1000], '​pre'​);​ 
 +  
 +    %Artefact detection, save summary, save set 
 +    EEG  = pop_artextval(EEG,'​Channel',​[1:​65 67],'​Flag',​1,'​Threshold',​[-75 75],'​Twindow',​[-100 1000]); 
 +    pop_summary_AR_eeg_detection(EEG,​ [pathname_writePostProc subject{i} '​_AR_Summary.txt'​]);​ 
 +    EEG = pop_saveset(EEG,'​filename',​[pathname_writePostProc subject{i} '​_RREPFICACAR.set'​]);​ 
 +    EEG = eeg_checkset(EEG);​ 
 +  
 +    %Average 
 +    ERP = pop_averager(EEG ,'​Criterion',​1,'​SEM','​on'​);​ 
 +    ERP = pop_savemyerp(ERP,'​erpname',​[subject{i} '​_ERPs'​],'​filename',​[pathname_writeERPSets subject{i} '​_ERPs.erp'​]);​ 
 +  
 +    %Once you have fully debugged your script and that you know it goes 
 +    %through without problems (Due to scripting) uncomment the following 
 +    %lines. It allows you to jump participants if the sets are buggy but 
 +    %won't give you error messages. 
 +  
 +    %catch 
 +    %   ​disp(['​%%%%%%%%%%%%%%%%%%%%%%%%%Something went wrong with participant ' subject{i} ' :'( Skipping to next participant %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'​]);​ 
 +    %end 
 +  
 +end 
 +</​file>​
  
-</​color>​+<color indianred>​DISCLAIMER:​ The tutorials provided on this wiki are not intended to compete with the tutorials written by the EEGLAB'​s (and other toolboxes) developers ([[http://​sccn.ucsd.edu/​wiki/​Main_Page|EEGLAB website]]). It intends to be a condensed version for educational/​reference purposes for members of the lab/​department to which this workshop was given.</​color>​
eeglabsessh2b.1390938665.txt.gz · Last modified: 2014/10/08 03:14 (external edit)