TEAP (Toolbox for Emotion Analysis using Physiological Signals) doc
Bulk_load_eeglab.m
Go to the documentation of this file.
1 %This file is part of TEAP.
2 %
3 %TEAP is free software: you can redistribute it and/or modify
4 %it under the terms of the GNU General Public License as published by
5 %the Free Software Foundation, either version 3 of the License, or
6 %(at your option) any later version.
7 %
8 %TEAP is distributed in the hope that it will be useful,
9 %but WITHOUT ANY WARRANTY; without even the implied warranty of
10 %MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 %GNU General Public License for more details.
12 %
13 %You should have received a copy of the GNU General Public License
14 %along with TEAP. If not, see <http://www.gnu.org/licenses/>.
15 %
16 %> @file Bulk_load_eeglab.m
17 %> @brief Loads an EEGLab variable, into a TEAP bulk signal, containing EEG, ECG,
18 %> GSR, etc.
19 %
20 %> @param EEGV the variable given by EEGLab (ex: load A.mat; Bulk_load_eeglab(EEG))
21 %
22 %> @retval BulkSig a TEAP bulk signal vector
23 
24 function [BulkSig] = Bulk_load_eeglab(EEGV)
25 %Copyright Frank Villaro-Dixon, 2014
26 
27 if(nargin ~= 1)
28  error('Usage: BulkSig = Bulk_load_eeglab(EEGV)');
29 end
30 
31 
32 %Number of epochs:
33 nEpochs = length(EEGV.epoch);
34 
35 
36 %foreach epoch
37 for iEpoch = [1:nEpochs]
38  Bulk = Bulk_new_empty();
39 
40  Bulk = addEEG(Bulk, iEpoch);
41  Bulk = addGSR(Bulk, iEpoch);
42  Bulk = addHST(Bulk, iEpoch);
43  Bulk = addRES(Bulk, iEpoch);
44  Bulk = addBVP(Bulk, iEpoch);
45 
46  BulkSig(iEpoch) = Bulk;
47  clear Bulk;
48 end
49 
50 
51 %EEG
52 function BulkSig = addEEG(BulkSig, iEpoch);
53 correspondance = ['Fp1'; 'AF3'; 'F3'; 'F7'; 'FC5'; 'FC1'; 'C3'; 'T7'; 'CP5'; ...
54  'CP1'; 'P3'; 'P7'; 'PO3'; 'O1'; 'Oz'; 'Pz'; 'Fp2'; 'AF4'; ...
55  'Fz'; 'F4'; 'F8'; 'FC6'; 'FC2'; 'Cz'; 'C4'; 'T8'; 'CP6'; ...
56  'CP2'; 'P4'; 'P8'; 'PO4'; 'O2'];
57 
58  numel = size(correspondance, 1);
59  datlen = length(EEGV.data(1, :, 1));
60  data = zeros(numel, datlen);
61 
62  for i = [1:numel]
63  chaname = strtrim(correspondance(i, :));
64  chan = findMyChannel(chaname);
65 % disp(['Will do ' chaname ' - ' num2str(chan)]);
66  if(chan == 0)
67  warning(['The EEG channel ' correspondance(i, :) ' does not '...
68  'exist. Aborting EEG']);
69  return;
70  end
71  data(1, :) = reshape(EEGV.data(chan, :, iEpoch), 1, datlen);
72  end
73 
74  EEGSig = EEG_aqn_variable(correspondance, data, EEGV.srate);
75  BulkSig = Bulk_add_signal(BulkSig, EEG__get_signame(), EEGSig);
76 end
77 
78 %GSR
79 function BulkSig = addGSR(BulkSig, iEpoch)
80  GSRChannel = findMyChannel('GSR1');
81  if(GSRChannel == 0)
82  return;
83  end
84 
85  data = EEGV.data(GSRChannel, :, iEpoch);
86  reshaped = reshape(data, 1, length(data));
87 
88  GSRSig = GSR_aqn_variable(reshaped, EEGV.srate);
89  BulkSig = Bulk_add_signal(BulkSig, GSR__get_signame(), GSRSig);
90 end
91 
92 %Temp/HST
93 function BulkSig = addHST(BulkSig, iEpoch)
94  HSTChannel = findMyChannel('Temp');
95  if(HSTChannel == 0)
96  return;
97  end
98 
99  data = EEGV.data(HSTChannel, :, iEpoch);
100  reshaped = reshape(data, 1, length(data));
101 
102  HSTSig = HST_aqn_variable(reshaped, EEGV.srate);
103  BulkSig = Bulk_add_signal(BulkSig, HST__get_signame(), HSTSig);
104 end
105 
106 %Respiration
107 function BulkSig = addRES(BulkSig, iEpoch)
108  RESChannel = findMyChannel('Resp');
109  if(RESChannel == 0)
110  return;
111  end
112 
113  data = EEGV.data(RESChannel, :, iEpoch);
114  reshaped = reshape(data, 1, length(data));
115 
116  RESSig = RES_aqn_variable(reshaped, EEGV.srate);
117  BulkSig = Bulk_add_signal(BulkSig, RES__get_signame(), RESSig);
118 end
119 
120 %BVT/Plet
121 function BulkSig = addBVP(BulkSig, iEpoch)
122  BVPChannel = findMyChannel('Plet');
123  if(BVPChannel == 0)
124  return;
125  end
126 
127  data = EEGV.data(BVPChannel, :, iEpoch);
128  reshaped = reshape(data, 1, length(data));
129 
130  BVPSig = BVP_aqn_variable(reshaped, EEGV.srate);
131  BulkSig = Bulk_add_signal(BulkSig, BVP__get_signame(), BVPSig);
132 end
133 
134 
135 %Find my channel
136 function iChannel = findMyChannel(chanName)
137  for iChannel = [1:length(EEGV.chanlocs)]
138 % disp(['Will compare ' chanName ' and ' EEGV.chanlocs(iChannel).labels]);
139  if(strcmp(chanName, EEGV.chanlocs(iChannel).labels) == 1)
140  return;
141  end
142  end
143  iChannel = 0;
144 end
145 
146 
147 end
148 
HST__get_signame
function HST__get_signame()
Bulk_add_signal
function Bulk_add_signal(in BulkSig, in signame, in sig)
findMyChannel
function findMyChannel(in chanName)
GSR_aqn_variable
function GSR_aqn_variable(in rawGSR, in sampRate)
RES__get_signame
function RES__get_signame()
Bulk_load_eeglab
function Bulk_load_eeglab(in EEGV)
BVP__get_signame
function BVP__get_signame()
addBVP
function addBVP(in BulkSig, in iEpoch)
addRES
function addRES(in BulkSig, in iEpoch)
RES_aqn_variable
function RES_aqn_variable(in rawRES, in sampRate)
addHST
function addHST(in BulkSig, in iEpoch)
BVP_aqn_variable
function BVP_aqn_variable(in rawBVP, in sampRate)
GSR__get_signame
function GSR__get_signame()
EEG_aqn_variable
function EEG_aqn_variable(in eegChannels, in eegData, in sampRate)
Bulk_new_empty
function Bulk_new_empty()
EEG__get_signame
function EEG__get_signame()
addGSR
function addGSR(in BulkSig, in iEpoch)
HST_aqn_variable
function HST_aqn_variable(in rawHST, in sampRate)
Copyright Frank Villaro-Dixon, 2014.
addEEG
function addEEG(in BulkSig, in iEpoch)