Browse Source

adapt and run segmentation

kosciessa 2 years ago
parent
commit
8cdd0e8d83
52 changed files with 348 additions and 531 deletions
  1. 0 224
      code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111.m
  2. 0 22
      code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_START.sh
  3. 0 251
      code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_noTardis.m
  4. 0 21
      code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_prepare.sh
  5. 135 0
      code/a5_segmentation_raw_data/a5_segmentation_raw_data.m
  6. 25 0
      code/a5_segmentation_raw_data/a5_segmentation_raw_data_START.sh
  7. 13 0
      code/a5_segmentation_raw_data/a5_segmentation_raw_data_prepare.m
  8. 11 0
      code/a5_segmentation_raw_data/a5_segmentation_raw_data_prepare.sh
  9. 1 1
      code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_run.sh
  10. 7 5
      code/a5_segmentation_raw_data/mccExcludedFiles.log
  11. 115 0
      code/a5_segmentation_raw_data/readme.txt
  12. 1 0
      code/a5_segmentation_raw_data/requiredMCRProducts.txt
  13. 1 0
      data/outputs/eeg/sub-001_task-xxxx_eeg_seg.mat
  14. 1 0
      data/outputs/eeg/sub-002_task-xxxx_eeg_seg.mat
  15. 1 0
      data/outputs/eeg/sub-003_task-xxxx_eeg_seg.mat
  16. 1 0
      data/outputs/eeg/sub-004_task-xxxx_eeg_seg.mat
  17. 1 0
      data/outputs/eeg/sub-005_task-xxxx_eeg_seg.mat
  18. 1 0
      data/outputs/eeg/sub-006_task-xxxx_eeg_seg.mat
  19. 1 0
      data/outputs/eeg/sub-007_task-xxxx_eeg_seg.mat
  20. 1 0
      data/outputs/eeg/sub-008_task-xxxx_eeg_seg.mat
  21. 1 0
      data/outputs/eeg/sub-009_task-xxxx_eeg_seg.mat
  22. 1 0
      data/outputs/eeg/sub-010_task-xxxx_eeg_seg.mat
  23. 1 0
      data/outputs/eeg/sub-011_task-xxxx_eeg_seg.mat
  24. 1 0
      data/outputs/eeg/sub-012_task-xxxx_eeg_seg.mat
  25. 1 0
      data/outputs/eeg/sub-013_task-xxxx_eeg_seg.mat
  26. 1 0
      data/outputs/eeg/sub-014_task-xxxx_eeg_seg.mat
  27. 1 0
      data/outputs/eeg/sub-015_task-xxxx_eeg_seg.mat
  28. 1 0
      data/outputs/eeg/sub-016_task-xxxx_eeg_seg.mat
  29. 1 0
      data/outputs/eeg/sub-017_task-xxxx_eeg_seg.mat
  30. 1 0
      data/outputs/eeg/sub-018_task-xxxx_eeg_seg.mat
  31. 1 0
      data/outputs/eeg/sub-019_task-xxxx_eeg_seg.mat
  32. 1 0
      data/outputs/eeg/sub-020_task-xxxx_eeg_seg.mat
  33. 1 0
      data/outputs/eeg/sub-021_task-xxxx_eeg_seg.mat
  34. 1 0
      data/outputs/eeg/sub-022_task-xxxx_eeg_seg.mat
  35. 1 0
      data/outputs/eeg/sub-023_task-xxxx_eeg_seg.mat
  36. 1 0
      data/outputs/eeg/sub-024_task-xxxx_eeg_seg.mat
  37. 1 0
      data/outputs/eeg/sub-025_task-xxxx_eeg_seg.mat
  38. 1 0
      data/outputs/eeg/sub-026_task-xxxx_eeg_seg.mat
  39. 1 0
      data/outputs/eeg/sub-027_task-xxxx_eeg_seg.mat
  40. 1 0
      data/outputs/eeg/sub-028_task-xxxx_eeg_seg.mat
  41. 1 0
      data/outputs/eeg/sub-029_task-xxxx_eeg_seg.mat
  42. 1 0
      data/outputs/eeg/sub-030_task-xxxx_eeg_seg.mat
  43. 1 0
      data/outputs/eeg/sub-031_task-xxxx_eeg_seg.mat
  44. 1 0
      data/outputs/eeg/sub-032_task-xxxx_eeg_seg.mat
  45. 1 0
      data/outputs/eeg/sub-033_task-xxxx_eeg_seg.mat
  46. 1 1
      data/outputs/history/sub-001_task-xxxx_config.mat
  47. 1 1
      data/outputs/history/sub-004_task-xxxx_config.mat
  48. 1 1
      data/outputs/history/sub-008_task-xxxx_config.mat
  49. 1 1
      data/outputs/history/sub-012_task-xxxx_config.mat
  50. 1 1
      data/outputs/history/sub-013_task-xxxx_config.mat
  51. 1 1
      data/outputs/history/sub-023_task-xxxx_config.mat
  52. 1 1
      data/outputs/history/sub-032_task-xxxx_config.mat

+ 0 - 224
code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111.m

@@ -1,224 +0,0 @@
-function G_STSW_segmentation_raw_data_180111(id)
-
-%% G_STSW_segmentation_raw_data_180111
-
-% 170921 | JQK adapted from MD script
-% 180118 | adapted for STSW study YA, adapted for tardis
-
-%% initialize
-
-% restoredefaultpath;
-% clear all; close all; pack; clc;
-
-%% pathdef
-
-if ismac
-    pn.study        = '/Volumes/LNDG/Projects/StateSwitch/';
-    pn.dynamic_In   = [pn.eeg_root, 'B_data/B_EEG_ET_ByRun/'];
-    pn.triggerTiming= [pn.eeg_root, 'C_figures/D_TriggerTiming/'];
-    pn.EEG          = [pn.eeg_root, 'B_data/C_EEG_FT/']; mkdir(pn.EEG);
-    pn.History      = [pn.eeg_root, 'B_data/D_History/']; mkdir(pn.History);
-    % add ConMemEEG tools
-    pn.MWBtools     = [pn.eeg_root, 'T_tools/fnct_MWB/'];           addpath(genpath(pn.MWBtools));
-    pn.THGtools     = [pn.eeg_root, 'T_tools/fnct_THG/'];           addpath(genpath(pn.THGtools));
-    pn.commontools  = [pn.eeg_root, 'T_tools/fnct_common/'];        addpath(genpath(pn.commontools));
-    pn.fnct_JQK     = [pn.eeg_root, 'T_tools/fnct_JQK/'];           addpath(genpath(pn.fnct_JQK));
-    pn.FT           = [pn.eeg_root, 'T_tools/fieldtrip-20170904/']; addpath(pn.FT); ft_defaults;
-    pn.helper       = [pn.eeg_root, 'A_scripts/helper/'];           addpath(pn.helper);
-else
-    pn.root         = '/home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/';
-    pn.EEG          = [pn.root, 'B_data/C_EEG_FT/'];
-    pn.History      = [pn.root, 'B_data/D_History/'];
-    pn.triggerTiming= [pn.root, 'C_figures/D_TriggerTiming/'];
-end
-
-%% define Condition & IDs for preprocessing
-
-condEEG = 'dynamic';
-
-%% define IDs for segmentation
-
-% N = 47;
-IDs = {'1117';'1118';'1120';'1124';'1126';'1131';'1132';'1135';'1136';'1138';'1144';'1151';'1158';'1160';'1163';'1164';'1167';'1169';'1172';'1173';'1178';'1182';'1215';'1216';'1219';'1221';'1223';'1227';'1228';'1233';'1234';'1237';'1239';'1240';'1243';'1245';'1247';'1250';'1252';'1257';'1261';'1265';'1266';'1268';'1270';'1276';'1281'};
-
-id = str2num(id);
-
-%  loop IDs
-clc;
-%for id = 1:length(IDs)
-    display(['processing ID ' num2str(IDs{id})]);
-    for iRun = 1:4
-        %%  load raw data
-
-        if ~exist([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eyeEEG_Rlm_Fhl_rdSeg.mat'],'file')
-
-        % load config
-        load([pn.History, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_config.mat'],'config');
-
-        % copy ICA labeling info
-        configWithICA = load([pn.History, IDs{id}, '_', condEEG, '_config.mat'],'config');
-
-        config.ica1 = configWithICA.config.ica1;
-
-        %% ---- generate segmentation ---- %%
-
-        % load marker file
-        mrk = config.mrk;
-
-        for i = 1:size(mrk,2)
-            mrk_val{i,1} = mrk(1,i).value;
-        end
-
-        % generate trial structure
-        indOnset = find(strcmp(mrk_val(:,:),'S 17')); % (fix cue onset trigger = 'S 17')
-        indOnset = sortrows(indOnset,1);
-        indOffset = find(strcmp(mrk_val(:,:),'S 64')); % (ITI trigger = 'S 64')
-        indOffset = sortrows(indOffset,1);
-
-        h = figure;
-        plot(diff([mrk(indOnset).sample]))
-        hold on; plot(diff([mrk(indOffset).sample]))
-        pn.plotFolder = pn.triggerTiming;
-        figureName = ['A_triggerTiming_',IDs{id}, '_r',num2str(iRun)]; 
-        saveas(h, [pn.plotFolder, figureName], 'fig');
-        saveas(h, [pn.plotFolder, figureName], 'epsc');
-        saveas(h, [pn.plotFolder, figureName], 'png');
-        close(h);
-        
-        % Stim trials
-        trl = zeros(length(indOnset),3);
-        TOI1 = 1500; % segmentation before trigger
-        TOI2 = 1500; % segmentation following trigger
-
-        for j = 1:size(trl,1)
-            trl(j,1) = mrk(1,indOnset(j)).sample - TOI1; % segmentation from 1500 ms before stim
-            trl(j,2) = mrk(1,indOffset(j)).sample + TOI2; % to 1500 ms after trigger
-            trl(j,3) = -TOI1;% offset
-        end; clear j
-
-        % add trial structure to config
-        config.trl = trl;
-
-        % save config
-        save([pn.History, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_config.mat'],'config')
-
-        %% ----  load, filter, and re-reference raw data ---- %%
-
-        % define reading & preprocessing parameters
-        % read in all data first
-
-        cfg             = [];
-        %cfg.datafile    = [config.data_file];
-        cfg.datafile    = [pn.root, '/B_data/B_EEG_ET_ByRun/',IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eyeEEG.set'];
-        cfg.trl         = config.trl;
-
-        cfg.channel     = {'all'};
-        cfg.implicitref = 'REF'; % recover implicit reference
-
-        data            = ft_preprocessing(cfg);
-
-         %% SWITCH CHANNELS ACCORDING TO ARRANGEMENT!
-
-        if max(strcmp(IDs{id}, {'1126'}))==1
-            data = SS_switchChannels_GreenYellow(data);       % green and yellow boxes exchanged
-            data = SS_switchChannels_Study_noA1(data);        % TP9 and TP10 exchanged manually
-        elseif max(strcmp(IDs{id}, {'1216'}))==1
-            data = SS_switchChannels_GreenYellow(data);       % green and yellow boxes exchanged
-            data = SS_switchChannels_Study(data);             % TP9(A1) and TP10(FCz) wrongly ordered in workspace
-        elseif max(strcmp(IDs{id}, {'1118'; '1215'; '1124'}))==1
-            data = SS_switchChannels_Study_noA1(data);        % TP9 and TP10 exchanged manually
-        else 
-            data = SS_switchChannels_Study(data);             % TP9(A1) and TP10(FCz) wrongly ordered in workspace
-        end
-        data = SS_changeChannels(data);
-
-        %%
-        % select eye data
-        cfg         =  [];
-        cfg.channel =  {'TIME', 'L_GAZE_X', 'L_GAZE_Y', ...
-            'L_AREA', 'L_VEL_X', 'L_VEL_Y', 'RES_X', 'RES_Y', 'INPUT'};
-
-        data_eye        = ft_preprocessing(cfg, data);
-        %%
-        % select EEG (non-eye/ECG/trigger) data
-        cfg                  =  [];
-        cfg.channel          = {'all', ...
-            '-TIME', '-L_GAZE_X', '-L_GAZE_Y', ...
-            '-L_AREA', '-L_VEL_X', '-L_VEL_Y', '-RES_X', '-RES_Y', '-INPUT', '-ECG'};
-
-        data_EEG             = ft_preprocessing(cfg, data);
-        %%
-        % filter & reref EEG data
-        cfg             = [];
-
-        cfg.continuous  = 'yes';
-        cfg.demean      = 'yes';
-
-        cfg.reref       = 'yes';
-        cfg.refchannel  = {'A1','A2'};
-        cfg.implicitref = 'A2';
-
-        cfg.hpfilter    = 'yes';
-        cfg.hpfreq      = .2;
-        cfg.hpfiltord   = 4;
-        cfg.hpfilttype  = 'but';
-
-        cfg.lpfilter    = 'yes';
-        cfg.lpfreq      = 125;
-        cfg.lpfiltord   = 4;
-        cfg.lpfilttype  = 'but';
-
-        % get data
-        data_EEG = ft_preprocessing(cfg, data_EEG);
-        flt = cfg;
-
-        % clear cfg structure
-        clear cfg
-
-        %% ----  resampling [500 Hz] ---- %%
-
-        % define settings for resampling
-        cfg.resamplefs = 500;                           % raw_eeg (ICA loop) at srate of 250Hz! now resample raw files (original files) to 500 Hz!
-        cfg.detrend    = 'no';
-        cfg.feedback   = 'no';
-        cfg.trials     = 'all';
-
-        % resample ALL data
-        data        = ft_resampledata(cfg,data);
-        if str2num(IDs{id})==1223 & (iRun == 2 | iRun == 3 | iRun == 4)
-            disp('Eye data skipped');
-        elseif str2num(IDs{id})==1228 & (iRun == 4)
-            disp('Eye data skipped');
-        else
-            data_eye    = ft_resampledata(cfg,data_eye);
-        end
-        data_EEG    = ft_resampledata(cfg,data_EEG);
-
-        resample = cfg;
-        % clear variables
-        clear cfg
-
-        % update config
-        config.seg.flt = flt;
-        config.seg.resample = resample;
-
-        % save config, data
-        save([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eyeEEG_Rlm_Fhl_rdSeg'],'data')
-        if str2num(IDs{id})==1223 & (iRun == 2 | iRun == 3 | iRun == 4)
-            disp('Eye data skipped');
-        elseif str2num(IDs{id})==1228 & (iRun == 4)
-            disp('Eye data skipped');
-        else
-            save([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eye_Rlm_Fhl_rdSeg'],'data_eye')
-        end
-        save([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_EEG_Rlm_Fhl_rdSeg'],'data_EEG')
-        save([pn.History, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_config'],'config')
-
-        % clear variables
-        clear config data data_eye data_EEG indOnset indOffset mrk mrk_val trl TOI1 TOI2
-
-        else
-
-        end % exist
-    end; clear iRun
-%end; clear id

+ 0 - 22
code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_START.sh

@@ -1,22 +0,0 @@
-#!/bin/bash
-
-# call the BOSC analysis by session and participant
-cd /home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/A_scripts/G_STSW_segmentation/
-
-IDs=(1117 1118 1120 1124 1125 1126 1131 1132 1135 1136 1151 1160 1164 1167 1169 1172 1173 1178 1182 1214 1215 1216 1219 1223 1227 1228 1233 1234 1237 1239 1240 1243 1245 1247 1250 1252 1257 1261 1265 1266 1268 1270 1276 1281 2142 2253 2254 2255)
-
-mkdir /home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/Y_logs/G_STSW_segment
-
-for i in $(seq 1 ${#IDs[@]}); do
-	echo "#PBS -N STSW_eeg_segment_${i}" 									> job
-	echo "#PBS -l walltime=03:00:00" 										>> job
-	echo "#PBS -l mem=4gb" 													>> job
-	echo "#PBS -j oe" 														>> job
-	echo "#PBS -o /home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/Y_logs/G_STSW_segment" >> job
-	echo "#PBS -m n" 														>> job
-	echo "#PBS -d ." 														>> job
-	echo "./G_STSW_segmentation_raw_data_180111_run.sh /opt/matlab/R2016b $i " 	>> job
-	qsub job
-	rm job
-done
-done

+ 0 - 251
code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_noTardis.m

@@ -1,251 +0,0 @@
-function G_STSW_segmentation_raw_data_180111_noTardis()
-
-%% G_STSW_segmentation_raw_data_180111
-
-% 170921 | JQK adapted from MD script
-% 180118 | adapted for STSW study YA, adapted for tardis
-
-% config.data_file still refers to the non-tardis location
-
-% 180124 | skip data without eye info from processing
-
-%% initialize
-
-% restoredefaultpath;
-% clear all; close all; pack; clc;
-
-%% pathdef
-
-if ismac
-    pn.study        = '/Volumes/LNDG/Projects/StateSwitch/';
-    pn.eeg_root     = [pn.study, 'dynamic/data/eeg/task/A_preproc/SA_preproc_study/'];
-    pn.dynamic_In   = [pn.eeg_root, 'B_data/B_EEG_ET_ByRun/'];
-    pn.triggerTiming= [pn.eeg_root, 'C_figures/D_TriggerTiming/'];
-    pn.EEG          = [pn.eeg_root, 'B_data/C_EEG_FT/']; mkdir(pn.EEG);
-    pn.History      = [pn.eeg_root, 'B_data/D_History/']; mkdir(pn.History);
-    % add ConMemEEG tools
-    pn.MWBtools     = [pn.eeg_root, 'T_tools/fnct_MWB/'];           addpath(genpath(pn.MWBtools));
-    pn.THGtools     = [pn.eeg_root, 'T_tools/fnct_THG/'];           addpath(genpath(pn.THGtools));
-    pn.commontools  = [pn.eeg_root, 'T_tools/fnct_common/'];        addpath(genpath(pn.commontools));
-    pn.fnct_JQK     = [pn.eeg_root, 'T_tools/fnct_JQK/'];           addpath(genpath(pn.fnct_JQK));
-    pn.FT           = [pn.eeg_root, 'T_tools/fieldtrip-20170904/']; addpath(pn.FT); ft_defaults;
-    pn.helper       = [pn.eeg_root, 'A_scripts/helper/'];           addpath(pn.helper);
-else
-    pn.root         = '/home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study/';
-    pn.EEG          = [pn.root, 'B_data/C_EEG_FT/'];
-    pn.History      = [pn.root, 'B_data/D_History/'];
-    pn.triggerTiming= [pn.root, 'C_figures/D_TriggerTiming/'];
-end
-
-%% define Condition & IDs for preprocessing
-
-condEEG = 'dynamic';
-
-%% define IDs for segmentation
-
-% N = 47 YAs + 53 OAs;
-IDs = {'1117';'1118';'1120';'1124';'1126';'1131';'1132';'1135';'1136';'1138';...
-    '1144';'1151';'1158';'1160';'1163';'1164';'1167';'1169';'1172';'1173';...
-    '1178';'1182';'1215';'1216';'1219';'1221';'1223';'1227';'1228';'1233';...
-    '1234';'1237';'1239';'1240';'1243';'1245';'1247';'1250';'1252';'1257';...
-    '1261';'1265';'1266';'1268';'1270';'1276';'1281';...
-    '2104';'2107';'2108';'2112';'2118';'2120';'2121';'2123';'2125';'2129';...
-    '2130';'2131';'2132';'2133';'2134';'2135';'2139';'2140';'2145';'2147';...
-    '2149';'2157';'2160';'2201';'2202';'2203';'2205';'2206';'2209';'2210';...
-    '2211';'2213';'2214';'2215';'2216';'2217';'2219';'2222';'2224';'2226';...
-    '2227';'2236';'2237';'2238';'2241';'2244';'2246';'2248';'2250';'2251';...
-    '2252';'2258';'2261'};
-
-%%  loop IDs
-
-clc;
-for id = 1:length(IDs)
-    display(['processing ID ' num2str(IDs{id})]);
-    for iRun = 1:4
-        %%  load raw data
-
-        if 1%~exist([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eyeEEG_Rlm_Fhl_rdSeg.mat'],'file')
-
-        % load config
-        load([pn.History, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_config.mat'],'config');
-
-        % copy ICA labeling info
-        configWithICA = load([pn.History, IDs{id}, '_', condEEG, '_config.mat'],'config');
-
-        config.ica1 = configWithICA.config.ica1;
-
-        %% ---- generate segmentation ---- %%
-
-        % load marker file
-        mrk = config.mrk;
-
-        for i = 1:size(mrk,2)
-            mrk_val{i,1} = mrk(1,i).value;
-        end
-
-        % for 2160, the onset marker was not recorded: extract at beginning
-        if strcmp(IDs{id}, '2160') && iRun ==1
-            mrk_val{2,1} = 'S 17';
-        end
-        
-        % for 2203, the onset marker was not recorded: extract at beginning
-        if strcmp(IDs{id}, '2203') && iRun ==1
-            mrk_val{2,1} = 'S 17';
-        end
-        
-        % generate trial structure
-        indOnset = find(strcmp(mrk_val(:,:),'S 17')); % (fix cue onset trigger = 'S 17')
-        indOnset = sortrows(indOnset,1);
-        indOffset = find(strcmp(mrk_val(:,:),'S 64')); % (ITI trigger = 'S 64')
-        indOffset = sortrows(indOffset,1);
-
-        h = figure;
-        plot(diff([mrk(indOnset).sample]))
-        hold on; plot(diff([mrk(indOffset).sample]))
-        pn.plotFolder = pn.triggerTiming;
-        figureName = ['A_triggerTiming_',IDs{id}, '_r',num2str(iRun)]; 
-        saveas(h, [pn.plotFolder, figureName], 'png');
-        close(h);
-                
-        % Stim trials
-        trl = zeros(length(indOnset),3);
-        TOI1 = 1500; % segmentation before trigger
-        TOI2 = 1500; % segmentation following trigger
-
-        for j = 1:size(trl,1)
-            trl(j,1) = mrk(1,indOnset(j)).sample - TOI1; % segmentation from 1500 ms before stim
-            trl(j,2) = mrk(1,indOffset(j)).sample + TOI2; % to 1500 ms after trigger
-            trl(j,3) = -TOI1;% offset
-        end; clear j
-        
-        % if an onset occurs before recording onset: set to extract at 1
-        if numel(find(trl(:,1)<0))>0
-            trl(find(trl(:,1)<0),3) = trl(find(trl(:,1)<0),3)-trl(find(trl(:,1)<0),1);
-            trl(find(trl(:,1)<0),1) = 1;
-        end
-
-        % add trial structure to config
-        config.trl = trl;
-
-        % save config
-        save([pn.History, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_config.mat'],'config')
-
-        %% ----  load, filter, and re-reference raw data ---- %%
-
-        % define reading & preprocessing parameters
-        % read in all data first
-
-        cfg             = [];
-        cfg.datafile    = [config.data_file];                
-        cfg.trl         = config.trl;
-
-        cfg.channel     = {'all'};
-        cfg.implicitref = 'REF'; % recover implicit reference
-
-        data            = ft_preprocessing(cfg);
-
-         %% SWITCH CHANNELS ACCORDING TO ARRANGEMENT!
-
-        if max(strcmp(IDs{id}, {'1126'; '2227'}))==1
-            data = SS_switchChannels_GreenYellow(data);       % green and yellow boxes exchanged
-            data = SS_switchChannels_Study_noA1(data);        % TP9 and TP10 exchanged manually
-        elseif max(strcmp(IDs{id}, {'1216'}))==1
-            data = SS_switchChannels_GreenYellow(data);       % green and yellow boxes exchanged
-            data = SS_switchChannels_Study(data);             % TP9(A1) and TP10(FCz) wrongly ordered in workspace
-        elseif max(strcmp(IDs{id}, {'1118'; '1215'; '1124'}))==1
-            data = SS_switchChannels_Study_noA1(data);        % TP9 and TP10 exchanged manually
-        else 
-            data = SS_switchChannels_Study(data);             % TP9(A1) and TP10(FCz) wrongly ordered in workspace
-        end
-        data = SS_changeChannels(data);
-
-        %%
-        % select eye data
-        cfg         =  [];
-        cfg.channel =  {'TIME', 'L_GAZE_X', 'L_GAZE_Y', ...
-            'L_AREA', 'L_VEL_X', 'L_VEL_Y', 'RES_X', 'RES_Y', 'INPUT'};
-
-        data_eye        = ft_preprocessing(cfg, data);
-        %%
-        % select EEG (non-eye/ECG/trigger) data
-        cfg                  =  [];
-        cfg.channel          = {'all', ...
-            '-TIME', '-L_GAZE_X', '-L_GAZE_Y', ...
-            '-L_AREA', '-L_VEL_X', '-L_VEL_Y', '-RES_X', '-RES_Y', '-INPUT', '-ECG'};
-
-        data_EEG             = ft_preprocessing(cfg, data);
-        %%
-        % filter & reref EEG data
-        cfg             = [];
-
-        cfg.continuous  = 'yes';
-        cfg.demean      = 'yes';
-
-        cfg.reref       = 'yes';
-        cfg.refchannel  = {'A1','A2'};
-        cfg.implicitref = 'A2';
-
-        cfg.hpfilter    = 'yes';
-        cfg.hpfreq      = .2;
-        cfg.hpfiltord   = 4;
-        cfg.hpfilttype  = 'but';
-
-        cfg.lpfilter    = 'yes';
-        cfg.lpfreq      = 125;
-        cfg.lpfiltord   = 4;
-        cfg.lpfilttype  = 'but';
-
-        % get data
-        data_EEG = ft_preprocessing(cfg, data_EEG);
-        flt = cfg;
-
-        % clear cfg structure
-        clear cfg
-
-        %% ----  resampling [500 Hz] ---- %%
-
-        % define settings for resampling
-        cfg.resamplefs = 500;                           % raw_eeg (ICA loop) at srate of 250Hz! now resample raw files (original files) to 500 Hz!
-        cfg.detrend    = 'no';
-        cfg.feedback   = 'no';
-        cfg.trials     = 'all';
-
-        % resample ALL data
-        data        = ft_resampledata(cfg,data);
-        if str2num(IDs{id})==1223 & (iRun == 2 | iRun == 3 | iRun == 4)
-            disp('Eye data skipped');
-        elseif str2num(IDs{id})==1228 & (iRun == 4)
-            disp('Eye data skipped');
-        else
-            data_eye = ft_resampledata(cfg,data_eye);
-        end
-        data_EEG = ft_resampledata(cfg,data_EEG);
-
-        resample = cfg;
-        % clear variables
-        clear cfg
-
-        % update config
-        config.seg.flt = flt;
-        config.seg.resample = resample;
-
-        % save config, data
-        save([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eyeEEG_Rlm_Fhl_rdSeg'],'data')
-        if str2num(IDs{id})==1223 & (iRun == 2 | iRun == 3 | iRun == 4)
-            disp('Eye data skipped');
-        elseif str2num(IDs{id})==1228 & (iRun == 4)
-            disp('Eye data skipped');
-        else
-            save([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_eye_Rlm_Fhl_rdSeg'],'data_eye')
-        end
-        save([pn.EEG, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_EEG_Rlm_Fhl_rdSeg'],'data_EEG')
-        save([pn.History, IDs{id}, '_r',num2str(iRun), '_', condEEG, '_config'],'config')
-
-        % clear variables
-        clear config data data_eye data_EEG indOnset indOffset mrk mrk_val trl TOI1 TOI2
-
-        else
-            disp(['Data already exists: ', IDs{id}, ' Run ',num2str(iRun)]);
-        end % exist
-    end; clear iRun
-end; clear id

+ 0 - 21
code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_prepare.sh

@@ -1,21 +0,0 @@
-#!/bin/bash
-
-# This script prepares tardis by compiling the necessary function in MATLAB.
-
-#ssh tardis # access tardis
-
-# check and choose matlab version
-#module avail matlab
-module load matlab/R2016b
-
-# compile functions
-
-matlab
-%% add fieldtrip toolbox
-addpath('/home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/T_tools/fieldtrip-20170904/')
-ft_defaults()
-ft_compile_mex(true)
-%% go to analysis directory containing .m-file
-cd('/home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/A_scripts/G_STSW_segmentation/')
-%% compile function and append dependencies
-mcc -m G_STSW_segmentation_raw_data_180111.m -a /home/mpib/LNDG/StateSwitch/WIP_eeg/SA_preproc_study_YA/A_scripts/helper

+ 135 - 0
code/a5_segmentation_raw_data/a5_segmentation_raw_data.m

@@ -0,0 +1,135 @@
+function a5_segmentation_raw_data(id, rootpath)
+
+if ismac % run if function is not pre-compiled
+    id = '1'; % test for example subject
+    currentFile = mfilename('fullpath');
+    [pathstr,~,~] = fileparts(currentFile);
+    cd(fullfile(pathstr,'..', '..'))
+    rootpath = pwd;
+end
+
+% inputs
+pn.eeg_BIDS = fullfile(rootpath, 'data', 'inputs', 'rawdata', 'eeg_BIDS');
+pn.channel_locations = fullfile(rootpath, 'data', 'inputs', 'rawdata', 'channel_locations');
+pn.events = fullfile(rootpath, 'data', 'inputs', 'rawdata', 'events');
+pn.tools = fullfile(rootpath, 'tools');
+% outputs
+pn.eeg_ft = fullfile(rootpath, 'data', 'outputs', 'eeg');
+pn.history = fullfile(rootpath, 'data', 'outputs', 'history');
+
+if ismac % run if function is not pre-compiled
+     addpath(fullfile(pn.tools, 'fieldtrip')); ft_defaults;
+     addpath(fullfile(pn.tools, 'helpers'));
+end
+
+% N = 33
+IDs = tdfread(fullfile(pn.eeg_BIDS, 'participants.tsv'));
+IDs = cellstr(IDs.participant_id);
+
+id = str2num(id);
+
+display(['processing ID ' num2str(IDs{id})]);
+    
+%%  load raw data
+
+if ~exist(fullfile(pn.eeg_ft, [IDs{id}, '_task-xxxx_eeg_seg.mat']),'file')
+
+    % load config
+    config = [];
+    load(fullfile(pn.history, [IDs{id}, '_task-xxxx_config.mat']),'config');
+
+    %% load events file
+    
+    events = readtable(fullfile(pn.events, ['EMP',IDs{id}(end-1:end),'_events.csv']));
+    
+    %% generate segmentation structure
+
+    % load marker file
+    mrk = config.mrk;
+    
+    % generate trial structure
+    mrk_val = {mrk(1,:).value};
+    indOnset = find(strcmp(mrk_val(:),'boundary')) + 1;
+    mrk_val = mrk_val(indOnset:end);
+
+    % Stim trials
+    fsample = 512;
+    trl = zeros(length(mrk_val),3);
+    TOI1 = 1*fsample; % segmentation before trigger (in 1024 Hz)
+    TOI2 = 2*fsample; % segmentation following trigger
+
+    for j = 1:size(trl,1)
+        trl(j,1) = mrk(1,indOnset+j-1).sample - TOI1;
+        trl(j,2) = mrk(1,indOnset+j-1).sample + TOI2;
+        trl(j,3) = -TOI1; % offset
+    end; clear j
+
+    % add trial structure to config
+    config.trl = trl;
+
+    %% load, filter, and re-reference raw data
+
+    % define reading & preprocessing parameters
+    % read in all data first
+
+    % load data
+    cfg           = [];
+    cfg.datafile  = ...
+        fullfile(pn.eeg_BIDS, IDs{id}, 'eeg', [IDs{id}, '_task-xxxx_eeg.eeg']);
+    cfg.trl         = config.trl;
+    cfg.channel     = {'all'};
+
+    data_eeg            = ft_preprocessing(cfg);
+
+    %% reref & filter EEG data
+    
+    cfg             = [];
+
+    cfg.continuous  = 'yes';
+    cfg.demean      = 'yes';
+
+    cfg.reref       = 'yes';
+    cfg.refmethod   = 'avg';
+    cfg.refchannel  = {'M1', 'M2'};
+    cfg.implicitref = 'POz';
+
+    cfg.hpfilter    = 'yes';
+    cfg.hpfreq      = .2;
+    cfg.hpfiltord   = 4;
+    cfg.hpfilttype  = 'but';
+
+    cfg.lpfilter    = 'yes';
+    cfg.lpfreq      = 125;
+    cfg.lpfiltord   = 4;
+    cfg.lpfilttype  = 'but';
+
+    % get data
+    data_eeg = ft_preprocessing(cfg, data_eeg);
+    flt = cfg;
+
+    % clear cfg structure
+    clear cfg
+
+    %% resample to 500 Hz
+
+    % define settings for resampling
+    cfg.resamplefs = 500;
+    cfg.detrend    = 'no';
+    cfg.feedback   = 'no';
+    cfg.trials     = 'all';
+    data_eeg    = ft_resampledata(cfg,data_eeg);
+
+    resample = cfg;
+    % clear variables
+    clear cfg
+
+    % update config
+    config.seg.flt = flt;
+    config.seg.resample = resample;
+
+    %% save eeg data and history
+    
+    save(fullfile(pn.eeg_ft, [IDs{id}, '_task-xxxx_eeg_seg.mat']),'data_eeg', 'events');
+    save(fullfile(pn.history, [IDs{id}, '_task-xxxx_config.mat']),'config');
+
+end % exist

+ 25 - 0
code/a5_segmentation_raw_data/a5_segmentation_raw_data_START.sh

@@ -0,0 +1,25 @@
+#!/bin/bash
+
+fun_name="a5_segmentation_raw_data"
+
+mkdir ./logs
+
+rootpath="$(pwd)/../.."
+rootpath=$(builtin cd $rootpath; pwd)
+
+for subj in $(seq 1 33); do
+	# if not been performed yet
+	if [ ! -f ${rootpath}/data/outputs/eeg/sub-$(printf "%03d" ${subj})*_seg.mat ]; then
+		echo "step not performed yet for this subject"
+		echo "#!/bin/bash"                    			> job.slurm
+		echo "#SBATCH --job-name eegmp_seg_${subj}" 	>> job.slurm
+		echo "#SBATCH --cpus-per-task 4"				>> job.slurm
+		echo "#SBATCH --mem 8gb" 						>> job.slurm
+		echo "#SBATCH --time 01:00:00" 					>> job.slurm
+		echo "#SBATCH --output ./logs/eegmp_prep_${subj}.out"			>> job.slurm
+		echo "#SBATCH --workdir ." 										>> job.slurm
+		echo "./${fun_name}_run.sh /opt/matlab/R2016b ${subj} ${rootpath}" 	>> job.slurm
+		sbatch job.slurm
+		rm -f job.slurm
+	fi
+done

+ 13 - 0
code/a5_segmentation_raw_data/a5_segmentation_raw_data_prepare.m

@@ -0,0 +1,13 @@
+function a5_segmentation_raw_data_prepare()
+
+%% add fieldtrip toolbox
+
+addpath(fullfile('..','..', 'tools', 'fieldtrip'));
+ft_defaults()
+ft_hastoolbox('JSONLAB')
+addpath(genpath(fullfile('..','..', 'tools', 'fieldtrip', 'external', 'jsonlab')))
+ft_compile_mex(true)
+
+mcc -m a5_segmentation_raw_data.m 
+
+exit

+ 11 - 0
code/a5_segmentation_raw_data/a5_segmentation_raw_data_prepare.sh

@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# This script prepares tardis by compiling the necessary function in MATLAB.
+
+# check [module avail matlab] and choose matlab version
+
+fun_name="a5_segmentation_raw_data"
+
+module load matlab/R2016b
+matlab -nodesktop -nosplash -r "run ${fun_name}_prepare.m"
+mv run_${fun_name}.sh ${fun_name}_run.sh

+ 1 - 1
code/a5_segmentation_raw_data/G_STSW_segmentation_raw_data_180111_run.sh

@@ -27,7 +27,7 @@ else
       args="${args} \"${token}\"" 
       shift
   done
-  eval "\"${exe_dir}/G_STSW_segmentation_raw_data_180111\"" $args
+  eval "\"${exe_dir}/a5_segmentation_raw_data\"" $args
 fi
 exit
 

+ 7 - 5
code/a5_segmentation_raw_data/mccExcludedFiles.log

@@ -1,7 +1,9 @@
 The List of Excluded Files
 Excluded files	 Exclusion Message ID	 Reason For Exclusion	 Exclusion Rule
-/opt/matlab/R2016b/toolbox/local/+matlab/+internal/+toolboxes/addInstalledToolboxesToJavaPath.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/opt/matlab/R2016b/toolbox/local/[+]matlab/[+]internal/[+]toolboxes/
-/opt/matlab/R2016b/toolbox/local/+matlab/+internal/+toolboxes/addInstalledToolboxesToPath.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/opt/matlab/R2016b/toolbox/local/[+]matlab/[+]internal/[+]toolboxes/
-/opt/matlab/R2016b/toolbox/local/+matlab/+internal/+zipAddOns/addInstalledZipAddOnsToPath.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/opt/matlab/R2016b/toolbox/local/[+]matlab/[+]internal/[+]zipAddOns/
-/opt/matlab/R2016b/toolbox/local/pathdef.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/opt/matlab/R2016b/toolbox/local/pathdef[.]m
-/opt/matlab/R2016b/toolbox/matlab/codetools/initdesktoputils.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/opt/matlab/R2016b/toolbox/matlab/codetools/
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/fuzzy/fuzzy/findcluster.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/+matlab/+internal/+toolboxes/addInstalledToolboxesToJavaPath.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/[+]matlab/[+]internal/[+]toolboxes/
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/+matlab/+internal/+toolboxes/addInstalledToolboxesToPath.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/[+]matlab/[+]internal/[+]toolboxes/
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/+matlab/+internal/+zipAddOns/addInstalledZipAddOnsToPath.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/[+]matlab/[+]internal/[+]zipAddOns/
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/pathdef.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/mnt/beegfs/software/archive/matlab/R2016b/toolbox/local/pathdef[.]m
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/matlab/codetools/@mtree/mtree.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/mnt/beegfs/software/archive/matlab/R2016b/toolbox/matlab/codetools/
+/mnt/beegfs/software/archive/matlab/R2016b/toolbox/matlab/codetools/initdesktoputils.m	MATLAB:depfun:req:ExcludedBy	Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler.	/mnt/beegfs/software/archive/matlab/R2016b/toolbox/matlab/codetools/

+ 115 - 0
code/a5_segmentation_raw_data/readme.txt

@@ -0,0 +1,115 @@
+MATLAB Compiler
+
+1. Prerequisites for Deployment 
+
+. Verify the MATLAB Runtime is installed and ensure you    
+  have installed version 9.1 (R2016b).   
+
+. If the MATLAB Runtime is not installed, do the following:
+  (1) enter
+  
+      >>mcrinstaller
+      
+      at MATLAB prompt. The MCRINSTALLER command displays the 
+      location of the MATLAB Runtime installer.
+
+  (2) run the MATLAB Runtime installer.
+
+Or download the Linux 64-bit version of the MATLAB Runtime for R2016b 
+from the MathWorks Web site by navigating to
+
+   http://www.mathworks.com/products/compiler/mcr/index.html
+   
+   
+For more information about the MATLAB Runtime and the MATLAB Runtime installer, see 
+Package and Distribute in the MATLAB Compiler documentation  
+in the MathWorks Documentation Center.    
+
+
+2. Files to Deploy and Package
+
+Files to package for Standalone 
+================================
+-a5_segmentation_raw_data 
+-run_a5_segmentation_raw_data.sh (shell script for temporarily setting environment 
+                                  variables and executing the application)
+   -to run the shell script, type
+   
+       ./run_a5_segmentation_raw_data.sh <mcr_directory> <argument_list>
+       
+    at Linux or Mac command prompt. <mcr_directory> is the directory 
+    where version 9.1 of the MATLAB Runtime is installed or the directory where 
+    MATLAB is installed on the machine. <argument_list> is all the 
+    arguments you want to pass to your application. For example, 
+
+    If you have version 9.1 of the MATLAB Runtime installed in 
+    /mathworks/home/application/v91, run the shell script as:
+    
+       ./run_a5_segmentation_raw_data.sh /mathworks/home/application/v91
+       
+    If you have MATLAB installed in /mathworks/devel/application/matlab, 
+    run the shell script as:
+    
+       ./run_a5_segmentation_raw_data.sh /mathworks/devel/application/matlab
+-MCRInstaller.zip
+   -if end users are unable to download the MATLAB Runtime using the above  
+    link, include it when building your component by clicking 
+    the "Runtime downloaded from web" link in the Deployment Tool
+-This readme file 
+
+3. Definitions
+
+For information on deployment terminology, go to 
+http://www.mathworks.com/help. Select MATLAB Compiler >   
+Getting Started > About Application Deployment > 
+Deployment Product Terms in the MathWorks Documentation 
+Center.
+
+
+4. Appendix 
+
+A. Linux x86-64 systems:
+In the following directions, replace MCR_ROOT by the directory where the MATLAB Runtime 
+   is installed on the target machine.
+
+(1) Set the environment variable XAPPLRESDIR to this value:
+
+    MCR_ROOT/v91/X11/app-defaults
+
+
+(2) If the environment variable LD_LIBRARY_PATH is undefined, set it to the concatenation 
+   of the following strings:
+
+    MCR_ROOT/v91/runtime/glnxa64:
+    MCR_ROOT/v91/bin/glnxa64:
+    MCR_ROOT/v91/sys/os/glnxa64:
+    MCR_ROOT/v91/sys/opengl/lib/glnxa64
+
+    If it is defined, set it to the concatenation of these strings:
+
+    ${LD_LIBRARY_PATH}: 
+    MCR_ROOT/v91/runtime/glnxa64:
+    MCR_ROOT/v91/bin/glnxa64:
+    MCR_ROOT/v91/sys/os/glnxa64:
+    MCR_ROOT/v91/sys/opengl/lib/glnxa64
+
+   For more detail information about setting the MATLAB Runtime paths, see Package and 
+   Distribute in the MATLAB Compiler documentation in the MathWorks Documentation Center.
+
+
+     
+        NOTE: To make these changes persistent after logout on Linux 
+              or Mac machines, modify the .cshrc file to include this  
+              setenv command.
+        NOTE: The environment variable syntax utilizes forward 
+              slashes (/), delimited by colons (:).  
+        NOTE: When deploying standalone applications, it is possible 
+              to run the shell script file run_a5_segmentation_raw_data.sh 
+              instead of setting environment variables. See 
+              section 2 "Files to Deploy and Package".    
+
+
+
+
+
+

+ 1 - 0
code/a5_segmentation_raw_data/requiredMCRProducts.txt

@@ -0,0 +1 @@
+35000	35001	35010	

+ 1 - 0
data/outputs/eeg/sub-001_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/wq/Vj/MD5E-s995127617--ef8b90a1b8a3fb3c7a397bd38e60a9ae.mat/MD5E-s995127617--ef8b90a1b8a3fb3c7a397bd38e60a9ae.mat

+ 1 - 0
data/outputs/eeg/sub-002_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/zV/QW/MD5E-s997607357--a9ef5250218ad5683811ec968dd32cf3.mat/MD5E-s997607357--a9ef5250218ad5683811ec968dd32cf3.mat

+ 1 - 0
data/outputs/eeg/sub-003_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/Fk/29/MD5E-s997191173--603ae83b1479d7c7876e7fb9e3fce6aa.mat/MD5E-s997191173--603ae83b1479d7c7876e7fb9e3fce6aa.mat

+ 1 - 0
data/outputs/eeg/sub-004_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/15/4J/MD5E-s995229604--56753fc8a69235a0d5c949774dc5a480.mat/MD5E-s995229604--56753fc8a69235a0d5c949774dc5a480.mat

+ 1 - 0
data/outputs/eeg/sub-005_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/M5/72/MD5E-s996373516--57d0cac622b8c4aae591b54a3f590e63.mat/MD5E-s996373516--57d0cac622b8c4aae591b54a3f590e63.mat

+ 1 - 0
data/outputs/eeg/sub-006_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/wV/5x/MD5E-s997548788--01668f47cfeafc34a829d41726bb9431.mat/MD5E-s997548788--01668f47cfeafc34a829d41726bb9431.mat

+ 1 - 0
data/outputs/eeg/sub-007_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/F2/65/MD5E-s996293491--3fd08c89c623d97220737bc6be0fb9f8.mat/MD5E-s996293491--3fd08c89c623d97220737bc6be0fb9f8.mat

+ 1 - 0
data/outputs/eeg/sub-008_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/4Z/Vx/MD5E-s999306004--5f2a879822711926b5190857d15931d9.mat/MD5E-s999306004--5f2a879822711926b5190857d15931d9.mat

+ 1 - 0
data/outputs/eeg/sub-009_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/0g/jP/MD5E-s996242543--2c745bdc81f0cd0c852e1e99f3f15254.mat/MD5E-s996242543--2c745bdc81f0cd0c852e1e99f3f15254.mat

+ 1 - 0
data/outputs/eeg/sub-010_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/x2/1P/MD5E-s996153906--8f1c26d413405fb622c8a6a4f5a0264e.mat/MD5E-s996153906--8f1c26d413405fb622c8a6a4f5a0264e.mat

+ 1 - 0
data/outputs/eeg/sub-011_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/zp/M8/MD5E-s996300417--0a5327e5622acec0a2a3801ab5d6b2f6.mat/MD5E-s996300417--0a5327e5622acec0a2a3801ab5d6b2f6.mat

+ 1 - 0
data/outputs/eeg/sub-012_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/gv/QM/MD5E-s997034543--d85fd41c871b82da0e2469976b70069b.mat/MD5E-s997034543--d85fd41c871b82da0e2469976b70069b.mat

+ 1 - 0
data/outputs/eeg/sub-013_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/75/x9/MD5E-s997296631--c3bed0f060c6da00ddb4127a470ad37a.mat/MD5E-s997296631--c3bed0f060c6da00ddb4127a470ad37a.mat

+ 1 - 0
data/outputs/eeg/sub-014_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/2Q/gj/MD5E-s997318954--d4f2e04e0b38e621723f623b9acec8e7.mat/MD5E-s997318954--d4f2e04e0b38e621723f623b9acec8e7.mat

+ 1 - 0
data/outputs/eeg/sub-015_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/wp/39/MD5E-s999049284--35c010fe1c81c0658c13486f220ae2fe.mat/MD5E-s999049284--35c010fe1c81c0658c13486f220ae2fe.mat

+ 1 - 0
data/outputs/eeg/sub-016_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/z5/7F/MD5E-s994192205--7d13d9ffaf0b75870b2f564a2827d33c.mat/MD5E-s994192205--7d13d9ffaf0b75870b2f564a2827d33c.mat

+ 1 - 0
data/outputs/eeg/sub-017_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/x1/Qz/MD5E-s995773151--a6e947ee5c5b24c9118be2aa1b740561.mat/MD5E-s995773151--a6e947ee5c5b24c9118be2aa1b740561.mat

+ 1 - 0
data/outputs/eeg/sub-018_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/K4/19/MD5E-s991914873--e9d600e4d075b64621690c3f30fff355.mat/MD5E-s991914873--e9d600e4d075b64621690c3f30fff355.mat

+ 1 - 0
data/outputs/eeg/sub-019_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/JF/z3/MD5E-s995291627--67df77baa1db333362c4c5f4b57eec9c.mat/MD5E-s995291627--67df77baa1db333362c4c5f4b57eec9c.mat

+ 1 - 0
data/outputs/eeg/sub-020_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/F8/VF/MD5E-s992939361--94287c1d92d3a7fdbb82b56c17e8b78d.mat/MD5E-s992939361--94287c1d92d3a7fdbb82b56c17e8b78d.mat

+ 1 - 0
data/outputs/eeg/sub-021_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/8P/Jq/MD5E-s994412484--50be54e18103b8a9e6de9e1d67316e8f.mat/MD5E-s994412484--50be54e18103b8a9e6de9e1d67316e8f.mat

+ 1 - 0
data/outputs/eeg/sub-022_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/gz/MZ/MD5E-s995233559--4aa8414c0002f0e1ffff0b5c1e8e8995.mat/MD5E-s995233559--4aa8414c0002f0e1ffff0b5c1e8e8995.mat

+ 1 - 0
data/outputs/eeg/sub-023_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/jg/pz/MD5E-s995345487--2296269b7d48917cd90cd11fac2f2e1f.mat/MD5E-s995345487--2296269b7d48917cd90cd11fac2f2e1f.mat

+ 1 - 0
data/outputs/eeg/sub-024_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/22/wZ/MD5E-s996716057--c3c4e3d3767d47c69268f77a12d32d27.mat/MD5E-s996716057--c3c4e3d3767d47c69268f77a12d32d27.mat

+ 1 - 0
data/outputs/eeg/sub-025_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/2V/Wg/MD5E-s996443641--2d6d61799ab14f04b498d329004a11a1.mat/MD5E-s996443641--2d6d61799ab14f04b498d329004a11a1.mat

+ 1 - 0
data/outputs/eeg/sub-026_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/4f/F1/MD5E-s995866817--3b02908f50d3a9a7eea691935a45cdc1.mat/MD5E-s995866817--3b02908f50d3a9a7eea691935a45cdc1.mat

+ 1 - 0
data/outputs/eeg/sub-027_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/kv/1j/MD5E-s996280190--13f9c7d39a80ba4e8f1279bddce4d298.mat/MD5E-s996280190--13f9c7d39a80ba4e8f1279bddce4d298.mat

+ 1 - 0
data/outputs/eeg/sub-028_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/8X/7j/MD5E-s995245500--9605b5e0d77cd38e109c776edc7ef398.mat/MD5E-s995245500--9605b5e0d77cd38e109c776edc7ef398.mat

+ 1 - 0
data/outputs/eeg/sub-029_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/M7/qG/MD5E-s994988757--d9b8e9f0f024532f0d8e5e3afa76df5a.mat/MD5E-s994988757--d9b8e9f0f024532f0d8e5e3afa76df5a.mat

+ 1 - 0
data/outputs/eeg/sub-030_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/pQ/05/MD5E-s996039240--780e26bff8c063fb67e89f9888a9cea9.mat/MD5E-s996039240--780e26bff8c063fb67e89f9888a9cea9.mat

+ 1 - 0
data/outputs/eeg/sub-031_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/g5/P5/MD5E-s996123396--03accbfc734b13ad847f06e01d1de559.mat/MD5E-s996123396--03accbfc734b13ad847f06e01d1de559.mat

+ 1 - 0
data/outputs/eeg/sub-032_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/gg/Km/MD5E-s996368233--3af92eda03f2b72194277cb7655ab66a.mat/MD5E-s996368233--3af92eda03f2b72194277cb7655ab66a.mat

+ 1 - 0
data/outputs/eeg/sub-033_task-xxxx_eeg_seg.mat

@@ -0,0 +1 @@
+../../../.git/annex/objects/Px/95/MD5E-s995686506--06a898096f5b9bfd7d98bb6767939e47.mat/MD5E-s995686506--06a898096f5b9bfd7d98bb6767939e47.mat

+ 1 - 1
data/outputs/history/sub-001_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/xj/50/MD5E-s125208--866a3b196c11db559edf7f7a2ea551d9.mat/MD5E-s125208--866a3b196c11db559edf7f7a2ea551d9.mat
+../../../.git/annex/objects/FM/KP/MD5E-s133662--3e407cd842ab52736c99271b124e8267.mat/MD5E-s133662--3e407cd842ab52736c99271b124e8267.mat

+ 1 - 1
data/outputs/history/sub-004_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/4g/pm/MD5E-s200385--d744e655c6b9cde0078b41629729e7e4.mat/MD5E-s200385--d744e655c6b9cde0078b41629729e7e4.mat
+../../../.git/annex/objects/pX/36/MD5E-s208889--a83994f57ae8e09c2121135d599c68b4.mat/MD5E-s208889--a83994f57ae8e09c2121135d599c68b4.mat

+ 1 - 1
data/outputs/history/sub-008_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/79/m7/MD5E-s131254--f82db5ebeaa05049f6d8f8cf0d03a110.mat/MD5E-s131254--f82db5ebeaa05049f6d8f8cf0d03a110.mat
+../../../.git/annex/objects/vj/4x/MD5E-s139189--fbedcb23b31671e95a4b09d8c9ff8c9b.mat/MD5E-s139189--fbedcb23b31671e95a4b09d8c9ff8c9b.mat

+ 1 - 1
data/outputs/history/sub-012_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/mF/J6/MD5E-s215159--eae4317b5deaaad48b9fe691629eb3ca.mat/MD5E-s215159--eae4317b5deaaad48b9fe691629eb3ca.mat
+../../../.git/annex/objects/kQ/34/MD5E-s223238--927c5e4440008ddf35b542807a42f0ce.mat/MD5E-s223238--927c5e4440008ddf35b542807a42f0ce.mat

+ 1 - 1
data/outputs/history/sub-013_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/Mz/8k/MD5E-s231977--7b71ecaa34cd1586288a17757cdc956b.mat/MD5E-s231977--7b71ecaa34cd1586288a17757cdc956b.mat
+../../../.git/annex/objects/V0/x9/MD5E-s239918--b3cbff1f4e1454b1e7a7f3bfa6ff91f7.mat/MD5E-s239918--b3cbff1f4e1454b1e7a7f3bfa6ff91f7.mat

+ 1 - 1
data/outputs/history/sub-023_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/G7/g0/MD5E-s162302--a5c7c6993beec389aa20411bced6ab7d.mat/MD5E-s162302--a5c7c6993beec389aa20411bced6ab7d.mat
+../../../.git/annex/objects/p9/xV/MD5E-s170125--7997c87124ad3fa0d92f4d364386b1c1.mat/MD5E-s170125--7997c87124ad3fa0d92f4d364386b1c1.mat

+ 1 - 1
data/outputs/history/sub-032_task-xxxx_config.mat

@@ -1 +1 @@
-../../../.git/annex/objects/9G/9v/MD5E-s210339--644ab5089ba98fee95246b4d5379c27a.mat/MD5E-s210339--644ab5089ba98fee95246b4d5379c27a.mat
+../../../.git/annex/objects/4g/pp/MD5E-s218797--7d115b6c3937b060c5bef7f73237cb62.mat/MD5E-s218797--7d115b6c3937b060c5bef7f73237cb62.mat