<div dir="ltr">
















<p class="MsoNormal"><span lang="NL">Dear Jörn,</span></p>

<p class="MsoNormal"><span lang="NL"> </span></p>

<p class="MsoNormal"><span lang="NL">Thanks for your reply and suggestion! My
neighbourhood-definitions look fine according to ft_neighbourplot. </span></p>

<p class="MsoNormal"><span lang="NL">However, I am not sure whether the
connectivity matrix in my output (stat.cfg.connectivity) is correct. For
example, I inspected which channels are defined as neighbours of C5 in the
connectivity matrix. Here, I assumed the channel order in this matrix resembles
the channel order defined by the function ‘ft_read_sens’, as stored in the
field elec.label.</span></p>

<p class="MsoNormal"><span lang="NL">Using this particular organization of
electrodes, the pattern of spatially neighbouring channels matches the strange
spatial distribution of one of my resulting clusters.</span></p>

<p class="MsoNormal"><span lang="NL">E.g., C5 seems to neighbour FC4 and Cz (among
others). This pattern matches my strange result, where a cluster consisting of
FC4, Cz, and C5, survived cluster correction with minnbchan set to 2.</span></p>

<p class="MsoNormal"><span lang="NL"> </span></p>

<p class="MsoNormal"><span lang="NL">I am currently trying to establish whether my cfg.connectivity
matrix is indeed the problem, and where this problem arises. One thing I
suspect might be the cause is that the call to ‘channelconnectivity’ by ‘ft_statistics_montecarlo’ to construct the spatial neighbour structure, goes wrong. When I try to apply
‘channelconnectivity’ on my cfg structure directly (but not when running ft_freqstatistics), I get the following error <i>‘Undefined function 'channelconnectivity' for input arguments of type
'struct'’</i>. </span></p>

<p class="MsoNormal"><span lang="NL">If channelconnectivity was not properly run,
it could be that the electrode ordering as defined by ft_read_sens is not
adjusted to the order used by cfg.neighbours before construction of the
connectivity matrix. However, when I just run ft_freqstatistics, I do not get
an error that suggests any problems with ‘channelconnectivity’, so I am not
entirely sure whether this error also occurs when running the analysis as a
whole.</span></p>

<p class="MsoNormal"><span lang="NL"> </span></p>

<p class="MsoNormal"><span lang="NL">Could you (or anyone else) give me any advice
on how to make sure that the definition of neighbours in the connectivity
matrix is constructed using the properly reordered vector with channel indices
(the variable sel2 in channelconnectivity if I’m correct)? </span></p>

<p class="MsoNormal"><span lang="NL"> </span></p>

<p class="MsoNormal"><span lang="NL">Thanks in advance!</span></p>

<p class="MsoNormal"><span lang="NL"> </span></p>

<p class="MsoNormal"><span lang="NL">Best,</span></p>

<p class="MsoNormal"><span lang="NL">Marlies</span></p>

</div><div class="gmail_extra"><br><div class="gmail_quote">On 3 August 2015 at 09:37, Jörn M. Horschig <span dir="ltr"><<a href="mailto:jorn@artinis.com" target="_blank">jorn@artinis.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Dear Marlies,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">if I am not mistaken, the minnbchan option checks indeed if every channels in a  cluster has at least the specified amount of channels in it and removes it otherwise. The code is documented as follows:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">    % For every (time,frequency)-element, it is calculated how many significant<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">    % neighbours .this channel has If a significant channel has less than minnbchan<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">    % significant neighbours, then this channel is removed from onoff.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">If something went wrong is hard to tell – it also depends on how the neighbor structure looks like. If you do not have C3 or C1, then C5 can indeed be defined as a neighbor of Cz, and if you do not have FC2, then Cz could be called a neighbor of FC4. You can check how neighbors are defined by using ft_neighbourplot. That’s the first check I’d do.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Best,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Jörn<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><div><p class="MsoNormal"><b><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#626264">--<u></u><u></u></span></b></p><p class="MsoNormal"><b><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#255a9e"><u></u> <u></u></span></b></p><p class="MsoNormal"><b><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#255a9e">Jörn M. Horschig, PhD</span></b><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#626264">, Software Engineer</span><b><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:black"><u></u><u></u></span></b></p><p class="MsoNormal"><a href="http://www.artinis.com/" target="_blank"><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#626264">Artinis Medical Systems</span></a><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#626264">  |  <a href="tel:%2B31%20481%20350%20980" value="+31481350980" target="_blank">+31 481 350 980</a> </span><b><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#255a9e"><u></u><u></u></span></b></p></div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt"><div><div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <a href="mailto:fieldtrip-bounces@science.ru.nl" target="_blank">fieldtrip-bounces@science.ru.nl</a> [mailto:<a href="mailto:fieldtrip-bounces@science.ru.nl" target="_blank">fieldtrip-bounces@science.ru.nl</a>] <b>On Behalf Of </b>Marlies Vissers<br><b>Sent:</b> Friday, July 31, 2015 3:27 PM<br><b>To:</b> fieldtrip, donders <<a href="mailto:fieldtrip@donders.ru.nl" target="_blank">fieldtrip@donders.ru.nl</a>><br><b>Subject:</b> [FieldTrip] Effect of cfg.minnbchan<u></u><u></u></span></p></div></div><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Dear Fieldtrippers. <u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I have a question about the effect of the tuning parameter cfg.minnbchan when performing cluster based permutation testing, since the spatial characteristics of my clusters differ from what I expected to find given the settings I used.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I am running cross-subject correlations (n=31) between a behavioral variable and a subj*channel*time*frequency matrix with power data (preprocessed using EEGlab and decomposed outside of Fieldtrip), using ft_freqstatistics with the function 'ft_statfun_intersubcorr'. Since I'd like to avoid finding clusters with difficult-to-interpret shapes, I set cfg.minnbchan to 2.  <u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">My concern however, is that the resulting clusters do not always exist of neighbouring electrodes. For example, one of the resulting clusters is located at channels C5, Cz & FC4 (EEG, 64 electrodes), which are connected through the other dimensions (time & frequency). In one of Eric Maris' previous replies to an older post about cfg.minnbchan, I read that the parameter cfg.minnbchan only concerns spatial (not time/freq) neighbours. Does this mean that any cluster without spatially neighbouring electrodes should have been rejected when minnbchan is set to 2?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I would be very grateful if someone could let me know whether setting cfg.minnbchan to 2 can -in principle- still yield clusters with spatially-non-adjacent electrodes, or whether this result is likely due to an error in my code. If the latter, I'd very much appreciate advice on checks I could perform to detect the potential error.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">The code I used to run this analysis is pasted below.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks in advance!<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Best,<u></u><u></u></p></div><div><p class="MsoNormal">Marlies<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:gray">Marlies Vissers </span><u></u><u></u></p></div><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:gray">PhD student </span><u></u><u></u></p></div><div><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:gray">University of Amsterdam | Department Brain and Cognition | Cognition and Plasticity Laboratory</span></span><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"><u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="NL" style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:gray">Weesperplein 4 | 1018 XA Amsterdam | 020 - 525 67 24 | </span><a href="mailto:M.E.Vissers@uva.nl" target="_blank"><span lang="NL" style="font-size:10.0pt;font-family:"Tahoma",sans-serif">M.E.Vissers@uva.nl</span></a><span lang="NL" style="font-size:10.0pt;font-family:"Tahoma",sans-serif;color:black"><u></u><u></u></span></p></div></div><div><p class="MsoNormal"><span lang="NL"><u></u> <u></u></span></p></div><div><p class="MsoNormal">---<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><div><p class="MsoNormal">% Import the electrode labels from an EEGlab set <u></u><u></u></p></div><div><p class="MsoNormal">elec = ft_read_sens('template_64.set','fileformat','eeglab_set');<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">% Create matrix with TF data<u></u><u></u></p></div><div><p class="MsoNormal">freqData.freq = frex;                                        % Frequenies of TF matrix<u></u><u></u></p></div><div><p class="MsoNormal">freqData.time = tx(TF_idx(1):TF_idx(2))./1000;  % Time samples in TF matrix<u></u><u></u></p></div><div><p class="MsoNormal">freqData.dimord = 'subj_chan_freq_time';<u></u><u></u></p></div><div><p class="MsoNormal">freqData.label = elec.label;<u></u><u></u></p></div><div><p class="MsoNormal">freqData.powspctrm = tempTF;                       % tempTF is matrix with subj*channels*freq*time<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">% Create matrix with behavioral data, make sure the sizes match<u></u><u></u></p></div><div><p class="MsoNormal">behav.freq = frex; <u></u><u></u></p></div><div><p class="MsoNormal">behav.time =  tx(TF_idx(1):TF_idx(2))./1000; <u></u><u></u></p></div><div><p class="MsoNormal">behav.dimord = 'subj_chan_freq_time';              % Trick FT: there is just behavioral data in this matrix<u></u><u></u></p></div><div><p class="MsoNormal">behav.label = elec.label;<u></u><u></u></p></div><div><p class="MsoNormal">behav.powspctrm = repmat(accEffect,[1 size(freqData.powspctrm,2),size(freqData.powspctrm,3),size(freqData.powspctrm,4)]); % accEffect is 1*subj array<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">% Set configuration for perm test<u></u><u></u></p></div><div><p class="MsoNormal">% Create cfg and insert parameters<u></u><u></u></p></div><div><p class="MsoNormal">cfg = [];<u></u><u></u></p></div><div><p class="MsoNormal">cfg.latency                = [0 1.250];<u></u><u></u></p></div><div><p class="MsoNormal">cfg.frequency            = [2 30];<u></u><u></u></p></div><div><p class="MsoNormal">cfg.channel               ='all';<u></u><u></u></p></div><div><p class="MsoNormal">cfg.method               = 'montecarlo';<u></u><u></u></p></div><div><p class="MsoNormal">cfg.statistic              = 'ft_statfun_intersubcorr';<u></u><u></u></p></div><div><p class="MsoNormal">cfg.type                   = ft_getopt(cfg, 'type', 'Spearman');<u></u><u></u></p></div><div><p class="MsoNormal">cfg.correctm            = 'cluster';<u></u><u></u></p></div><div><p class="MsoNormal">cfg.clusteralpha       = 0.05; <u></u><u></u></p></div><div><p class="MsoNormal">cfg.clusterstatistic    = 'maxsum';<u></u><u></u></p></div><div><p class="MsoNormal">cfg.minnbchan         = 2;<u></u><u></u></p></div><div><p class="MsoNormal">cfg.tail                    = 0;<u></u><u></u></p></div><div><p class="MsoNormal">cfg.clustertail           = 0;<u></u><u></u></p></div><div><p class="MsoNormal">cfg.alpha                 = 0.025;<u></u><u></u></p></div><div><p class="MsoNormal">cfg.numrandomization = 1000; <u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">% prepare_neighbours determines what sensors may form clusters: load Biosemi 64 channel cap<u></u><u></u></p></div><div><p class="MsoNormal">cfg.template              =  [fieldtripdir thisSlash 'template' thisSlash 'neighbours' thisSlash 'biosemi64_neighb.mat'];<u></u><u></u></p></div><div><p class="MsoNormal">cfg.layout                  =  [fieldtripdir thisSlash 'template' thisSlash 'layout' thisSlash 'biosemi64.lay'];<u></u><u></u></p></div><div><p class="MsoNormal">cfg_neighb.method    =   'template';<u></u><u></u></p></div><div><p class="MsoNormal">cfg.neighbours          =   ft_prepare_neighbours(cfg_neighb,freqData);<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">% Create design mat<u></u><u></u></p></div><div><p class="MsoNormal">subj = 31;<u></u><u></u></p></div><div><p class="MsoNormal">design = zeros(2,2*subj);<u></u><u></u></p></div><div><p class="MsoNormal">for i = 1:subj<u></u><u></u></p></div><div><p class="MsoNormal">  design(2,i) = i;<u></u><u></u></p></div><div><p class="MsoNormal">end<u></u><u></u></p></div><div><p class="MsoNormal">for i = 1:subj<u></u><u></u></p></div><div><p class="MsoNormal">  design(2,subj+i) = i;<u></u><u></u></p></div><div><p class="MsoNormal">end<u></u><u></u></p></div><div><p class="MsoNormal">design(1,1:subj) = 1;<u></u><u></u></p></div><div><p class="MsoNormal">design(1,subj+1:2*subj) = 2;<u></u><u></u></p></div><div><p class="MsoNormal">cfg.design       = design;<u></u><u></u></p></div><div><p class="MsoNormal">cfg.ivar = 1; <u></u><u></u></p></div><div><p class="MsoNormal">cfg.uvar = 2; <u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">% Run stats<u></u><u></u></p></div><div><p class="MsoNormal">[stat] = ft_freqstatistics(cfg,freqData,behav);<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></div></div><br>_______________________________________________<br>
fieldtrip mailing list<br>
<a href="mailto:fieldtrip@donders.ru.nl">fieldtrip@donders.ru.nl</a><br>
<a href="http://mailman.science.ru.nl/mailman/listinfo/fieldtrip" rel="noreferrer" target="_blank">http://mailman.science.ru.nl/mailman/listinfo/fieldtrip</a><br></blockquote></div><br></div>