Chronux Tutorial: Part I Hemant Bokil Cold Spring Harbor Laboratory.

Post on 17-Dec-2015

246 views 5 download

Tags:

transcript

Chronux Tutorial: Part I

Hemant Bokil

Cold Spring Harbor Laboratory

Peter Andrews

Contributors

Dan Hill Chris Fall Samar Mehta Hirak Parikh Andrew Sornborger

Partha Mitra

Hemant Bokil Catherine Loader

People

Outline Introduction to Chronux

► Aim ► Website

● Download ● Documentation

► Key functions

Analysis of LIP data - Example 2 of the previous talk : rates, spike and LFP spectra and coherences, coherences between cells

Analysis protocol

F-test for line noise

Chronux: Aim

To provide a comprehensive set of tools for the analysis of neurobiological time series data

Current version

Univariate and multivariate time series data.

Continuous data (e.g. LFPs) and point process data (e.g. spikes).

Multiple modalities: Image data (examples in Chris Fall’s talk)

Extensive online and within-Matlab help

GUI under active development, release in a few months

Locfit local regression and likelihood based analyses

Spike sorting

Spectral analysis

MATLAB®

Toolboxes

Website (www.chronux.org)

Documentation

Key routines for continuous processes

Denoising

Slow variations (e.g. movements of a patient for EEG data)

50/60 Hz line noise

locdetrend.m: Loess method rmlinesc.m

rmlinesmovingwinc.m

Spectra, Coherences etc

Local regression and likelihood

Fourier transforms using multiple tapers: mtfftc.m

Spectrum: mtspectrumc.m

Spectrogram: mtspecgramc.mCoherogram:mtcohgramc.m

Coherency:mtcoherencyc.m

Regression and likelihood: locfit.m

Plotting the fit: lfplot.mPlotting local confidence bands: lfband.m

Plotting global confidence bands: scb.m

Chronux data format Continuous/binned point process data

matrices with dimension time x channels/trials

e.g. 1000 x 10 dimensional matrix

interpreted as 1000 samples

10 channels/trials

Spikes times

struct array with dimension = number of channels/trials

e.g. data(1).times=[0.3 0.35 0.42 0.6]

data(2).times=[0.2 0.22 0.35]

2 spike trains with 4 and 3 spikes

Important parameter in mulitple Chronux functions

params: structure with multiple fields

Fs: sampling frequency (slightly different interpretation for spike times

tapers: controls the number of tapers

pad: controls the padding

fpass: frequency range of interest

err: controls error computation

trialave: controls whether or not to average over trials

Example II: Spike rates, spectra and coherence (from the previous lecture)

• Simultaneous two-cell recording from Macaque area LIP – dataset DynNeuroLIP.mat

Reach and

Saccade Task

DelayCueReach andSaccade

Pesaran et al (Unpublished)

DelayCue

Example II

3 local field potentials (LFP) and 2 single units, LFP sampled at 1 kHz

Trial: 3 seconds of data for 9 trials to one of the directions: 1 s (Baseline), 2 s (Delay + post movement)

Baseline: 1 second of data for 74 trials (pooled across all directions)

TasksCompute the following for the Memory trials

Spike rates

LFP and spike spectra

Spike-field coherence

Spike-Spike coherence

Compare spike-spike coherence during the memory period and the baseline period.

The main script for this tutorial

lip_master_script.m

Calls other scripts to run through the various analyses

The main script for this tutorial

lip_master_script.m

Calls other scripts to run through the various analyses

>> fit=locfit(data,'family','rate');>> lfplot(fit); >> lfband(fit);

Spike rate: 1 trial

Basic locfit usage (rate estimate)

Regression

>> fit=locfit(x,y);

Density estimate:replace 'rate‘ by ‘dens’

>> fit=locfit(data,'family','rate‘,’nn’,0.3);>> lfplot(fit); >> lfband(fit);

Setting the bandwidth –fixed (h), nearest neighbor (nn)

h: fixed/absolutebandwidth e.g. h=1is interpreted as 1 s if data is in seconds

nn: fixed fraction of the total number of points e.g. nn=0.3 takes the 30% closest points to a given point

Default: nn=0.7, h=0

Multiple trials

pool the spikes and compute fitrescale fits and confidence intervals

>>[S,f]=mtspectrumc(data);>> plot(f,10*log10(S))

S: spectrumf: frequency

LFP spectrum : mtspectrumc.m

Sampling frequencySet params.FsDefault = 1

>>params.Fs=1000;>>[S,f]=mtspectrumc(data,params);>> plot_vector(S,f);

plot_vector:Allows plottingerrors and choice of color and scale(default: log scalefor S)

>> plot_vector(S,f,’n’);%Uses linear scale for S

Restricting frequencies of interest

Set params.fpassDefault = [0 params.Fs/2]

>>params.Fs=1000;>>params.fpass=[0 100];>>[S,f]=mtspectrumc(data,params);>> plot_vector(S,f)

Changing the padding

Set params.padDefault=0

>> params.pad=2;>>[S,f]=mtspectrumc(data,params);>> plot_vector(S,f)

Allowed values: -1 0 1 2 ...For N=500, NFFT: 500 512 1024 2048 …Default: 0

>>params.tapers=[5 9];>>[S,f]=mtspectrumc(data,params);>> plot_vector(S,f,[],[],’r’)

Set params.tapers : of the form [TW K] Default = [3 5]

TW: time-bandwidth product K<2TW: well concentrated Slepian sequences

Smoothing (changing the bandwidth)

Averaging over trials

Set params.trialave=1

>> params.trialave=1;>>[S,f]=mtspectrumc(data,params);>> plot_vector(S,f)

Note: computing the spectrum separately for each trial and averaging will work for the spectrum, but not for the Jackknife error bars

>>p=0.05;>>params.err=[1 p];>>[S,f,Serr]=mtspectrumc(data,params);>>plot_vector(S,f,[],Serr);>> hold on

>>p=0.05;>>params.err=[2 p];>>[S,f,Serr]=mtspectrumc(data,params);>>plot(f,10*log10(Serr(1,:)),’r’);>>plot(f,10*log10(Serr(2,:)),’r’);

Errors params.err = [1 p]:

params.err=[2 p]: Jackknife

Serr: (1-p)% confidenceinterval of S

Set params.err

>>params.err=[1 p];>>[S,f,R,Serr]=mtspectrumpt(data,params);

Spike spectrum

mtspectrumpt.m

Spectrogram: mtspecgramc

>> movingwin=[0.5 0.05];>> [S,t,f]=mtspecgramc(data,movingwin,params);

Set duration and step size of moving window:movingwin

>>[S,t,f,R]=mtspecgrampt(data,movingwin,params);

Spike spectrogram

mtspecgrampt.m

Coherence between LFP and spikes

>>params.err=[1 p];>>[C,phi,S12,S1,S2,f,zerosp,confC,phistd]=coherencycpt(datalfp, datasp,params);

C: coherencePhi: phase

confC: Probability(C>confC)=p

phistd: asymptoticstandard deviation of phase

coherencycpt.m

Coherence between cells

>> params.err=[2 p]; >> [C,phi,S12,S1,S2,f,zerosp,confC,phistd,Cerr]=coherencypt(datasp1,… datasp2,params);

Phistd: Jackknifed standarddeviation of the phase

Cerr: (1-p)% confidenceintervals for C

coherencypt.m

Comparison of coherences and spectra

• Two experimental conditions with unequal number of trials

• Coherence and spectral estimates are biased and the bias depends on sample size

• Would like a simple hypothesis test with a corresponding p value

Bokil et al., J Neurosci Methods. 2006 Aug 28

Comparison of coherences and spectra

If z=tanh-1 (C)

• E(z)=tanh-1(Cpop)+1/(2m-2)

• V(z)=’(m)

Bokil et al., J Neurosci Methods. 2006 Aug 28

Null hypothesis: C1,pop=C2,pop z~N(0,1)

21

21

zVzV

zzz

For two coherence estimates C1,C2 define test statistic

[dz,vdz,Adz]=two_group_test_coherence(J1c1,J2c1,J1c2,J2c2,p,'y',f);

Fourier transforms

Bokil et al, 2006

Chronux code for comparing coherences

Electrophysiology Analysis Protocol

Electrophysiolgy: Data Conditioning

Removing 50/60 Hz

Model: X(t)=a cos(2f0t+)+(t)

Potential Method: Least squares

(t) is non-white in general

non-linear in f0 and

N

nn

fatnfaX

1

20

},,{2cosmin

0

N samples: X1, X2, …, XN

Thomson’s F test

Idea: Equation can be transformed to a

linear regression in frequency

2)cos(

ixix eex

)()( 00 2*2 teetX tfitfi

Notice

Thomson’s F test

Multiply both sides by kth Slepian sequence uk

n and Fourier transform

000~0

~fUffX kkk

where k=1,2,…, 2TW-1

)(~)()()(~

0*

0 fffUffUfX kkkk

Data Slepian NoiseAt f=f0

kkk axy

Thomson’s F-test

1

1

2

1

10

0

0

0~

K

k

K

kkk

kU

UfXf

Used in touch-tone phones to detect the key

2

100

2

022,2

0~

1

K

kkk

K

UffX

fKF

MN

N

ii

FN

x

,2M

2N

2N

1

2

M

Normal variables