fMRI data analysis using MATLAB - University of...

18
fMRI data analysis using MATLAB Psych 258 Russ Poldrack

Transcript of fMRI data analysis using MATLAB - University of...

Page 1: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

fMRI data analysis usingMATLAB

Psych 258Russ Poldrack

Page 2: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Issues for fMRI analysis

• Data file formats– Reading and writing data

• Data interrogation• Statistical analysis• Design optimization

Page 3: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

What is an MRI image?

• Matrix of intensity valuesin a slice through the brain– Generally either 8-bit or 16-

bit– In-plane dimensions

generally 64x64 to 256x256– # of slices from 16-128– Generally represented as

3D image (X, Y, & Zdimensions) or 4D (X/Y/Z+ time) timeseries

Page 4: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Data file formats

• There are a number of common file formats– DICOM

• Standard for data straight from scanner

– ANALYZE• Common standard for analysis programs• 3D vs. 4D

– MINC• Extension of NetCDF

– Nifti• Newest standard, developed by consensus committee

Page 5: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Format comparisons

*.mnc/*.nii*.img/.hdrArbitrarilynamed

Files

Extensive/integrated

Minimal/separate

Extensive/integrated

Header

arbitrary3D/4D2DDimension

MINC/Nifti

ANALYZEDICOM

Page 6: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Interrogating data in MATLAB

• SPM provides functions for readingANALYZE and MINC files into MATLAB

>> v=spm_vol('mask.img')

v =

fname: 'mask.img' dim: [53 63 46 2] mat: [4x4 double] pinfo: [3x1 double] descrip: 'spm_spm:resultant analysis mask'

>> d=spm_read_vols(v);>> size(d)

ans =

53 63 46

Page 7: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Converting DICOM files

• DICOM files are generally converted toANALYZE before analysis– SPM requires 3D analyze– FSL requires 4D analyze

• Tools for DICOM conversion– SPM2 - DICOM toolbox– Xmedcon - free conversion software– Debabeler - free conversion software from LONI

Page 8: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

>> imagesc(d(:,:,24))>> colormap gray

>> hist(reshape(d(:,:,24),1,53*63),100)

Page 9: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Loading a set of files

>> files=spm_get(Inf,'*.img','choose a set of images');>> v=spm_vol(files);>> d=spm_read_vols(v);>> whos Name Size Bytes Class d 4-D 154009600 double array files 188x74 27824 char array v 188x1 146812 struct array

>> size(d)Ans =

64 64 25 188

Page 10: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Plotting timeseries data>> plot(squeeze(d(32,32,20,:)))

Page 11: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Basic analysis of event-related data:1: create “stick function” for each condition2: convolve with canonical HRF3: estimate GLM using resulting regressor

Canonical HRFs:-gamma function-sum of gammas

Page 12: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Statistical modeling of data1) create a matrix of onset

times for each trial2) Create a “stick

function” with ones ateach onset

3) Convolve the stick-function with the HRF

4) Combine convolvedSF with column ofzeros tocreate design matrix

>> onsets=[…];

>> sf=zeros(1,100)>> sf(onsets)=1;

>> hrf=spm_hrf(TR);>> conv_sf=conv(sf,hrf);>> conv_sf=conv_sf(1:100);

>> X=[conv_sf’ ones(100,1)];

Page 13: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

FIR design matrix

FIR estimates

Page 14: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Y=Xb + N(0,1), b=[2 4 1000]

Page 15: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

onsets=randperm(100);TR=2;sf=zeros(1,100);sf(onsets(1:10))=1;hrf=spm_hrf(TR);conv_sf=conv(sf,hrf);conv_sf=conv_sf(1:100);X=[conv_sf' ones(100,1)];b=[5 100];data=X*b' + randn(100,1)*0.5;

b_hat=X\data;predicted=X*b_hat;

plot(data)hold onplot(predicted,'r')

Page 16: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Estimation and efficiencyY = Xβ + ε - GLMβest = (XTX)-1XTY - ML estimate for β (assuming IID)E = ((β - βest )2)-1 - efficiency of estimator

1E = ------------------- - efficiency depends only

trace((XTX)-1) upon the covariance of the design matrix

Page 17: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

TR=2;nruns=5000;efficiency=zeros(1,nruns);

for x=1:nruns onsets=randperm(100); sf=zeros(1,100); sf(onsets(1:10))=1; hrf=spm_hrf(TR); conv_sf=conv(sf,hrf); conv_sf=conv_sf(1:100); X=[conv_sf' ones(100,1)];

efficiency(x)=1/trace(inv(X'*X)); end; hist(efficiency);

Page 18: fMRI data analysis using MATLAB - University of Cagliaripeople.unica.it/lbarberini/files/2014/09/fmri-analysis-matlab... · •SPM provides functions for reading ANALYZE and MINC

Design matrix w/ 2 conditions: Contrast: [ 1 1 ]

Contrast: [ 1 -1 ]

For tasks vs. baseline,efficiency increaseswith variance andcorrelation

For comparisonbetween tasks,efficiency increaseswith variance butdecreases withcorrelation