Sie sind auf Seite 1von 41

FieldTrip, a tool for GUI-less exploration

of brain dynamics

Jan-Mathijs Schoffelen
Powered by:
j.schoffelen@donders.ru.nl

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.01150]
...
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=[170]
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:{151x1cell}
trial:{1x87cell}
time:{1x87cell}
fsample:300
hdr:[1x1struct]
cfg:[1x1struct]

Event related response

erpData=
label:{151x1cell}
avg:[151x900double]
var:[151x900double]
time:[1x900double]
dimord:'chan_time
cfg:[1x1struct]

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=[1120]
... 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.01150]
...
rawdata=ft_preprocessing(cfg)

cfg=[]
cfg.method=mtmfft
cfg.foilim=[1120]
...
freqdata=ft_freqanalysis(cfg,rawdata)

cfg=[]
cfg.method=montecarlo
cfg.statistic=indepsamplesT
cfg.design=[1212212112...]
...
freqstat=ft_freqstatistics(cfg,freqdata)

Example use in scripts


cfg=[]
cfg.dataset=Subject01.ds
cfg.bpfilter=[0.01150]
...
rawdata=ft_preprocessing(cfg)

cfg=[]
cfg.method=mtmfft
cfg.foilim=[1120]
...
freqdata=ft_freqanalysis(cfg,rawdata)

cfg=[]
cfg.method=montecarlo
cfg.statistic=indepsamplesT
cfg.design=[1212212112...]
...
freqstat=ft_freqstatistics(cfg,freqdata)

Example use in scripts


cfg=[]
cfg.dataset=Subject01.ds
cfg.bpfilter=[0.01150]
...
rawdata=ft_preprocessing(cfg)

cfg=[]
cfg.method=mtmfft
cfg.foilim=[1120]
...
freqdata=ft_freqanalysis(cfg,rawdata)

cfg=[]
cfg.method=montecarlo
cfg.statistic=indepsamplesT
cfg.design=[1212212112...]
...
freqstat=ft_freqstatistics(cfg,freqdata)

Example use in scripts


cfg=[]
cfg.dataset=Subject01.ds
cfg.bpfilter=[0.01150]
...
rawdata=ft_preprocessing(cfg)

cfg=[]
cfg.method=mtmfft
cfg.foilim=[1120]
...
freqdata=ft_freqanalysis(cfg,rawdata)

cfg=[]
cfg.method=montecarlo
cfg.statistic=indepsamplesT
cfg.design=[1212212112...]
...
freqstat=ft_freqstatistics(cfg,freqdata)

Example use in scripts


cfg=[]
cfg.dataset=Subject01.ds
cfg.bpfilter=[0.01150]
...
rawdata=ft_preprocessing(cfg)

cfg=[]
cfg.method=mtmfft
cfg.foilim=[1120]
...
freqdata=ft_freqanalysis(cfg,rawdata)

cfg=[]
cfg.method=montecarlo
cfg.statistic=indepsamplesT
cfg.design=[1212212112...]
...
freqstat=ft_freqstatistics(cfg,freqdata)

Example use in scripts


subjlist={S01.ds,S02.ds,}
triglist=[1379]
fors=1:nsubj
forc=1:ncond
cfg=[]
cfg.dataset=subjlist{s}
cfg.trigger=triglist(c)
rawdata{s,c}=preprocessing(cfg)
cfg=[]
cfg.method=mtm
cfg.foilim=[1120]
freqdata{s,c}=freqanalysis(cfg,rawdata)
end
end

Example use in scripts


subjlist={S01.ds,S02.ds,}
triglist=[1379]
fors=1:nsubj
forc=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

Das könnte Ihnen auch gefallen