[FieldTrip] clustering, spatial neighbors and minnbchan

Clara A. Scholl cas243 at georgetown.edu
Tue Mar 13 02:29:39 CET 2012


Dear Jörn,

Thank you for directing me to ft_prepare_neighbours instead of
ft_neighbourselection, the triangulation method is excellent and I'll
be sure to stick to the most recent version of fieldtrip from now on.

I really like the spirit of the minnbchan parameter for tightening
cluster extent, but as long as different channels have different
numbers of neighbors (which seems both inevitable and sensible), I
find it problematic that for example, for minnbchan=2, a channel with
5 neighbors will be rejected at a given timepoint if fewer than 40% of
its neighbors belong to a cluster, while a channel with 10 neighbors
will be rejected only when fewer than 20% of its neighbors belong to
the cluster (if I understand what's going on correctly -- and I use 5
and 10 as examples because this is the range of neighbors I get using
triangulation for an EGI 128 channel EEG sensor layout).  I have two
questions about a possible modification to this parameter that I've
implemented:

1) Instead of setting minnbchan to a fixed number of channels, would
it make sense to use a percentage of neighbors so that, for the
example above, instead of using minnbchan=2, use
minnbchan=0.4*numneighbours (at each channel), so that a channel with
5 neighbors would need 2 neighboring channels in the cluster to
remain, while a channel with 10 neighbors would need 4 neighboring
channels in the cluster to remain?  Would this introduce problems I'm
not considering?

2) I implemented it by modifying beginning at line 83 of
findcluster.m, so that instead of looking for
remove=(onoff.*nsigneighb)<minnbchan;

I'm now adding an additional line for the number of neighbors at each
channel (in addition to nsigneighb, the number of significant
neighbors), followed by remove:

nneighb=reshape(selectmat*reshape(single(ones(size(onoff))),[spatdimlength
(nfreq*ntime)]),[spatdimlength nfreq ntime]);
remove=(onoff.*nsigneighb)<(nneighb.*minnbchan);

Where now the minnbchan input must be between 0 and 1 so that the
channels removed at each timepoint are some fraction of each channels
number of neighbors.  It seems to work but I want to run it by users
who are more familiar with the parameters & code than I am, because
it's very possible that (1) the concept is esoteric and problematic
and (2) my implementation is faulty.

Thanks enormously for any & all feedback,
Clara


On Mon, Mar 12, 2012 at 4:48 AM, "Jörn M. Horschig"
<jm.horschig at donders.ru.nl> wrote:
> Dear Clara,
>
> First of all, defining neighbours based on a sensor layout may not be the
> best approach. If you have 3D positions of your sensors available, I would
> suggest that you use these for neighbour selection (note that for EEG
> sensors, this is much less an issue than for MEG sensors, but you didn't
> mention what system you are using)
>
> Second, for minnbchan, I think you are right. Of course sensors at the outer
> rim have, by definition, less neighbouring sensors than other sensors. As
> far as I know, minnbchan is defined as the number of neighbouring
> significant sensors. So, if you specify it to be e.g. 10, than of course all
> sensors with less than 10 neighbours can never be part of a cluster. Those
> with more than 10 need to have also at least 10 neighbouring sensors that
> are significant as well. Of course, sensors in the center have more
> neighbouring sensors, thus higher minnbchan will have a less tremendous
> effect there. So as far as I can see, there are four ways out for you:
>
> 1) If you didn't do so already, you can choose a finer time-scale, hoping
> that this will separate the different neural effects (if they are different)
>
> 2) Do the same on source level - maybe this will reduce spatial leakage.
>
> 3) Define a wider range of neighbours for sensors at the outer rim, thereby
> forcing a minimum number of neighbouring sensors. Instead (or additionally),
> you could try to use cfg.method = 'triangulation' or 'template' for
> neighbour selection. For more information, see here:
> http://fieldtrip.fcdonders.nl/faq/how_does_ft_prepare_neighbours_work
> I would suggest that you use cfg.feedback = 'yes' and choose the
> method/parameters that seem most optimal to you (there is not *the* best
> way, unfortunately)
>
> 4) Live with it, as there are technical limitations with our recording
> equipment, and of course physiological limitations. As Eric pointed out in
> the old mails you referred to:
> "
>
> In fact, it is looking for isolated blobs that one would like to interpret
> as separate physiological entities.
> This contrast with the nature of the EEG/MEG data, which has poor spatial
> resolution (due to volume conduction and common pick-up),
> often poor spectral resolution (due to the short time windows of our
> time-resolved spectral analysis), and often poor time resolution
> (due to latency jitter over trials).
> "
>
>
>
> Hope this helps.
> Best,
> Jörn
>
>
>
>
> On 3/11/2012 10:52 PM, Clara A. Scholl wrote:
>>
>> Hi,
>>
>> I have a question about how to identify appropriate parameters for
>> neighbor distance in ft_neighbourselection and how to set minnbchan
>> for space-time cluster analysis.
>>
>> I identified a neighbor distance based on our sensor layout, so that
>> spatially adjacent channels were defined as neighbors, and spatially
>> non-adjacent channels were not defined as neighbors.  I then ran
>> space-time cluster analysis and identified a cluster with a large
>> spatial and temporal extent which appears to be the continuation of
>> several effects lumped together.  I subsequently increased minnbchan,
>> so that this cluster gets separated into separate clusters following
>> the logic in this discussion thread:
>> http://mailman.science.ru.nl/pipermail/fieldtrip/2011-February/003501.html
>>
>> However now a new problem appears: it seems that channels near the
>> periphery of the sensor layout, which have few adjacent spatial
>> neighbors, are not included in the clusters when minnbchan has a value
>> greater than the number of neighbors the channels have according to
>> the neighbor distance used in ft_neighbourselection.  Is this correct?
>>  Put differently, increasing minnbchan appears to bias clusters toward
>> including only channels at the center of the sensor layout, with many
>> adjacent other channels (and channels at the periphery of the layout,
>> which have fewer spatial neighbors, are excluded from the identified
>> clusters).
>>
>> Obviously I want a principled, data-independent selection of cluster
>> identification parameters so I want to ask what the "correct" way to
>> identify these parameters (neighbor distance, and minnbchan) is.
>> Should minnbchan be used differently for channel-time cluster analysis
>> (what I'm doing) compared to channel-time-frequency cluster analysis?
>>
>> Thanks,
>> Clara
>>
>> _______________________________________________
>> fieldtrip mailing list
>> fieldtrip at donders.ru.nl
>> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
>
>
>
> --
> Jörn M. Horschig
> PhD Student
> Donders Institute for Brain, Cognition and Behaviour
> Centre for Cognitive Neuroimaging
> Radboud University Nijmegen
> Neuronal Oscillations Group
>
> P.O. Box 9101
> NL-6500 HB Nijmegen
> The Netherlands
>
> Contact:
> E-Mail: jm.horschig at donders.ru.nl
> Tel:    +31-(0)24-36-68493
> Web: http://www.ru.nl/donders
>
> Visiting address:
> Trigon, room 2.30
> Kapittelweg 29
> NL-6525 EN Nijmegen
> The Netherlands
>
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip




More information about the fieldtrip mailing list