<div dir="ltr">Hi Alexandra,<div><br></div><div>My understanding (I'm not an expert in ICA, specifically, but I've been using it for years), is that all your channels will be fed into ICA, and backprojecting components into channel space will do that projection onto all the 128 channels. So even though you interpolated some bad channels pre-ICA, all the channels get used. The rank reduction, in my crude understanding, means that the ICA will take the 128 channels but will only look for 115 unique components, because it's assuming that the interpolated channels are not unique sources of data (since they're now based on neighboring channels). So I wouldn't worry too much, but that's just my two cents.</div><div><br></div><div>James</div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 17, 2016 at 12:34 PM,  <span dir="ltr"><<a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send eeglablist mailing list submissions to<br>
        <a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://sccn.ucsd.edu/mailman/listinfo/eeglablist" rel="noreferrer" target="_blank">https://sccn.ucsd.edu/mailman/<wbr>listinfo/eeglablist</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.<wbr>edu</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:eeglablist-owner@sccn.ucsd.edu">eeglablist-owner@sccn.ucsd.edu</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of eeglablist digest..."<br>
<br>Today's Topics:<br>
<br>
   1. ICA after PREP pipeline incl channel interpolation<br>
      (Alexandra Yvonne Vossen)<br>
   2. EEG neurofeedback for emotion (Amin Dehghani)<br>
   3. Fwd: Units in output of timefreq - wavelet normalization<br>
      (Norman Forschack)<br>
   4. Automation (Mike Urich)<br>
   5. Re: problem in BCILAB-1.1 version (brian baloch) (Alex Abe)<br>
<br><br>---------- Forwarded message ----------<br>From: Alexandra Yvonne Vossen<br>To: "<a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a>" <<a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Tue, 16 Aug 2016 17:18:01 +0100<br>Subject: [Eeglablist] ICA after PREP pipeline incl channel interpolation<br><br>
Dear all,<br>
<br>
I realise this is a popular question but I am really uncertain what happens to my data in my preprocessing pipeline. I am quite new to ICA/PCA decomposition.<br>
<br>
First, the raw data are run through the PREP pipeline (in EEGLAB 13.5.4b), including the (spherical) interpolation of noisy channels.<br>
<br>
Then after rejection of very noisy epochs I run ICA (for identification of artefact components) with EEG = pop_runica(EEG,'extended',1) %this is somebody else's code that I am re-using.<br>
(Minor question: At this point I do not baseline correct each epoch, is this recommended?)<br>
<br>
I get the info: "Data rank (115) is smaller than the number of channels (128).  Input data size [115,525723] = 115 channels, 525723 frames/nAfter PCA dimension reduction,<br>
finding 115 ICA components using extended ICA."<br>
<br>
Here is where I am losing track. For this example, there are 116 non-interpolated channels and the data set was re-referenced to common reference before ICA.<br>
So I guess this might be behind the rank reduction, although I am not sure how runica knows about this (where is such information retrieved?)<br>
<br>
What precisely is used as the input data now? Any first 115 channels or only the non-interpolated channels?<br>
What happens when the resulting (clean) components are projected back onto channel space if some of the channels are not actually included in the data set used to calculate the components?<br>
<br>
Many thanks in advance,<br>
<br>
<br>
Alexandra Vossen<br>
PhD student<br>
School of Psychology<br>
College of Science & Engineering<br>
University of Glasgow<br>
<br><br>---------- Forwarded message ----------<br>From: Amin Dehghani <<a href="mailto:dehghani@ut.ac.ir">dehghani@ut.ac.ir</a>><br>To: <<a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Tue, 16 Aug 2016 10:17:30 +0430<br>Subject: [Eeglablist] EEG neurofeedback for emotion<br><div style="font-size:10pt;font-family:Tahoma,Arial,Helvetica,sans-serif">
<p>Dear all</p>
<p> </p>
<p>I want to do some process of EEG neurofeedback for emotion regulation, if you can help me and give me data, I will appreciate you.</p>
<div>-- <br>
<pre>Best Regard

Amin Dehghani

EE Dept./ University of Tehran</pre>
</div>
</div>
<br><br>---------- Forwarded message ----------<br>From: Norman Forschack <<a href="mailto:forschack@cbs.mpg.de">forschack@cbs.mpg.de</a>><br>To: eeglablist  <<a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Tue, 16 Aug 2016 15:14:32 +0200<br>Subject: [Eeglablist] Fwd: Units in output of timefreq - wavelet normalization<br>Dear all,<br>
<br>
below I forward a comment of Mike Cohen discussing wavelet normalization. He said, he will also upload a new lecturelet about the very topic on to his server probably by the end of the weekend.<br>
<br>
Best<br>
Norman<br>
<br>
----- Forwarded Message -----<br>
From: "Mike X Cohen" <<a href="mailto:mikexcohen@gmail.com">mikexcohen@gmail.com</a>><br>
To: <a href="mailto:forschack@cbs.mpg.de">forschack@cbs.mpg.de</a><br>
Sent: Montag, 15. August 2016 19:43:01<br>
Subject: Fwd: [Eeglablist] Units in output of timefreq - wavelet normalization<br>
<br>
<br>
<br>
<br>
<br>
Dear Norman,<br>
<br>
<br>
I'm not on the eeglab list, but someone just forwarded this message to me, so I thought I'd add a few more cents to the pot. Feel free to forward this message to the eeglab list.<br>
<br>
<br>
In general, wavelet normalization in the time domain is an extremely difficult problem. It depends on many factors, including the frequency, the width of the Gaussian, the number of time points, and even the sampling rate. It is quite remarkable that everyone has gotten it wrong (mea culpa -- I didn't work through this issue in my book, so it's wrong in there as well). That factor of "A" that people often use comes from a normalization of the integral and simply doesn't translate to our sampled digital analysis environment. I think it hasn't been a huge problem because most people apply a baseline normalization (dB or percent change), so then the original scale doesn't matter.<br>
<br>
<br>
Anyway, the solution is surprisingly simple: Normalize the wavelet energy in the frequency domain, not in the time domain. For wavelet convolution, it would work something like this:<br>
<br>
<br>
cmwX = fft(cmw,nConv); % nConvolution-point FFT, assume 'cmw' is a complex Morlet wavelet<br>
<br>
cmwX = cmwX./max(cmwX); % normalize to max-1 spectral energy<br>
dataX = fft(data,nConv); % nConvolution-point FFT<br>
convolution_result = ifft( dataX.*cmwX ); % convolution result<br>
<br>
<br>
The power and real part of the convolution result now has the same units as the original signal (e.g., microvolts). If you want to have the time-domain Morlet wavelet, you could take the ifft of cmwX (using nfft according to the wavelet, not according to N+M-1 for convolution).<br>
<br>
<br>
Hope that helps,<br>
Mike<br>
<br>
<br>
<br>
<br>
---------- Forwarded message ----------<br>
From: Norman Forschack < <a href="mailto:forschack@cbs.mpg.de">forschack@cbs.mpg.de</a> ><br>
Date: Mon, Aug 15, 2016 at 6:19 PM<br>
Subject: Re: [Eeglablist] Units in output of timefreq - wavelet normalization<br>
To: Andreas Widmann < <a href="mailto:widmann@uni-leipzig.de">widmann@uni-leipzig.de</a> ><br>
Cc: eeglablist < <a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a> ><br>
<br>
<br>
Dear all,<br>
<br>
I'd like to contribute from the perspective of a discussion on Mike Cohen's Blog.<br>
<br>
The initial question was, how to obtain an amplitude envelope of a given signal which has in fact the same amplitude as the given signal, right?<br>
So coming from Nicos signal:<br>
<br>
clear all<br>
D = 4; % total signal duration in seconds.<br>
sigD = 1; % duration of the test oscillation within the signal.<br>
F = 10; % frequency of the test oscillationin Hz.<br>
P = .25; % Phase of the test oscillation. 2 pi radians = 360 degrees<br>
srate = 256; % sampling rate, i.e. N points per sec used to represent sine wave.<br>
T = 1/srate; % sampling period, i.e. for this e.g. points at 1 ms intervals<br>
time = T:T:D; % time vector.<br>
<br>
sigpoints = length(time)/2 - (sigD*srate)/2:(length(time)/2 + (sigD*srate)/2)-1;<br>
mysig = zeros(1,D*srate);<br>
mysig(sigpoints) = sin(2*F*time(sigpoints)*pi+ 2*pi*P);<br>
<br>
one way to obtain equal amplitudes is to normalize the wavelet by its maximal value within the frequency domain:<br>
<br>
% some preparations<br>
mysig = mysig';<br>
ss = size(mysig);<br>
cycles = 4;<br>
dt = 1/srate;<br>
sf = F/cycles;<br>
s = 1./(2*pi*sf);<br>
t = (-4*s:dt:4*s)';<br>
nM = length(t);<br>
halfMsiz = (nM-1)/2;<br>
hz = linspace(0,srate/2,floor(nM/2)<wbr>+1);<br>
Ly = ss(1)*ss(2)+nM-1;<br>
Ly2=pow2(nextpow2(ss(1)*ss(2)+<wbr>nM-1));<br>
<br>
% fft of signal<br>
X=fft(reshape(mysig,ss(1)*ss(<wbr>2),1), Ly2);<br>
<br>
% building morlet wavelet (without a normalization factor)<br>
m = exp(-t.^2/(2*s^2)).*exp(1i*2*<wbr>pi*F.*t);<br>
H = fft(m,Ly2); % fft of wavelet<br>
<br>
% normalize wavelet spectrum<br>
H = H./max(H);<br>
<br>
y = ifft(X.*H,Ly2);<br>
y = y(floor(halfMsiz+1):Ly-ceil(<wbr>halfMsiz));<br>
y_amp = 2* abs(y);<br>
<br>
figure; plot(time,mysig,'b',time,y_<wbr>amp,'r')<br>
<br>
This seems to work for any combination of srate and cycles (except when number of cycles become large) because the signal spectrum is convolved by spectral wavelet values being maximally one.<br>
<br>
I have not fully worked my way through Andreas' example. It normalizes the wavelet in time, not in frequency domain as here. So it is probably not comparable.<br>
But doing time domain normalization within the lines above by just replacing the kernel formula:<br>
<br>
m = exp(-t.^2/(2*s^2)).*exp(1i*2*<wbr>pi*F.*t) ./ sqrt(srate); % unit energy<br>
<br>
and commenting out the max(H) normalization, however, yields an amplitude envelope which is 2.5 times larger than the original signal amplitude and increases when the number of wavelet cycles is increased. But as Andreas suggestion referred to the dftfilt3 output, the matter becomes more complicated as this function uses it's own normalization factor:<br>
A = 1./sqrt(s*sqrt(pi));<br>
and there are problably some more relevant differences (not even going into the timefreq function).<br>
<br>
In sum, this post may have fostered the general confusion (or at least mine) but for a more puristic approach to the matter of wavelet normalization, the lines above might be of some value (kudos to mike x cohen, of course).<br>
<br>
All the best<br>
Norman<br>
<br>
<br>
<br>
<br>
----- On Aug 12, 2016, at 6:06 PM, Andreas Widmann <a href="mailto:widmann@uni-leipzig.de">widmann@uni-leipzig.de</a> wrote:<br>
<br>
> Dear Niko,<br>
><br>
> I’m puzzled by this difference since a long time too (and as you have written a<br>
> book chapter on WT actually I would have hoped you could help resolving this<br>
> issue ;).<br>
><br>
> (Morlet) wavelet normalization always appeared somewhat arbitrary to me (as<br>
> signal amplitude will never be directly reflected across the whole TF plane for<br>
> peaky spectra/time courses). To my understanding the most common normalization<br>
> for wavelets is unit energy (and Gabor). The help text for timefreq states that<br>
> dftfilt3 is "exact Tallon Baudry“. TB (1998, JNeurosci) states that "Wavelets<br>
> were normalized so that their total energy was 1,…“.<br>
><br>
> The wavelets produced by dftfilt3 appear to always have an energy of srate (thus<br>
> they are *not* unit energy normalized?!):<br>
> [wavelet,cycles,freqresol,<wbr>timeresol] = dftfilt3(F, ncycles, srate);<br>
> E = sum( abs( wavelet{ 1 } ) .^ 2 )<br>
> Consequently, to my understanding the correct „normfactor“ should be sqrt( E )<br>
> or better sqrt( srate ).<br>
><br>
> You might want to confirm by looking at the TF transform of the (real part of<br>
> the) wavelet itself<br>
> wavelet{ 1 } = wavelet{ 1 } / sqrt( srate ); % Unit energy normalize<br>
> mysig = zeros(1,D*srate);<br>
> delay = ceil( ( length( mysig ) - length( wavelet{ 1 } ) ) / 2 );<br>
> mysig( delay:delay + length( wavelet{ 1 } ) - 1 ) = real( wavelet{ 1 } ) * 2;<br>
> % Discard imag part<br>
> normfactor = sqrt( srate );<br>
> which should now have a peak amplitude of 1 (independent of sampling rate and<br>
> signal duration).<br>
><br>
> As the issue appears to be not only in EEGLAB but also other implementations, I<br>
> always assumed my reasoning to be incorrect. Is it? What am I missing?<br>
><br>
> Best,<br>
> Andreas<br>
><br>
>> Am 10.08.2016 um 11:58 schrieb Niko Busch < <a href="mailto:niko.busch@gmail.com">niko.busch@gmail.com</a> >:<br>
>><br>
>> Dear Makoto (and everyone who replied to me personally regarding this post),<br>
>><br>
>> thank you for your reply! I see that the result of the wavelet transform inside<br>
>> the timefreq function is dependent on the length of the signal, which in turn<br>
>> is dependent on the number of cycles and sampling rate. However, simply<br>
>> dividing by the length of the wavelet does not seem to be the solution either.<br>
>> I modified the code below by including a "normalization factor", which<br>
>> currently is simply the length of the wavelet. Dividing the wavelet transformed<br>
>> amplitudes by this factor gives the right order of magnitude, but the results<br>
>> are still quite off. By increasing the sampling rate or number of cycles, the<br>
>> results are even more off. I believe we are on the right track, but something<br>
>> is still missing. Do you have any ideas?<br>
>><br>
>> Cheers,<br>
>> Niko<br>
>><br>
>> %% Create sine wave<br>
>> clear all<br>
>> D = 4; % total signal duration in seconds.<br>
>> sigD = 1; % duration of the test oscillation within the signal.<br>
>> F = 10; % frequency of the test oscillationin Hz.<br>
>> P = .25; % Phase of the test oscillation. 2 pi radians = 360 degrees<br>
>> srate = 256; % sampling rate, i.e. N points per sec used to represent sine wave.<br>
>> T = 1/srate; % sampling period, i.e. for this e.g. points at 1 ms intervals<br>
>> t = [T:T:D]; % time vector.<br>
>><br>
>> sigpoints = length(t)/2 - (sigD*srate)/2:(length(t)/2 + (sigD*srate)/2)-1;<br>
>> mysig = zeros(1,D*srate);<br>
>> mysig(sigpoints) = sin(2*F*t(sigpoints)*pi+ 2*pi*P);<br>
>><br>
>> %% TF computation<br>
>> ncycles = 4;<br>
>><br>
>> [wavelet,cycles,freqresol,<wbr>timeresol] = dftfilt3(F, ncycles, srate);<br>
>> normfactor = length(wavelet{1});<br>
>><br>
>> [tf, outfreqs, outtimes] = timefreq(mysig', srate, ...<br>
>> 'cycles', ncycles, 'wletmethod', 'dftfilt3', 'freqscale', 'linear', ...<br>
>> 'freqs', F);<br>
>><br>
>> %% Plot<br>
>> figure; hold all<br>
>> plot(t,mysig);<br>
>> plot(outtimes./1000,abs(tf)./<wbr>normfactor)<br>
>> xlabel('Time (seconds)');<br>
>> ylabel('Amplitude');<br>
>> legend('input signal', 'wavelet result')<br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/<wbr>eeglabmail.html</a><br>
>> To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.<wbr>ucsd.edu</a><br>
>> For digest mode, send an email with the subject "set digest mime" to<br>
>> <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.<wbr>edu</a><br>
><br>
> ______________________________<wbr>_________________<br>
> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/<wbr>eeglabmail.html</a><br>
> To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.<wbr>ucsd.edu</a><br>
> For digest mode, send an email with the subject "set digest mime" to<br>
> <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.<wbr>edu</a><br>
______________________________<wbr>_________________<br>
Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/<wbr>eeglabmail.html</a><br>
To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.<wbr>ucsd.edu</a><br>
For digest mode, send an email with the subject "set digest mime" to <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.<wbr>edu</a><br>
<br>
<br>
<br>
--<br>
<br>
<br>
------------------------------<wbr>------------------------------<wbr>-----<br>
Rasa Gulbinaite, PhD<br>
Centre de Recherche Cerveau & Cognition (CerCo)<br>
Toulouse (France)<br>
<br>
e: <a href="mailto:rasa.gulbinaite@gmail.com">rasa.gulbinaite@gmail.com</a><br>
w: <a href="http://rasagulbinaite.com" rel="noreferrer" target="_blank">rasagulbinaite.com</a><br>
<br>
<br>
<br>
--<br>
<br>
<br>
<br>
<br>
Mike X Cohen, PhD<br>
<a href="http://mikexcohen.com" rel="noreferrer" target="_blank">mikexcohen.com</a><br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Mike Urich <<a href="mailto:michaelurich210@gmail.com">michaelurich210@gmail.com</a>><br>To: <<a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Mon, 15 Aug 2016 17:12:31 -0400<br>Subject: [Eeglablist] Automation<br>Hi all,<br>
<br>
Is there an easy way to see what functions are being called as you click through eeglab? I have a workflow of importing data from a text file, filtering, removing the mean, and running ICA and then viewing a Component Scroll plot. I need to perform this sequence on many datasets and it’ll be the same process for each one, so it would be fantastic to be able to automate this. Does anyone have any suggestions?<br>
<br>
Thanks!<br>
<br>
Mike Urich<br>
<a href="mailto:michaelurich210@gmail.com">michaelurich210@gmail.com</a><br>
<br>
<br>
<br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Alex Abe <<a href="mailto:nabra005@odu.edu">nabra005@odu.edu</a>><br>To: <<a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Tue, 16 Aug 2016 15:36:13 -0400<br>Subject: Re: [Eeglablist] problem in BCILAB-1.1 version (brian baloch)<br><div dir="ltr">Brian, <div><br></div><div>I had the same problem using BCILab in 2015 Matlab version. The problem went away when I downgraded to Matlab 2014a. </div><div><br></div><div>Alex<br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 15, 2016 at 3:00 PM,  <span dir="ltr"><<a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.<wbr>edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send eeglablist mailing list submissions to<br>
        <a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://sccn.ucsd.edu/mailman/listinfo/eeglablist" rel="noreferrer" target="_blank">https://sccn.ucsd.edu/mailman/<wbr>listinfo/eeglablist</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.e<wbr>du</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:eeglablist-owner@sccn.ucsd.edu" target="_blank">eeglablist-owner@sccn.ucsd.edu</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of eeglablist digest..."<br>
<br>Today's Topics:<br>
<br>
   1. problem in BCILAB-1.1 version (brian baloch)<br>
   2. Re: Units in output of timefreq - wavelet normalization<br>
      (Norman Forschack)<br>
   3. uimenu issue (Quitadamo, Lucia)<br>
   4. BCI-Lab question (Alex Abe)<br>
   5. Re: headplot.m and 2014b -- can't seem to plot a head (Nick Wan)<br>
   6. Re: Trigger manipulation (Stephen Politzer-Ahles)<br>
   7. Re: Trigger manipulation (Tarik S Bel-Bahar)<br>
   8. Re: headplot.m and 2014b -- can't seem to plot a head<br>
      (Tarik S Bel-Bahar)<br>
   9. Re: Artifact rejection on continuous data (Tarik S Bel-Bahar)<br>
  10. SIFT resampling surrogate distributions with 1 trial<br>
      (Winslow Strong)<br>
<br><br>---------- Forwarded message ----------<br>From: brian baloch <<a href="mailto:brian.baloch@gmail.com" target="_blank">brian.baloch@gmail.com</a>><br>To: <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Sun, 14 Aug 2016 15:12:12 +0900<br>Subject: [Eeglablist] problem in BCILAB-1.1 version<br><div dir="ltr"><span style="font-size:12.8px">Respected Sir,</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">                      Hope you would be fine. Dear Sir, I am PhD student in South Korea. I am working on BCILAB. Sir, I am experiencing one problem in BCILAB software during online MATLAB visualization. I am using MATLAB2015b. it gives an error of " referred  data is non-existent". </div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">chunk.smax = p.buffer.smax + size(chunk.data,2);<br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I have been experiencing this error many days. Sir if you tell me solution for this, I will be thankful to you.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Thanks.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Regards</div><div style="margin:2px 0px 0px;font-size:12.8px"><div><img src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"></div></div></div>
<br><br>---------- Forwarded message ----------<br>From: Norman Forschack <<a href="mailto:forschack@cbs.mpg.de" target="_blank">forschack@cbs.mpg.de</a>><br>To: Andreas Widmann <<a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a>><br>Cc: eeglablist <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Date: Mon, 15 Aug 2016 18:19:58 +0200<br>Subject: Re: [Eeglablist] Units in output of timefreq - wavelet normalization<br>Dear all,<br>
<br>
I'd like to contribute from the perspective of a discussion on Mike Cohen's Blog.<br>
<br>
The initial question was, how to obtain an amplitude envelope of a given signal which has in fact the same amplitude as the given signal, right?<br>
So coming from Nicos signal:<br>
<br>
clear all<br>
D = 4;       % total signal duration in seconds.<br>
sigD = 1;    % duration of the test oscillation within the signal.<br>
F = 10;      % frequency of the test oscillationin Hz.<br>
P = .25;     % Phase of the test oscillation. 2 pi radians = 360 degrees<br>
srate = 256; % sampling rate, i.e. N points per sec used to represent sine wave.<br>
T = 1/srate; % sampling period, i.e. for this e.g. points at 1 ms intervals<br>
time = T:T:D; % time vector.<br>
<br>
sigpoints = length(time)/2 - (sigD*srate)/2:(length(time)/2 + (sigD*srate)/2)-1;<br>
mysig = zeros(1,D*srate);<br>
mysig(sigpoints) = sin(2*F*time(sigpoints)*pi+ 2*pi*P);<br>
<br>
one way to obtain equal amplitudes is to normalize the wavelet by its maximal value within the frequency domain:<br>
<br>
% some preparations<br>
mysig = mysig';<br>
ss = size(mysig);<br>
cycles = 4;<br>
dt = 1/srate;<br>
sf = F/cycles;<br>
s = 1./(2*pi*sf);<br>
t = (-4*s:dt:4*s)';<br>
nM = length(t);<br>
halfMsiz = (nM-1)/2;<br>
hz = linspace(0,srate/2,floor(nM/2)<wbr>+1);<br>
Ly = ss(1)*ss(2)+nM-1;<br>
Ly2=pow2(nextpow2(ss(1)*ss(2)+<wbr>nM-1));<br>
<br>
% fft of signal<br>
X=fft(reshape(mysig,ss(1)*ss(2<wbr>),1), Ly2);<br>
<br>
% building morlet wavelet (without a normalization factor)<br>
m =   exp(-t.^2/(2*s^2)).*exp(1i*2*<wbr>pi*F.*t);<br>
H = fft(m,Ly2); % fft of wavelet<br>
<br>
% normalize wavelet spectrum<br>
H = H./max(H);<br>
<br>
y =  ifft(X.*H,Ly2);<br>
y = y(floor(halfMsiz+1):Ly-ceil(ha<wbr>lfMsiz));<br>
y_amp = 2* abs(y);<br>
<br>
figure; plot(time,mysig,'b',time,y_amp<wbr>,'r')<br>
<br>
This seems to work for any combination of srate and cycles (except when number of cycles become large) because the signal spectrum is convolved by spectral wavelet values being maximally one.<br>
<br>
I have not fully worked my way through Andreas' example. It normalizes the wavelet in time, not in frequency domain as here. So it is probably not comparable.<br>
But doing time domain normalization within the lines above by just replacing the kernel formula:<br>
<br>
m =   exp(-t.^2/(2*s^2)).*exp(1i*2*<wbr>pi*F.*t) ./ sqrt(srate); % unit energy<br>
<br>
and commenting out the max(H) normalization, however, yields an amplitude envelope which is 2.5 times larger than the original signal amplitude and increases when the number of wavelet cycles is increased. But as Andreas suggestion referred to the dftfilt3 output, the matter becomes more complicated as this function uses it's own normalization factor:<br>
A = 1./sqrt(s*sqrt(pi));<br>
and there are problably some more relevant differences (not even going into the timefreq function).<br>
<br>
In sum, this post may have fostered the general confusion (or at least mine) but for a more puristic approach to the matter of wavelet normalization, the lines above might be of some value (kudos to mike x cohen, of course).<br>
<br>
All the best<br>
Norman<br>
<br>
<br>
----- On Aug 12, 2016, at 6:06 PM, Andreas Widmann <a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a> wrote:<br>
<br>
> Dear Niko,<br>
><br>
> I’m puzzled by this difference since a long time too (and as you have written a<br>
> book chapter on WT actually I would have hoped you could help resolving this<br>
> issue ;).<br>
><br>
> (Morlet) wavelet normalization always appeared somewhat arbitrary to me (as<br>
> signal amplitude will never be directly reflected across the whole TF plane for<br>
> peaky spectra/time courses). To my understanding the most common normalization<br>
> for wavelets is unit energy (and Gabor). The help text for timefreq states that<br>
> dftfilt3 is "exact Tallon Baudry“. TB (1998, JNeurosci) states that "Wavelets<br>
> were normalized so that their total energy was 1,…“.<br>
><br>
> The wavelets produced by dftfilt3 appear to always have an energy of srate (thus<br>
> they are *not* unit energy normalized?!):<br>
> [wavelet,cycles,freqresol,time<wbr>resol] = dftfilt3(F, ncycles, srate);<br>
> E = sum( abs( wavelet{ 1 } ) .^ 2 )<br>
> Consequently, to my understanding the correct „normfactor“ should be sqrt( E )<br>
> or better sqrt( srate ).<br>
><br>
> You might want to confirm by looking at the TF transform of the (real part of<br>
> the) wavelet itself<br>
> wavelet{ 1 } = wavelet{ 1 } / sqrt( srate ); % Unit energy normalize<br>
> mysig = zeros(1,D*srate);<br>
> delay = ceil( ( length( mysig ) - length( wavelet{ 1 } ) ) / 2 );<br>
> mysig( delay:delay + length(  wavelet{ 1 } ) - 1 )  = real( wavelet{ 1 } ) * 2;<br>
> % Discard imag part<br>
> normfactor = sqrt( srate );<br>
> which should now have a peak amplitude of 1 (independent of sampling rate and<br>
> signal duration).<br>
><br>
> As the issue appears to be not only in EEGLAB but also other implementations, I<br>
> always assumed my reasoning to be incorrect. Is it? What am I missing?<br>
><br>
> Best,<br>
> Andreas<br>
><br>
>> Am 10.08.2016 um 11:58 schrieb Niko Busch <<a href="mailto:niko.busch@gmail.com" target="_blank">niko.busch@gmail.com</a>>:<br>
>><br>
>> Dear Makoto (and everyone who replied to me personally regarding this post),<br>
>><br>
>> thank you for your reply! I see that the result of the wavelet transform inside<br>
>> the timefreq function is dependent on the length of the signal, which in turn<br>
>> is dependent on the number of cycles and sampling rate. However, simply<br>
>> dividing by the length of the wavelet does not seem to be the solution either.<br>
>> I modified the code below by including a "normalization factor", which<br>
>> currently is simply the length of the wavelet. Dividing the wavelet transformed<br>
>> amplitudes by this factor gives the right order of magnitude, but the results<br>
>> are still quite off. By increasing the sampling rate or number of cycles, the<br>
>> results are even more off. I believe we are on the right track, but something<br>
>> is still missing. Do you have any ideas?<br>
>><br>
>> Cheers,<br>
>> Niko<br>
>><br>
>> %% Create sine wave<br>
>> clear all<br>
>> D = 4;       % total signal duration in seconds.<br>
>> sigD = 1;    % duration of the test oscillation within the signal.<br>
>> F = 10;      % frequency of the test oscillationin Hz.<br>
>> P = .25;     % Phase of the test oscillation. 2 pi radians = 360 degrees<br>
>> srate = 256; % sampling rate, i.e. N points per sec used to represent sine wave.<br>
>> T = 1/srate; % sampling period, i.e. for this e.g. points at 1 ms intervals<br>
>> t = [T:T:D]; % time vector.<br>
>><br>
>> sigpoints = length(t)/2 - (sigD*srate)/2:(length(t)/2 + (sigD*srate)/2)-1;<br>
>> mysig = zeros(1,D*srate);<br>
>> mysig(sigpoints) = sin(2*F*t(sigpoints)*pi+ 2*pi*P);<br>
>><br>
>> %% TF computation<br>
>> ncycles = 4;<br>
>><br>
>> [wavelet,cycles,freqresol,time<wbr>resol] = dftfilt3(F, ncycles, srate);<br>
>> normfactor = length(wavelet{1});<br>
>><br>
>> [tf, outfreqs, outtimes] = timefreq(mysig', srate, ...<br>
>>     'cycles', ncycles, 'wletmethod', 'dftfilt3', 'freqscale', 'linear', ...<br>
>>     'freqs', F);<br>
>><br>
>> %% Plot<br>
>> figure; hold all<br>
>> plot(t,mysig);<br>
>> plot(outtimes./1000,abs(tf)./n<wbr>ormfactor)<br>
>> xlabel('Time (seconds)');<br>
>> ylabel('Amplitude');<br>
>> legend('input signal', 'wavelet result')<br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/ee<wbr>glabmail.html</a><br>
>> To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu" target="_blank">eeglablist-unsubscribe@sccn.uc<wbr>sd.edu</a><br>
>> For digest mode, send an email with the subject "set digest mime" to<br>
>> <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.e<wbr>du</a><br>
><br>
> ______________________________<wbr>_________________<br>
> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/ee<wbr>glabmail.html</a><br>
> To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu" target="_blank">eeglablist-unsubscribe@sccn.uc<wbr>sd.edu</a><br>
> For digest mode, send an email with the subject "set digest mime" to<br>
> <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.e<wbr>du</a><br>
<br>
<br><br>---------- Forwarded message ----------<br>From: "Quitadamo, Lucia" <<a href="mailto:l.quitadamo@aston.ac.uk" target="_blank">l.quitadamo@aston.ac.uk</a>><br>To: "<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>" <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Sat, 13 Aug 2016 15:20:20 +0000<br>Subject: [Eeglablist] uimenu issue<br>





<div lang="EN-GB" link="#0563C1" vlink="#954F72">
<div>
<p class="MsoNormal">Hello everybody,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I am creating an EEGLAB plugin for the analysis and detection of high-frequency oscillations (HFOs). I have created a set of functions which can be called by means of a list of uimenus which I already integrated in the EEGLAB interface.
 I would like to enable some of the uimenus only if some variables  (created by different functions) are present in the workspace. Do you know how to do that? I have tried with “userdata” property, but I have been able just to disable the uimenu at the startup.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks for your support.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Lucia<u></u><u></u></p>
</div>
</div>

<br><br>---------- Forwarded message ----------<br>From: Alex Abe <<a href="mailto:nabra005@odu.edu" target="_blank">nabra005@odu.edu</a>><br>To: <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Fri, 12 Aug 2016 13:55:17 -0400<br>Subject: [Eeglablist] BCI-Lab question<br><div dir="ltr">Hi, <div><br></div><div>I am running the search function in BCI_lab, and it is giving me an error which I am not able to solve. Can any BCI_lab expert help me out ? If I do not use search, the program compiles without an error and provides an output. </div><div><br></div><div>I am using Matlab 2014a version. I tried running on 2011a and it still gives me the same error. Do let me know if you need any other info. </div><div><br></div><div>My command line that calls the search function is as follows: </div><div><br></div><div><div>myapproach = {'CSP' 'SignalProcessing',{'EpochExtr<wbr>action',[search(0:0.5:1.0),<wbr>search(2.0:0.5:3.0)],'FIRFilte<wbr>r',[6 8 29 30]}};</div><div><br></div><div><br></div><div>The error I receive is below:</div><div><br></div><div><br></div><div><br></div><div><div>Attempt to reference field of non-structure array.</div><div><br></div><div>Error in ParadigmBaseSimplified>@(x)len<wbr>gth(x.streams)>1 (line 168)</div><div>                if any(cellfun(@(x)length(x.strea<wbr>ms) > 1,collection))</div><div><br></div><div>Error in ParadigmBaseSimplified/calibra<wbr>te (line 168)</div><div>                if any(cellfun(@(x)length(x.strea<wbr>ms) > 1,collection))</div><div><br></div><div>Error in bci_train/@(varargin)instance.<wbr>calibrate(varargin{:})</div><div><br></div><div><br></div><div><br></div><div>Error in</div><div>bci_train>@(trainset,varargin)<wbr>utl_complete_model(calibrate_f<wbr>unc('collection',{trainset},va<wbr>rargin{:}),predict_func)</div><div>(line 704)</div><div>        'trainer', @(trainset,varargin)</div><div>        utl_complete_model(calibrate_f<wbr>unc('collection',{trainset},va<wbr>rargin{:}),predict_func), ...</div><div><br></div><div>Error in utl_evaluate_fold (line 29)</div><div>    model = opts.trainer(trainset,opts.arg<wbr>s{:});</div><div><br></div><div>Error in par_beginschedule (line 157)</div><div>            sched(t) = {{t,tasks{t}{1}(tasks{t}{2:end<wbr>})}}; end</div><div><br></div><div>Error in par_schedule (line 60)</div><div>id = par_beginschedule(tasks,opts);</div><div><br></div><div>Error in utl_crossval (line 200)</div><div>    results = par_schedule(tasks, 'engine',opts.engine_cv, 'pool',opts.pool, 'policy',opts.policy);</div><div><br></div><div>Error in utl_searchmodel>@(varargin)utl<wbr>_crossval(data,nestedcv_ctrl,'<wbr>args',varargin) (line 147)</div><div>    objective_function = @(varargin) utl_crossval(data,nestedcv_ctr<wbr>l,'args',varargin);</div><div><br></div><div>Error in hlp_wrapresults (line 51)</div><div>        [a{1:len}] = f(varargin{:});</div><div><br></div><div>Error in par_beginschedule (line 157)</div><div>            sched(t) = {{t,tasks{t}{1}(tasks{t}{2:end<wbr>})}}; end</div><div><br></div><div>Error in par_schedule (line 60)</div><div>id = par_beginschedule(tasks,opts);</div><div><br></div><div>Error in utl_gridsearch (line 146)</div><div>outputs = par_schedule(tasks, 'engine',opts.engine_gs,'pool'<wbr>,opts.pool,'policy',opts.polic<wbr>y);</div><div><br></div><div>Error in utl_searchmodel (line 156)</div><div>    [stats.bestidx,stats.inputs,st<wbr>ats.outputs] = utl_gridsearch(gridsearch_ctrl<wbr>, opts.args{:});</div><div><br></div><div>Error in utl_nested_crossval>@(P,vararg<wbr>in)utl_searchmodel(P,opts,'<wbr>scheme',opts.opt_scheme) (line 98)</div><div>    opts.trainer = @(P,varargin) utl_searchmodel(P,opts,'scheme<wbr>',opts.opt_scheme);</div><div><br></div><div>Error in utl_evaluate_fold (line 29)</div><div>    model = opts.trainer(trainset,opts.arg<wbr>s{:});</div><div><br></div><div>Error in par_beginschedule (line 157)</div><div>            sched(t) = {{t,tasks{t}{1}(tasks{t}{2:end<wbr>})}}; end</div><div><br></div><div>Error in par_schedule (line 60)</div><div>id = par_beginschedule(tasks,opts);</div><div><br></div><div>Error in utl_crossval (line 200)</div><div>    results = par_schedule(tasks, 'engine',opts.engine_cv, 'pool',opts.pool, 'policy',opts.policy);</div><div><br></div><div>Error in utl_nested_crossval (line 102)</div><div>[measure,stats] = utl_crossval(data, opts, 'scheme',opts.eval_scheme);</div><div><br></div><div>Error in bci_train>run_computation (line 759)</div><div>    [measure,stats] = utl_nested_crossval(opts.data, crossval_args{:});</div><div><br></div><div>Error in hlp_scope>make_func/@(f,a,fram<wbr>e__f1)feval(f,a{:})</div><div><br></div><div><br></div><div><br></div><div>Error in hlp_scope (line 51)</div><div>[varargout{1:nargout}] = func(f,varargin);</div><div><br></div><div>Error in bci_train (line 730)</div><div>[measure,model,stats] =</div><div>hlp_scope({'fingerprint_check'<wbr>,0,'fingerprint_create',0},@ru<wbr>n_computation,opts,crossval_ar<wbr>gs);</div></div><div><br></div><div><br></div><div><br></div><div>Alex</div></div></div>
<br><br>---------- Forwarded message ----------<br>From: Nick Wan <<a href="mailto:nickwan@aggiemail.usu.edu" target="_blank">nickwan@aggiemail.usu.edu</a>><br>To: EEGLAB List <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Fri, 12 Aug 2016 20:48:36 -0600<br>Subject: Re: [Eeglablist] headplot.m and 2014b -- can't seem to plot a head<br><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif;font-size:small">Hi all, I figured it out. Wasn't converting my angles file right! </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 12, 2016 at 3:23 AM, Nick Wan <span dir="ltr"><<a href="mailto:nickwan@aggiemail.usu.edu" target="_blank">nickwan@aggiemail.usu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif;font-size:small">Hi all,</div><div style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small">I tried to run</div><div style="font-family:arial,helvetica,sans-serif;font-size:small">>>headplot example</div><div style="font-family:arial,helvetica,sans-serif;font-size:small">It ran, but the plot came up blank. I can rotate the plot, but it's just an empty plot, no head model or anything. I'm running 13.4.3b on r2014b. EEGLAB is at the top of my path list, followed by MATLAB toolboxes.</div><div style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small">I tried loading in the sample dataset but that also didn't render the 3D plot.</div><div style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:small">Any help would be much appreciated! </div><span><font color="#888888"><div><br></div>-- <br><div data-smartmail="gmail_signature"><div dir="ltr">Nick Wan<div>Graduate Student</div><div><br></div><div><div style="font-size:small;font-family:arial,helvetica,sans-serif">Utah State University Psychology Department</div><div style="font-size:small;font-family:arial,helvetica,sans-serif"><span style="background-color:rgb(255,255,255)">2810 <span>Old</span> <span>Main</span> <span>Hill</span></span></div><div style="font-size:small;font-family:arial,helvetica,sans-serif">Logan, UT 84322</div></div><div><br></div><div>Office: HSRC 004</div><div>Phone: <a href="tel:435-554-8788" value="+14355548788" target="_blank">435-554-8788</a></div><div>Blog: <a href="http://truebra.in" target="_blank">truebra.in</a></div></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div data-smartmail="gmail_signature"><div dir="ltr">Nick Wan<div>Graduate Student</div><div><br></div><div><div style="font-size:small;font-family:arial,helvetica,sans-serif">Utah State University Psychology Department</div><div style="font-size:small;font-family:arial,helvetica,sans-serif"><span style="background-color:rgb(255,255,255)">2810 <span>Old</span> <span>Main</span> <span>Hill</span></span></div><div style="font-size:small;font-family:arial,helvetica,sans-serif">Logan, UT 84322</div></div><div><br></div><div>Office: HSRC 004</div><div>Phone: <a href="tel:435-554-8788" value="+14355548788" target="_blank">435-554-8788</a></div><div>Blog: <a href="http://truebra.in" target="_blank">truebra.in</a></div></div></div>
</div>
<br><br>---------- Forwarded message ----------<br>From: Stephen Politzer-Ahles <<a href="mailto:politzerahless@gmail.com" target="_blank">politzerahless@gmail.com</a>><br>To: "Haggarty, Connor" <<a href="mailto:C.J.Haggarty@2014.ljmu.ac.uk" target="_blank">C.J.Haggarty@2014.ljmu.ac.uk</a>><br>Cc: "<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>" <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Date: Sat, 13 Aug 2016 06:08:07 +0800<br>Subject: Re: [Eeglablist] Trigger manipulation<br><div dir="ltr"><div><div>EEGLAB doesn't have built-in function for this, but ERPLAB's 
binlister can do it. Alternatively, you can just write a MATLAB loop 
that does it; there should be an example or two in some of my previous 
messages on this list.<br><br></div>Best,<br></div>Steve</div><div class="gmail_extra"><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br></div><span><div>---<br></div>Stephen Politzer-Ahles<br>University of Oxford<br>Language and Brain Lab<br>Faculty of Linguistics, Phonetics & Philology<br><a href="http://users.ox.ac.uk/%7Ecpgl0080/" target="_blank">http://users.ox.ac.uk/~cpgl008<wbr>0/</a></span><a href="http://www.nyu.edu/projects/politzer-ahles/" target="_blank"></a></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Sat, Aug 13, 2016 at 6:07 AM, Stephen Politzer-Ahles <span dir="ltr"><<a href="mailto:stephen.politzer-ahles@ling-phil.ox.ac.uk" target="_blank">stephen.politzer-ahles@ling-p<wbr>hil.ox.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><div dir="ltr"><div><div>EEGLAB doesn't have built-in function for this, but ERPLAB's 
binlister can do it. Alternatively, you can just write a MATLAB loop 
that does it; there should be an example or two in some of my previous 
messages on this list.<br><br></div>Best,<br></div>Steve</div></span><div class="gmail_extra"><span><br clear="all"><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><span><div><br><br>---<br></div>Stephen Politzer-Ahles<br>University of Oxford<br>Language and Brain Lab<br>Faculty of Linguistics, Phonetics & Philology<br><a href="http://users.ox.ac.uk/~cpgl0080/" target="_blank">http://users.ox.ac.uk/~cpgl008<wbr>0/</a></span></div></div></div></div></div></div></div>
<br></span><div class="gmail_quote"><span>On Fri, Aug 12, 2016 at 9:07 PM, Haggarty, Connor <span dir="ltr"><<a href="mailto:C.J.Haggarty@2014.ljmu.ac.uk" target="_blank">C.J.Haggarty@2014.ljmu.ac.uk</a>></span> wrote:<br></span><div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
<br>
<br>
I have a question about changing trigger codes for epochs.<br>
<br>
I am completing a study with somatosensory stimuli.<br>
<br>
One trigger is sent by E-Prime which codes the speed of stroking touch (delivered by the experimenter), sometime after this a trigger is sent from a laser showing the exact point at which the experimenter first touches the participant.<br>
<br>
The laser is the precise onset of touch however, this code is the same each time. In order to epoch and bin these data properly I need a way to code the laser trigger so that it is an addition (or some calculation) of the previous (stimulus type) trigger and the precise stimulus laser onset trigger.<br>
<br>
Is there some function in EEGLab or some coding that will allow me to do this?<br>
<br>
<br>
<br>
Thank you<br>
<br>
<br>
<br>
Connor<br>
<br>
______________________________<wbr>__<br>
Important Notice: the information in this email and any attachments is for the sole use of the intended recipient(s). If you are not an intended recipient, or a person responsible for delivering it to an intended recipient, you should delete it from your system immediately without disclosing its contents elsewhere and advise the sender by returning the email or by telephoning a number contained in the body of the email. No responsibility is accepted for loss or damage arising from viruses or changes made to this message after it was sent. The views contained in this email are those of the author and not necessarily those of Liverpool John Moores University.<br>
______________________________<wbr>_________________<br>
Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/ee<wbr>glabmail.html</a><br>
To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu" target="_blank">eeglablist-unsubscribe@sccn.uc<wbr>sd.edu</a><br>
For digest mode, send an email with the subject "set digest mime" to <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.e<wbr>du</a><br>
</blockquote></div></div></div><br></div>
</blockquote></div><br></div>
<br><br>---------- Forwarded message ----------<br>From: Tarik S Bel-Bahar <<a href="mailto:tarikbelbahar@gmail.com" target="_blank">tarikbelbahar@gmail.com</a>><br>To: "Haggarty, Connor" <<a href="mailto:C.J.Haggarty@2014.ljmu.ac.uk" target="_blank">C.J.Haggarty@2014.ljmu.ac.uk</a>><br>Cc: "<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>" <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Date: Sat, 13 Aug 2016 21:35:54 -0400<br>Subject: Re: [Eeglablist] Trigger manipulation<br>Hello Connor,some notes below, best wishes.<br>
<br>
<br>
******************************<wbr>******************************<wbr>*****************<br>
If you haven't had a chance to, google eeglablist for the past<br>
mentions and suggestions regarding changing events. "eeglablist + edit<br>
events". There should  be some code examples there too. Here are some<br>
recent ones. Check out the function eeg_addnewevents too.<br>
<a href="https://sccn.ucsd.edu/pipermail/eeglablist/2015/009246.html" rel="noreferrer" target="_blank">https://sccn.ucsd.edu/pipermai<wbr>l/eeglablist/2015/009246.html</a><br>
<a href="https://sccn.ucsd.edu/pipermail/eeglablist/2015/009265.html" rel="noreferrer" target="_blank">https://sccn.ucsd.edu/pipermai<wbr>l/eeglablist/2015/009265.html</a><br>
<br>
There's a range of ways to edit the events, including through the GUI,<br>
by importing events, and via scripts that modify the EEG.event<br>
structure. These should all be documented on the wiki and eeglablist.<br>
<br>
You can go to Edit > EEG events, modify or add an event, and after<br>
closing the gui window for event editing, type eegh to see the Event<br>
Editing command script that was run, which you can copy, modify.<br>
You'll also want to check help documentation for the function that<br>
gets run. For example one can create a loop in a small script that go<br>
through each of the events, has a counter for each kind of event<br>
you're looking for, and then modifies the label. You could do it event<br>
by event in loop, or you could have variables to hold the times and<br>
labels, and then use the eeg_addnewevents function to update the whole<br>
event structure.<br>
<br>
Google the following eeglab wiki pages.<br>
Chapter_03:_Event_Processing<br>
A02: Importing Event Epoch Info - SCCN<br>
<br>
See also the IV.4.3.EEG.event portion of the eeglab tutorial mirror here:<br>
<a href="http://cognitrn.psych.indiana.edu/busey/temp/eeglabtutorial4.301/scripttut/script_tutorial.html#EEG.event" rel="noreferrer" target="_blank">cognitrn.psych.indiana.edu/bus<wbr>ey/temp/eeglabtutorial4.301/<wbr>scripttut/script_tutorial.html<wbr>#EEG.event</a>:<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Fri, Aug 12, 2016 at 9:07 AM, Haggarty, Connor<br>
<<a href="mailto:C.J.Haggarty@2014.ljmu.ac.uk" target="_blank">C.J.Haggarty@2014.ljmu.ac.uk</a>> wrote:<br>
> Hi,<br>
><br>
><br>
><br>
> I have a question about changing trigger codes for epochs.<br>
><br>
> I am completing a study with somatosensory stimuli.<br>
><br>
> One trigger is sent by E-Prime which codes the speed of stroking touch (delivered by the experimenter), sometime after this a trigger is sent from a laser showing the exact point at which the experimenter first touches the participant.<br>
><br>
> The laser is the precise onset of touch however, this code is the same each time. In order to epoch and bin these data properly I need a way to code the laser trigger so that it is an addition (or some calculation) of the previous (stimulus type) trigger and the precise stimulus laser onset trigger.<br>
><br>
> Is there some function in EEGLab or some coding that will allow me to do this?<br>
><br>
><br>
><br>
> Thank you<br>
><br>
><br>
><br>
> Connor<br>
><br>
> ______________________________<wbr>__<br>
> Important Notice: the information in this email and any attachments is for the sole use of the intended recipient(s). If you are not an intended recipient, or a person responsible for delivering it to an intended recipient, you should delete it from your system immediately without disclosing its contents elsewhere and advise the sender by returning the email or by telephoning a number contained in the body of the email. No responsibility is accepted for loss or damage arising from viruses or changes made to this message after it was sent. The views contained in this email are those of the author and not necessarily those of Liverpool John Moores University.<br>
> ______________________________<wbr>_________________<br>
> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/ee<wbr>glabmail.html</a><br>
> To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu" target="_blank">eeglablist-unsubscribe@sccn.uc<wbr>sd.edu</a><br>
> For digest mode, send an email with the subject "set digest mime" to <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.e<wbr>du</a><br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Tarik S Bel-Bahar <<a href="mailto:tarikbelbahar@gmail.com" target="_blank">tarikbelbahar@gmail.com</a>><br>To: Nick Wan <<a href="mailto:nickwan@aggiemail.usu.edu" target="_blank">nickwan@aggiemail.usu.edu</a>><br>Cc: EEGLAB List <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Date: Sat, 13 Aug 2016 22:03:56 -0400<br>Subject: Re: [Eeglablist] headplot.m and 2014b -- can't seem to plot a head<br><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div style="color:rgb(51,51,153)">Hello Nick, there may be a problem with that example, feel free to report it on eeglab bugzilla. The steps below take 5 minutes and give you a headplot with sample data you can find in your full eeglab folder. As usual, googling eeglablist and reviewing the eeglab tutorial for your topics can be helpful.</div><div style="color:rgb(51,51,153)"><br></div><div style="color:rgb(51,51,153)"><br></div><div style="color:rgb(51,51,153)"><br></div><div style="color:rgb(51,51,153)">******************************<wbr>******************************<wbr>***************</div><div style="color:rgb(51,51,153)">The headplot requires co-registration of the correct channels with the head, for the currently loaded file. The loaded data also needs to be epoched data, I believe.</div><div style="color:rgb(51,51,153)"><br></div><div style="color:rgb(51,51,153)">If you haven't had chance to yet, review the following pages and similar pages: <a href="https://sccn.ucsd.edu/wiki/Chapter_06:_Data_Averaging" target="_blank">https://sccn.ucsd.edu/wiki/Cha<wbr>pter_06:_Data_Averaging</a></div><div style="color:rgb(51,51,153)">This shows you how to make plots with tutorial data, an important step.</div><div style="color:rgb(51,51,153)"><br></div><div style="color:rgb(51,51,153)">To get 3d headplots now quickly and easily, do the following steps:</div><div style="color:rgb(51,51,153)"><br></div><div style="color:rgb(51,51,153)">Go to the "sample data" folder in your eeglab folder.</div><div style="color:rgb(51,51,153)">Load the file "eeglab_data_epochs_ica.set"</div><div style="color:rgb(51,51,153)">In case you haven't tried the full tutorial yet, this file is used in the online eeglab tutorial pages.</div><div><font color="#333399"><br></font></div><div><font color="#333399">Then try either of the following from the GUI</font></div><div><span style="color:rgb(51,51,153)">Plot > Erp Map Series > 3D</span><br></div><div><font color="#333399">Then go to Plot > Components > 3D</font></div><div><font color="#333399"><br></font></div><div><span style="color:rgb(51,51,153)">You need to specify a specific time or a specific component in the respective gui window. But leave everything else with defaults. </span></div><div><font color="#333399">In both cases (ERPS or Components) you should see a Tailarach transformation matrix already in the GUI window that pops up. You can click Manual registration if you want to show yourself that the electrode locations are properly co-registered with the head (they are). </font></div><div><font color="#333399">This is the transformation matrix that should be in there:</font></div><div><font color="#333399">-0.355789     -6.33688      12.3705    0.0533239    0.0187461     -1.55264      1.06367     0.987721     0.932694<br></font></div><div><font color="#333399"><br></font></div><div><font color="#333399">Then click OK, and a "example" figure should pop up! Yes ?</font></div><div><font color="#333399"><br></font></div><div><font color="#333399">*Remember to check google eeglablist and check the online tutorial for your topics of interest.</font></div><div><font color="#333399"><br></font></div><div><br></div><div><span style="color:rgb(51,51,153)"><br></span></div><div><br></div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div></div></div>
</div>
<br><br>---------- Forwarded message ----------<br>From: Tarik S Bel-Bahar <<a href="mailto:tarikbelbahar@gmail.com" target="_blank">tarikbelbahar@gmail.com</a>><br>To: <<a href="mailto:colivero@sri.utoronto.ca" target="_blank">colivero@sri.utoronto.ca</a>><br>Cc: eeglablist <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Date: Sat, 13 Aug 2016 22:07:00 -0400<br>Subject: Re: [Eeglablist] Artifact rejection on continuous data<br>Hello,<br>
If you're using ERPLAB primarily, you'll want to check with the ERPLAB<br>
user list.<br>
See link below for info on basic artifact rejection in eeglab<br>
<a href="https://sccn.ucsd.edu/wiki/Chapter_01:_Rejecting_Artifacts" rel="noreferrer" target="_blank">https://sccn.ucsd.edu/wiki/Cha<wbr>pter_01:_Rejecting_Artifacts</a><br>
There are also multiple options for data rejection available inside<br>
eeglab, both traditional and ICA based.<br>
Cheers!<br>
<br>
<br>
<br>
On Thu, Aug 11, 2016 at 3:14 PM,  <<a href="mailto:colivero@sri.utoronto.ca" target="_blank">colivero@sri.utoronto.ca</a>> wrote:<br>
> Hello,<br>
><br>
> I am doing artifact rejection on continuous data using ERPLAB. When I run<br>
> it, it shows me the scroll plot for me to go over and double check with<br>
> the marked areas that exceeded the threshold I choose. Is there a way to<br>
> deselect/unreject some of these marked for rejection areas? I know that if<br>
> you click on the area it deselects but when I press reject it still<br>
> rejects the areas I deselected. Sometimes it marks areas around my event<br>
> markers but I do not want these deleted.<br>
><br>
> Any help is greatly appreciated.<br>
><br>
> Thank you<br>
><br>
> ______________________________<wbr>_________________<br>
> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/ee<wbr>glabmail.html</a><br>
> To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu" target="_blank">eeglablist-unsubscribe@sccn.uc<wbr>sd.edu</a><br>
> For digest mode, send an email with the subject "set digest mime" to <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.e<wbr>du</a><br>
<br>
<br><br>---------- Forwarded message ----------<br>From: Winslow Strong <<a href="mailto:winslow.strong@gmail.com" target="_blank">winslow.strong@gmail.com</a>><br>To: <<a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a>><br>Cc: <br>Date: Sat, 13 Aug 2016 16:57:26 -0700<br>Subject: [Eeglablist] SIFT resampling surrogate distributions with 1 trial<br><div dir="ltr">I'd like to use a resampling technique (e.g. bootstrap) to get p-values and test stats for SIFT connectivity metrics for 1 subject across n conditions.  <div><br></div><div>This is a steady-state condition study, hence there's only 1 trial per condition.  I'm trying to analyze whether certain connectivity metrics (i.e. their averages over a condition) are statistically significantly different across the conditions.  I was under the impression I could use SIFT's surrogate distribution generator to obtain the surrogate distribution for these calculations, but when I run that from the GUI for bootstrap, I get the error:</div><div><br></div><div>"Unable to compute bootstrap distributions for a single trial"</div><div><br></div><div>Is this surrogate function only designed to do boostrapping over trials? Or is there a way to do it over windows within a condition?</div></div>
<br>______________________________<wbr>_________________<br>
eeglablist mailing list <a href="mailto:eeglablist@sccn.ucsd.edu" target="_blank">eeglablist@sccn.ucsd.edu</a><br>
Eeglablist page: <a href="http://www.sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://www.sccn.ucsd.edu/eegla<wbr>b/eeglabmail.html</a><br>
To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsub@sccn.ucsd.edu" target="_blank">eeglablist-unsub@sccn.ucsd.edu</a><br>
To switch to non-digest mode, send an empty email to <a href="mailto:eeglablist-nodigest@sccn.ucsd.edu" target="_blank">eeglablist-nodigest@sccn.ucsd.<wbr>edu</a><br></blockquote></div><br></div></div></div>
<br>______________________________<wbr>_________________<br>
eeglablist mailing list <a href="mailto:eeglablist@sccn.ucsd.edu">eeglablist@sccn.ucsd.edu</a><br>
Eeglablist page: <a href="http://www.sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://www.sccn.ucsd.edu/<wbr>eeglab/eeglabmail.html</a><br>
To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsub@sccn.ucsd.edu">eeglablist-unsub@sccn.ucsd.edu</a><br>
To switch to non-digest mode, send an empty email to <a href="mailto:eeglablist-nodigest@sccn.ucsd.edu">eeglablist-nodigest@sccn.ucsd.<wbr>edu</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>James Jones-Rounds</div>Laboratory Manager<br>Human Development EEG and Psychophysiology (HEP) Laboratory,<div>Department of Human Development,<br>--------------------------------------------<br>Cornell University | Ithaca, NY<br></div><div>607-255-9883</div><div><a href="mailto:eeg@cornell.edu" target="_blank">eeg@cornell.edu</a></div></div></div>
</div></div></div>