<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Matt, Marco and others,<div><br></div><div>In the following I will address some issues which occurred earlier in this thread and try to also address the stuff that has come up since.</div><div><br></div><div>Here's my 2 cents:</div><div><br></div><div>As Matt and others already found out to their frustration, there is no straightforward way (in terms of how fieldtrip can handle the data) to carry out a statistical test (across a group of subjects) on data, which is the output of ft_connectivityanalysis. I will not talk about single subject analyses, but I sensed some confusion here and there, in that the 'statfun_indepsamplesZcoh' occasionally popped up. This is essentially indeed a function allowing to compute significance of coherence differences within a single subject.</div><div>Let's return to the statistics across a group case. The dirty hack I proposed a while ago in principle should work, but I could imagine that it doesn't work flawlessly, and it may need some fine-tuning. Having said this, in the past some functionality was built in to actually apply this dirty trick but only specifically so on coherence data, i.e. the data field called 'cohspctrm'. Internally in the ft_freqstatistics code, the field 'label' was created, in which each element consisted of a concatenation of 2 label strings, e.g. {'E1 - E2'}. The reason why other metrics are not supported, is that the aforementioned functionality was built in long before the existence of ft_connectivityanalysis, at the time we were mostly doing coherence analysis. As such, there is no principled reason why fieldtrip should not support similar functionality for other connectivity metrics, and it's certainly on the developers' to-do list (in this case:  my to-do list).</div><div>On a related note, once one manages to 'fool' freqstatistics (or if one would like to do a more traditional analysis with freqstatistics) and wants to apply clustering in the channel dimension, fieldtrip needs to know which channels are neighbours of each other. For this, the cfg structure needs to have a field called cfg.neighbours, and if this does not exist, fieldtrip tries to create one on the fly, based on the specification of the positions of the channels. This information is always stored (if known) in the data field called grad (for MEG), or elec (for EEG). Apparently, Marco's data does not contain this field, most likely causing the error he reported in an earlier message. This does not mean that one cannot do clustering in this case. It just means that one has to create the neighbourhood structure between the channels on his own. There's surely some documentation about this on the wiki, so I don't want to enter into details about this here.</div><div>If one now has scalp level estimates of connectivity between channel pairs, the clustering over channels may in principle be done (but not yet in fieldtrip as far as I am aware), since the channel dimension is now not just defined in 2D (as a projection of the channels onto a plane), but in 4-dimensional space. So in such a case one needs to specify an empty neighbourhood structure, i.e. cfg.neighbours{k}.label = data.label{k} and cfg.neighbours{k}.neighblabel = {} (where k is the k'th label in the (in this case) bivariate data, see above. Fieldtrip then still allows for clustering over frequencies and time.</div><div>Then it is of course the question as to how to generate the connectivity data in order to optimally fool ft_freqstatistics, and one level higher in the analysis pipeline, it relates to how ft_freqanalysis should behave. Let me start from the top, and use coherence as an example. Coherence essentially is the frequency domain version of the cross-correlation function and as such is constructed from the frequency domain representation of the time series. Analogous to the correlation which is the covariance between two signals, normalised with the variance of the two respective signals, the coherence is the cross-spectral density between two signals, normalised with the power of the two respective signals, at frequency X. The correlation can be loosely seen as a multiplication between two time domain signals, the cross-spectral density is obtained by (conjugate) multiplication between the frequency domain representation of those two signals. This essentially is related to the two different (relevant) outputs ft_freqanalysis will provide. Cfg.output = 'fourier' provides the fourier transforms of the time domain signals, and cfg.output='powandcsd' provides the cross-spectral density between a specified set of channel combinations, and you get the power spectra for free.</div><div>Both versions allow for the coherence to be computed but the memory requirements at this stage differs. For 'fourier' data the dimensionality of the fourierspctrm = 'rpttap_chan_freq_time' (by force the single replicates are kept in memory, because replicates may only be averaged once the fourierspectra are multiplied (yielding auto- and cross-spectra). For 'powandcsd' data the dimensionality of crsspctrm is either 'chan_freq_time', or 'rpt_chan_freq_time'. Averaging across replicates is now possible (when cfg.keeptrials = 'no' before calling ft_freqanalysis)  (since the multiplication is now performed), yet the 'chan' dimension now represents channel combinations, which in the case of cfg.channelcmb = {'all' 'all'} leads to (N-1)*N/2 channel combinations. This typically leads to a much higher memory usage, particularly because for some connectivity metrics (such as plv) one needs to process the single replicates before computing the plv, requiring cfg.keeptrials to be 'yes' prior to calling ft_freqanalysis. Therefore I would advocate the use of cfg.method = 'fourier', as long as the number of trials and tapers is not too big.</div><div>Next, ft_connectivityanalysis can be called, using the freq data with fourier. One can actually specify a cfg.channelcmb at this stage, which makes sense if not all combinations are needed, or if the requested connectivity metric is symmetric, such as coherence. This could be the trick Matt is waiting for, i.e. run ft_freqanalysis with output='fourier', and specify cfg.channelcmb = {'all' 'all'} before calling ft_connectivityanalysis. Alternatively, you could do a reshape on the plvspctrm, and keep only the interesting non-duplicated pairs, e.g. indx = reshape(1:length(conn.label).^2,[length(conn.label) length(conn.label]); indx = tril(indx,-1); plvspctrm = reshape(plvspctrm, [length(conn.label) length(conn.label) length(conn.freq) length(conn.time)]); plvspctrm = plvspctrm(indx(:),:,:); label = label(indx); label in this case is the processed labelcmb field.</div><div><br></div><div>I hope that this will be of any help.</div><div><br></div><div>Jan-Mathijs</div><div><br></div><div><br></div><div><br></div><div><br><div><div>On Mar 23, 2011, at 11:30 PM, Matt Mollison wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Dear Jan-Mathijs,</div><div><br></div><div>Thanks for your reply. I know my post was a large one. I have two further questions that are borne out in more detail below: 1) how would one do connectivity analyses with 'fourier' data (the issue for "next time")? and 2) what's the difference between using 'powandcsd' and 'fourier'?</div> <div><br></div><div>1. I'm still confused about the last case that you said to keep for next time (cfg.method='mtmconvol', cfg.output='fourier').</div> <div>How do FT users run ft_freqstatistics on ft_connectivityanalysis data (processed as output='fourier') in a within-subjects experiment if the stats throw an error because of "chan_chan" in dimord? It seems like one must reshape plvspctrm/cohspctrm and modify dimord. However, for me, reshaping plvspctrm produces a dimension that is more than twice as large as it should be.</div> <div>size(data_conn.plvspctrm)=129   129     9    33 (i.e., chan_chan_freq_time)</div><div>If I then reshape with</div><div>siz = size(data_conn.plvspctrm);</div><div>size(reshape(data_conn.plvspctrm,siz(1)*siz(2),siz(3),siz(4))) = 16641           9          33</div> <div>and (16641-129)/2 = 8256, which are the nchoosek(129,2)=8256 channel combinations that I *should* have. So it seems that ft_connectivityanalysis is producing duplicate channel combinations (i.e., 'E1_E2' and 'E2_E1' when those should be equal) plus auto-correlations ('E1_E1'), and making some imagesc plots of the data confirms this.</div> <div>People here are surely running PLV/coherence analyses (there have been questions about single-subject analyses with statfun_indepsamplesZcoh, which requires fourier input), so there must be a way to use fourier input.</div> <div><br></div><div>The only thing I can figure is to instead use cfg.output='powandcsd' and implement the label-field creation trick you suggested. However, this doesn't seem like it's the only option because statfun_indepsamplesZcoh requires 'fourier'. Nonetheless, I tried using 'powandcsd' with the label trick and I was able to run ft_freqstatistics (finally!! doing both a t-test and a clusteranalysis), but it seems like FT could/should deal with the issue more elegantly instead of needing the trick. Maybe all coh/plv analyses ever done with FT have required this hack and maybe the correct reshape for fourier data still needs to be implemented, both of which are completely fine with me, but in that case I'm curious what hacks other people are using.</div> <div><br></div><div>2. Despite being successful with powandcsd data, I still can't figure out how to use fourier data. That leads me to ask, what's the functional different between fourier and powandcsd output? Or rather, what can/can't I do with complex Fourier spectra? Will FT perform "better" (faster?) with one or the other? Are they used in different situations (it seems like I should be able to use either for PLV/coherence, especially since statfun_indepsamplesZcoh requires fourier)? If I also want to look at power, can I calculate it from the complex Fourier spectra? Sorry for my lack of knowledge in this department.</div> <div><br></div><div>Thanks again for all the information.</div><div>Matt</div><div><br></div><br><div class="gmail_quote">On Wed, Mar 16, 2011 at 2:25 AM, jan-mathijs schoffelen <span dir="ltr"><<a href="mailto:jan.schoffelen@donders.ru.nl" target="_blank">jan.schoffelen@donders.ru.nl</a>></span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Dear Matt,<br> <br> As usual, thanks for your detailed report (although one also shouldn't exaggerate ;o) ).<br> Reading your mail and attachment, it seems there are several features/problems in the code that restrict your analysis.<br> In the following, I pasted your script and will provide some comments<br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> =================================================================<br> cfg_freq.method = 'wavelet';<br> cfg_freq.output = 'powandcsd';<br> cfg_freq.channelcmb = {'all','all'}; % 129 channels<br> <br> --------------------------------------<br> ft_freqanalysis<br> data_freq =<br>        label: {129x1 cell}<br>       dimord: 'chan_freq_time'<br>         freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>         time: [1x33 double]<br>    powspctrm: [129x9x33 double]<br>     labelcmb: {8256x2 cell}<br>    crsspctrm: [8256x9x33 double]<br>          cfg: [1x1 struct]<br> <br> ft_connectivityanalysis with 'plv'<br> data_conn =<br>      labelcmb: {8256x2 cell}<br>       dimord: 'chan_freq_time'<br>    plvspctrm: [8256x9x33 double]<br>         freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>         time: [1x33 double]<br>          cfg: [1x1 struct]<br> <br> --------------------------------------<br> FAILURE: can't run ft_freqgrandaverage on data_conn because there is no label field<br> </blockquote> <br> This has indeed been noted by you and posted on bugzilla. We didn't find time to work on it yet, but as a general remark ft_freqgrandaverage (and ft_timelockgrandaverage and ft_sourcegrandaverage) were designed to work on univariate data only, i.e. it fails on data which comes out of ft_connectivityanalysis. As such there is no other reason for it than a historical one (the averaging functions were there long before we started doing serious connectivity stuff). Of course it should be possible to combine the data into one structure and do statistics later on, although I guess the clustering in the channel dimension becomes really complicated. Note, also that I pointed out to you that as such ft_XXXgrandaverage is not mandatory before calling ft_XXXstatistics, you can also input a cell-array of data structures. Yet, this will not help you because then you probably encounter a crash later on.<br> <br> SOLUTION for now: rename plvspctrm into powspctrm and create a label-field, e.g. by   for i =1:size(data_conn.labelcmb,1) data_conn.label{k} = [data_conn.labelcmb{i,1},'_',data_conn.labelcmb{i,2}]; end (and remove the labelcmb field)<br> <br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br> --------------------------------------<br> FAILURE: can't run ft_singleplotTFR on data_conn<br> <br> cfg_ft.cohrefchannel = 'E3';<br> cfg_ft.channel = 'E60';<br> selected 1408 channels for plvspctrm<br> ??? Error using ==> ft_channelselection at 72<br> data with non-unique channel names is not supported<br> <br> Error in ==> ft_singleplotTFR at 290<br> selchannel = ft_channelselection(cfg.channel, data.label);<br> </blockquote> <br> The plotting functions keep haunting me. I thought that with my recent overhaul I made them somewhat more robust for plotting connectivity data.<br> It would be helpful if you create a bug out of this specific section, and add an attachment containing data_conn, and cfg_ft)<br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> --------------------------------------<br> FAILURE: can't run ft_topoplotTFR on data_conn<br> <br> creating layout from data.elec<br> creating layout for egi128 system<br> selected 1408 channels for plvspctrm<br> Warning: Duplicate x-y data points detected: using average of the z values.<br> > In griddata at 108<br>  In ft_plot_topo at 146<br>  In ft_topoplotER at 747<br>  In ft_topoplotTFR at 116<br> ??? Error using ==> griddata at 122<br> Not enough unique sample points specified.<br> <br> Error in ==> ft_plot_topo at 146<br> [Xi,Yi,Zi] = griddata(chanX', chanY, dat, xi', yi, interpmethod); % interpolate the topographic data<br> <br> Error in ==> ft_topoplotER at 747<br>    ft_plot_topo(chanX,chanY,datavector,'interpmethod',cfg.interpolation,...<br> <br> Error in ==> ft_topoplotTFR at 116<br> cfg=ft_topoplotER(cfg, varargin{:});<br> =================================================================<br> =================================================================<br> </blockquote> <br> You requested only a single pair to be plotted (1 cohrefchannel and 1 channel). A topography does not makes sense. FieldTrip does not detect this, but the low-level interpolation function starts complaining.<br> <br> SOLUTION: don't call ft_topoplotTFR if you want to look at 1 TFR only, as specified by the cfg. In that case it should be possible to specify cfg.interactive = 'yes', allowing you to toggle back and forth between topographies and selected sensors.<br> <br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> =================================================================<br> cfg_freq.method = 'wavelet';<br> cfg_freq.output = 'fourier'<div><br> cfg_freq.channelcmb = {'E3','E60';'E3','E62';'E11','E60';'E11','E62'};<br></div> cfg_freq.channel = unique(cfg_freq.channelcmb);<br> <br> have to set keeptapers to 'no' even though (as far as I know) there are no tapers used in wavelets (see ft_freqanalysis line 313)<div><br> cfg_freq.keeptrials = 'no';<br> cfg_freq.keeptapers = 'no';<br> <br></div> --------------------------------------<br> ft_freqanalysis<br> data_freq =<br>            label: {4x1 cell}<br>           dimord: 'chan_freq_time'<br>             freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>             time: [1x33 double]<br>    fourierspctrm: [4x9x33 double]<br>              cfg: [1x1 struct]<br> <br> --------------------------------------<br> FAILURE: can't run ft_connectivityanalysis on data_freq because there is no cumtapcnt field<br> <br> ??? Reference to non-existent field 'cumtapcnt'.<br> <br> Error in ==> ft_checkdata>fixcsd at 844<br>  sumtapcnt = [0;cumsum(data.cumtapcnt(:))];<br> <br> Error in ==> ft_checkdata at 594<br>    data = fixcsd(data, cmbrepresentation, channelcmb);<br> <br> Error in ==> univariate2bivariate at 29<br>        data    = ft_checkdata(data, 'cmbrepresentation', 'full');<br> <br> Error in ==> ft_connectivityanalysis at 234<br>          [data, powindx, hasrpt] = univariate2bivariate(data, 'fourierspctrm', 'crsspctrm', dtype, 'cmb', cfg.channelcmb);<br> =================================================================<br> =================================================================<br> </blockquote> <br> Thanks for noticing this. I never considered anybody to use the wavelet method before calling ft_connectivityanalysis. Why would you want to use it in the first place if there's mtmconvol ;o) ?<br> <br> SOLUTION: Don't use wavelet (and post a bug on bugzilla stating this specific problem: output to waveletanalysis cannot be processed by ft_connectivityanalysis).<br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> =================================================================<div><br> cfg_freq.method = 'mtmconvol';<br> cfg_freq.output = 'powandcsd';<br></div><div> cfg_freq.channelcmb = {'E3','E60';'E3','E62';'E11','E60';'E11','E62'};<br></div> cfg_freq.channel = unique(cfg_freq.channelcmb);<div><br> <br> cfg_freq.keeptrials = 'no';<br> cfg_freq.keeptapers = 'no';<br></div> cfg_freq.taper = 'hanning';<br> <br> --------------------------------------<br> ft_freqanalysis<br> data_freq =<br>        label: {4x1 cell}<br>       dimord: 'chan_freq_time'<br>         freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>         time: [1x33 double]<br>    powspctrm: [4x9x33 double]<br>     labelcmb: {4x2 cell}<br>    crsspctrm: [4x9x33 double]<br>    cumtapcnt: [173x9 double]<br>          cfg: [1x1 struct]<br> <br> ft_connectivityanalysis with 'plv'<br> data_conn =<br>     labelcmb: {4x2 cell}<br>       dimord: 'chan_freq_time'<br>    plvspctrm: [4x9x33 double]<br>         freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>         time: [1x33 double]<br>          cfg: [1x1 struct]<br> --------------------------------------<br> FAILURE: can't run ft_freqgrandaverage on data_conn because there is no label field<br> <br> </blockquote> <br> See above.<br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> --------------------------------------<br> SUCCESS: ft_singleplotTFR successfully makes a plot<br> <br> </blockquote> <br> Hurrah<br> <br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> --------------------------------------<br> FAILURE: can't run ft_freqstatistics on data_conn because there's no label field<br> <br> ??? Reference to non-existent field 'label'.<br> <br> Error in ==> prepare_timefreq_data>forcedimord at 509<br>  output.label  = input.label;<br> <br> Error in ==> prepare_timefreq_data at 87<br>  [remember{c}, hascrsspctrm] = forcedimord(varargin{c});<br> <br> Error in ==> statistics_wrapper at 217<br>  [cfg, data] = prepare_timefreq_data(cfg, varargin{:});<br> <br> Error in ==> ft_freqstatistics at 127<br> [stat, cfg] = statistics_wrapper(cfg, varargin{:});<br> =================================================================<br> =================================================================<br> </blockquote> <br> <br> See above<br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> =================================================================<div><br> cfg_freq.method = 'mtmconvol';<br> cfg_freq.output = 'fourier';<br></div><div> cfg_freq.channelcmb = {'E3','E60';'E3','E62';'E11','E60';'E11','E62'};<br></div> cfg_freq.channel = unique(cfg_freq.channelcmb);<div><br> <br> cfg_freq.keeptrials = 'no';<br> cfg_freq.keeptapers = 'no';<br></div> cfg_freq.taper = 'hanning';<br> <br> --------------------------------------<br> ft_freqanalysis<br> data_freq =<br>            label: {4x1 cell}<br>           dimord: 'chan_freq_time'<br>             freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>             time: [1x33 double]<br>    fourierspctrm: [4x9x33 double]<br>        cumtapcnt: [173x9 double]<br>              cfg: [1x1 struct]<br> <br> --------------------------------------<br> FAILURE: can't run ft_connectivityanalysis on data_freq<br> <br> ??? Subscripted assignment dimension mismatch.<br> <br> Error in ==> ft_checkdata>fixcsd at 851<br>        crsspctrm(p,:,:,m,k) = (tmpdat*tmpdat')./data.cumtapcnt(p);<br> <br> Error in ==> ft_checkdata at 594<br>    data = fixcsd(data, cmbrepresentation, channelcmb);<br> <br> Error in ==> univariate2bivariate at 29<br>        data    = ft_checkdata(data, 'cmbrepresentation', 'full');<br> <br> Error in ==> ft_connectivityanalysis at 234<br>          [data, powindx, hasrpt] = univariate2bivariate(data, 'fourierspctrm', 'crsspctrm', dtype, 'cmb', cfg.channelcmb);<br> =================================================================<br> </blockquote> <br> This seems to be a bug in ft_freqanalysis. It should be very forbidden to run ft_freqanalysis with cfg.keeptrials = 'no' and cfg.output = 'fourier'. Just doesn't make sense. Could  you file this as a bug please?<br> <br> <br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> =================================================================<br> =================================================================<div><br> cfg_freq.method = 'mtmconvol';<br> cfg_freq.output = 'fourier';<br></div><div> cfg_freq.channelcmb = {'E3','E60';'E3','E62';'E11','E60';'E11','E62'};<br></div> cfg_freq.channel = unique(cfg_freq.channelcmb);<div><br> <br> cfg_freq.keeptrials = 'yes';<br> cfg_freq.keeptapers = 'yes';<br></div> cfg_freq.taper = 'hanning';<br> <br> --------------------------------------<br> ft_freqanalysis<br> data_freq =<br>            label: {4x1 cell}<br>           dimord: 'rpttap_chan_freq_time'<br>             freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>             time: [1x33 double]<br>    fourierspctrm: [4-D double]<br>        cumtapcnt: [173x9 double]<br>              cfg: [1x1 struct]<br> <br> ft_connectivityanalysis with 'plv'<br> data_conn =<br>        label: {4x1 cell}<br>       dimord: 'chan_chan_freq_time'<br>    plvspctrm: [4-D double]<br>         freq: [2.9630 3.7037 4.4444 5.1852 5.9259 6.6667 7.4074 8.1481 8.8889]<br>         time: [1x33 double]<br>          dof: [173 173 173 173 173 173 173 173 173]<br>          cfg: [1x1 struct]<br> <br> --------------------------------------<br> FAILURE: can't run ft_freqgrandaverage on data_conn<br> <br> ??? Error using ==> ft_freqgrandaverage at 170<br> unsupported dimord<br> <br> --------------------------------------<br> SUCCESS: ft_singleplotTFR makes a plot<br> <br> --------------------------------------<br> FAILURE: can't do ft_freqstatistics on data_conn because of chan_chan in dimord<br> <br> ??? Error using ==> size<br> Dimension argument must be a positive integer scalar within indexing range.<br> <br> Error in ==> prepare_timefreq_data>forcedimord at 540<br>    Nchan = size(output.dat, chandim);<br> <br> Error in ==> prepare_timefreq_data at 87<br>  [remember{c}, hascrsspctrm] = forcedimord(varargin{c});<br> <br> Error in ==> statistics_wrapper at 217<br>  [cfg, data] = prepare_timefreq_data(cfg, varargin{:});<br> <br> Error in ==> ft_freqstatistics at 127<br> [stat, cfg] = statistics_wrapper(cfg, varargin{:});<br> <br> Error in ==> mm_ft_ttestTFR at 228<br>  cfg_ana.(vs_str) = eval(sprintf('ft_freqstatistics(cfg_ft,%s);',subj_str));<br> =================================================================<br> </blockquote> <br> Let's keep this one for the next time...<br> <br> Best,<br> <br> Jan-Mathijs<br> _______________________________________________<br> fieldtrip mailing list<br> <a href="mailto:fieldtrip@donders.ru.nl" target="_blank">fieldtrip@donders.ru.nl</a><br> <a href="http://mailman.science.ru.nl/mailman/listinfo/fieldtrip" target="_blank">http://mailman.science.ru.nl/mailman/listinfo/fieldtrip</a><br> </blockquote></div><br> _______________________________________________<br>fieldtrip mailing list<br><a href="mailto:fieldtrip@donders.ru.nl">fieldtrip@donders.ru.nl</a><br>http://mailman.science.ru.nl/mailman/listinfo/fieldtrip</blockquote></div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Dr. J.M. (Jan-Mathijs) Schoffelen </div><div>Donders Institute for Brain, Cognition and Behaviour, <br>Centre for Cognitive Neuroimaging,<br>Radboud University Nijmegen, The Netherlands</div><div><a href="mailto:J.Schoffelen@donders.ru.nl">J.Schoffelen@donders.ru.nl</a></div><div>Telephone: 0031-24-3614793</div></div></span></div></span> </div><br></div></body></html>