06_MEEG_FieldTrip

Download Report

Transcript 06_MEEG_FieldTrip

FieldTrip, a tool for GUI-less exploration
of brain dynamics
Jan-Mathijs Schoffelen
Powered by:
[email protected]
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 for
electrophysiological 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 for
electrophysiological 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…
Comparison with another well-known toolbox
SPM
contra
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’
rejectartifactcfg.bpfilter = [0.01 150]
...
rawdata = preprocessing(cfg)
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:
trial:
time:
fsample:
hdr:
cfg:
{151x1 cell}
{1x87 cell}
{1x87 cell}
300
[1x1 struct]
[1x1 struct]
Event related response
erpData =
label:
avg:
var:
time:
dimord:
cfg:
{151x1 cell}
[151x900 double]
[151x900 double]
[1x900 double]
'chan_time’
[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
multiplotTFR
cfg = [ ]
cfg.method = ‘mtmfft’
cfg.foilim = [1 120]
... freqstatistics
freqdata = freqanalysis(cfg, rawdata)
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)
preprocessing
freqanalysis
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)
freqstatistics
topoplotTFR
…
Example use in scripts
cfg = []
cfg.dataset = ‘Subject01.ds’
cfg.bpfilter = [0.01 150]
...
rawdata = ft_preprocessing(cfg)
preprocessing
freqanalysis
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)
freqstatistics
topoplotTFR
…
Example use in scripts
cfg = []
cfg.dataset = ‘Subject01.ds’
cfg.bpfilter = [0.01 150]
...
rawdata = ft_preprocessing(cfg)
preprocessing
freqanalysis
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)
freqstatistics
topoplotTFR
…
Example use in scripts
cfg = []
cfg.dataset = ‘Subject01.ds’
cfg.bpfilter = [0.01 150]
...
rawdata = ft_preprocessing(cfg)
preprocessing
freqanalysis
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)
freqstatistics
topoplotTFR
…
Example use in scripts
cfg = []
cfg.dataset = ‘Subject01.ds’
cfg.bpfilter = [0.01 150]
...
rawdata = ft_preprocessing(cfg)
preprocessing
freqanalysis
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)
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
FieldTrip toolbox structure - at a glance
end-user
perspective
FieldTrip main functions
FieldTrip private functions
(low-level)
FieldTrip toolbox structure - a closer look
end-user
perspective
fileio
FieldTrip main functions
public
distrib.
forwinv preproc multivar.
comput.
private
FieldTrip toolbox structure - a closer look
end-user
perspective
preprocessing
freqanalysis
dipolefitting
fileio
read_data(…)
sourcestatistics
public
…
distrib.
forwinv preproc multivar.
comput.
compute_leadfield(…)
bandpassfilter(…)
private
FieldTrip toolbox structure - a closer look
end-user
perspective
fileio
FieldTrip main functions
public
distrib.
forwinv preproc multivar.
comput.
private
FieldTrip toolbox - code reused in SPM8
SPM8 end-user
perspective
SPM8 main functions
main functions
with graphical user interface
fileio
distrib.
forwinv preproc
comput.
public
fieldtrip
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
Network identification in non-invasive
measurements
CM-coherence
Power
MEG-coherence
ROI
Network identification
all voxel
combinations
Network identification
Who is hot....?
...and who is not?
Non-homogeneous maps
Power
FWHM
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: general effects
Results: hit rate
unsmoothed
smoothed
Results: false positives
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