420 likes | 722 Views
FieldTrip, a tool for GUI-less exploration of brain dynamics. Jan-Mathijs Schoffelen j.schoffelen@donders.ru.nl. Powered by:. Purpose of this talk. Advertisement of FieldTrip of some of the scientific work done with FieldTrip. What is FieldTrip?.
E N D
FieldTrip, a tool for GUI-less exploration of brain dynamics Jan-Mathijs Schoffelen j.schoffelen@donders.ru.nl Powered by:
Purpose of this talk • Advertisement • of FieldTrip • of some of the scientific work done with FieldTrip
What is FieldTrip? A MATLAB toolbox for electrophysiological data analysis
Features: high-level functions forelectrophysiological data analysis Data reading all commercial MEG systems, many different EEG systems Preprocessing filtering, segmenting Time-locked ERF analysis Frequency and time-frequency analysis multitapers, wavelets, welch, hilbert, parametric spectral estimates
Features: high-level functions forelectrophysiological data analysis Functional connectivity analysis coherence, phase locking value, granger causality, and many more Source reconstruction beamformers, dipole fitting, linear estimation Statistical analysis parametric, non-parametric, channel and source level All other operations that are required around it
But… X
Comparison with another well-known toolbox contra SPM buttons model-based GLM, DCM, bayesian model comparison functions data-driven
Comparison with another well-known toolbox intra SPM Under the hood a lot of the code is shared
Features Analysis steps are incorporated in functions
Using functions in an analysis protocol preprocessing cfg = [ ] cfg.dataset = ‘Subject01.ds’ cfg.bpfilter = [0.01 150] ... rawdata = preprocessing(cfg) rejectartifact freqanalysis multiplotTFR freqstatistics multiplotTFR
Typical functions dataout = functionname(cfg, datain, …) functionname(cfg, datain, …) dataout = functionname(cfg) the “cfg” argument is a configuration structure, e.g.: cfg.channel = {‘C3’, C4’, ‘F3’, ‘F4’} cfg.foilim = [1 70] and determines specific behaviour of the function
Features Analysis steps are incorporated in functions Data are represented in standard MATLAB structures as small as possible contain all relevant details
Raw data structure rawData = label: {151x1 cell} trial: {1x87 cell} time: {1x87 cell} fsample: 300 hdr: [1x1 struct] cfg: [1x1 struct]
Event related response erpData = label: {151x1 cell} avg: [151x900 double] var: [151x900 double] time: [1x900 double] dimord: 'chan_time’ cfg: [1x1 struct]
Features Analysis steps are incorporated in functions Data are represented in standard MATLAB structures as small as possible contain all relevant details Data structures bind together analysis blocks
Using functions in an analysis protocol preprocessing rejectartifact freqanalysis cfg = [ ] cfg.method = ‘mtmfft’ cfg.foilim = [1 120] ... freqdata = freqanalysis(cfg, rawdata) multiplotTFR freqstatistics multiplotTFR
Features Analysis steps are incorporated in functions Data are represented in standard MATLAB structures as small as possible contain all relevant details Data structures bind together analysis blocks Easy to write new functions that operate on these data structures Output of your own functions can be further processed or plotted with FieldTrip functions
Example use in scripts cfg = [] cfg.dataset = ‘Subject01.ds’ cfg.bpfilter = [0.01 150] ... rawdata = ft_preprocessing(cfg) cfg = [] cfg.method = ‘mtmfft’ cfg.foilim = [1 120] ... freqdata = ft_freqanalysis(cfg, rawdata) cfg = [] cfg.method = ‘montecarlo’ cfg.statistic = ‘indepsamplesT’ cfg.design = [1 2 1 2 2 1 2 1 1 2 ... ] ... freqstat = ft_freqstatistics(cfg, freqdata) … preprocessing freqanalysis freqstatistics topoplotTFR
Example use in scripts cfg = [] cfg.dataset = ‘Subject01.ds’ cfg.bpfilter = [0.01 150] ... rawdata = ft_preprocessing(cfg) cfg = [] cfg.method = ‘mtmfft’ cfg.foilim = [1 120] ... freqdata = ft_freqanalysis(cfg, rawdata) cfg = [] cfg.method = ‘montecarlo’ cfg.statistic = ‘indepsamplesT’ cfg.design = [1 2 1 2 2 1 2 1 1 2 ... ] ... freqstat = ft_freqstatistics(cfg, freqdata) … preprocessing freqanalysis freqstatistics topoplotTFR
Example use in scripts cfg = [] cfg.dataset = ‘Subject01.ds’ cfg.bpfilter = [0.01 150] ... rawdata = ft_preprocessing(cfg) cfg = [] cfg.method = ‘mtmfft’ cfg.foilim = [1 120] ... freqdata = ft_freqanalysis(cfg, rawdata) cfg = [] cfg.method = ‘montecarlo’ cfg.statistic = ‘indepsamplesT’ cfg.design = [1 2 1 2 2 1 2 1 1 2 ... ] ... freqstat = ft_freqstatistics(cfg, freqdata) … preprocessing freqanalysis freqstatistics topoplotTFR
Example use in scripts cfg = [] cfg.dataset = ‘Subject01.ds’ cfg.bpfilter = [0.01 150] ... rawdata = ft_preprocessing(cfg) cfg = [] cfg.method = ‘mtmfft’ cfg.foilim = [1 120] ... freqdata = ft_freqanalysis(cfg, rawdata) cfg = [] cfg.method = ‘montecarlo’ cfg.statistic = ‘indepsamplesT’ cfg.design = [1 2 1 2 2 1 2 1 1 2 ... ] ... freqstat = ft_freqstatistics(cfg, freqdata) preprocessing freqanalysis … freqstatistics topoplotTFR
Example use in scripts cfg = [] cfg.dataset = ‘Subject01.ds’ cfg.bpfilter = [0.01 150] ... rawdata = ft_preprocessing(cfg) cfg = [] cfg.method = ‘mtmfft’ cfg.foilim = [1 120] ... freqdata = ft_freqanalysis(cfg, rawdata) cfg = [] cfg.method = ‘montecarlo’ cfg.statistic = ‘indepsamplesT’ cfg.design = [1 2 1 2 2 1 2 1 1 2 ... ] ... freqstat = ft_freqstatistics(cfg, freqdata) preprocessing freqanalysis … freqstatistics topoplotTFR
Example use in scripts subjlist = {‘S01.ds’, ‘S02.ds’, …} triglist = [1 3 7 9] for s=1:nsubj for c=1:ncond cfg = [ ] cfg.dataset = subjlist{s} cfg.trigger = triglist(c) rawdata{s,c} = preprocessing(cfg) cfg = [ ] cfg.method = ‘mtm’ cfg.foilim = [1 120] freqdata {s,c} = freqanalysis(cfg, rawdata) end end
Example use in scripts subjlist = {‘S01.ds’, ‘S02.ds’, …} triglist = [1 3 7 9] for s=1:nsubj for c=1:ncond cfg = [ ] cfg.dataset = subjlist{s} cfg.trigger = triglist(c) rawdata{s,c} = preprocessing(cfg) filename = sprintf(‘raw%s_%d.mat’, subjlist{s}, condlist(c)); • save(filename, ‘rawdata’) • end end
Relevance of analysis scripts the data and the separate functions are in the hands of the end-users the scripts depend on the data properties, available memory and programming skills and style scripts correspond to analysis protocols scripts can be reviewed by supervisors scripts are often shared with colleagues
end-user perspective FieldTrip toolbox structure - at a glance FieldTrip main functions FieldTrip private functions(low-level)
end-user perspective FieldTrip toolbox structure - a closer look public FieldTrip main functions fileio forwinv preproc multivar. distrib. comput. private
end-user perspective read_data(…) compute_leadfield(…) bandpassfilter(…) FieldTrip toolbox structure - a closer look public preprocessing freqanalysis sourcestatistics dipolefitting … fileio forwinv preproc multivar. distrib. comput. private
end-user perspective FieldTrip toolbox structure - a closer look public FieldTrip main functions fileio forwinv preproc multivar. distrib. comput. private
FieldTrip toolbox - code reused in SPM8 SPM8 end-user perspective SPM8 main functions with graphical user interface public main functions fieldtrip fileio forwinv preproc distrib. comput. private
Why use FieldTrip? contains many algorithms demonstrated to be an effective tool for analyzing electrophysiological data active user community new methods contributed by others collaboration with other packages expertise from developers made accessible expertise from other users made available
MEG-coherence ROI • CM-coherence • Power Network identification in non-invasive measurements
Network identification all voxel combinations
Who is hot....? ...and who is not? Network identification
Power FWHM Non-homogeneous maps
Simulations • 2 dipoles in 2 conditions • correlated dipoles • uncorrelated dipoles • Reconstruct all-to-all bivariate correlation map with beamformers • Non-homogeneous smoothing • 6 dimensional gaussian kernel depending on FWHM • little smoothing for high activations • more smoothing for low activations • Many dipole pairs at various SNR etc.
Results: hit rate unsmoothed smoothed
Summary • Identification of functionally connected nodes in a neural network based on non-invasive measurements • Spurious connections / low sensitivity • Non-homogeneous smoothing improves sensitivity • …on simulated data
Do you want to give it a try yourself? http://fieldtrip.fcdonders.nl/ Acknowledgements: Monkey stuff -Conrado Bosman -Andre Bastos -Robert Oostenveld -Pascal Fries Non-homogeneous smoothing -Joachim Gross