Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chronux Tutorial: Part I

Similar presentations


Presentation on theme: "Chronux Tutorial: Part I"— Presentation transcript:

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

2 Dan Hill Chris Fall Samar Mehta Hirak Parikh Andrew Sornborger
People Hemant Bokil Catherine Loader Partha Mitra Peter Andrews Contributors Dan Hill Chris Fall Samar Mehta Hirak Parikh Andrew Sornborger

3 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

4 Chronux: Aim To provide a comprehensive set of tools for the analysis of neurobiological time series data

5 Current version Spectral analysis Locfit MATLAB®
local regression and likelihood based analyses MATLAB® Toolboxes Spike sorting 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

6 Website (www.chronux.org)
Slide will highlight two things in the website – the place to download chronux and the m2html documentation. The next few slides show screenshots of the documentation.

7 Documentation Chronux documentation is built using m2html and graphviz. On going to the documentation page, you will first see a list of folders. The important ones from the standpoint of the user are (i) continuous (circle continuous), (ii) point binned (circle pointbinned), (iii) pointtimes (circle pointtimes) (iv) hybrid, (v) locfit and (vi) spikesort. The routines in ‘continuous’ are applicable to continuous process data (such as LFP), those in ‘pointtimes’ directory are applicable to spike times, and those in the ‘pointbinned’ are applicable to binned spike counts. The ‘hybrid’ directory contains routines that involve one continuous and one point process (e.g. the spike-field coherence routine is in this directory). Note that in addition to help for each routine, the website also contains graphs describing the interdependence of the different routines and thus serves as an aid to understanding.

8 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 Removing slow variations and removing line noise are two very common tasks of any analysis of neural recordings. Chronux implements the Loess method for detrending where the data is fit with a local line using overlapping windows. Unlike bandpass filtering, the Loess method does not suffer from problems at the edges. For the 50/60 Hz line noise, Chronux implements the Harmonic F-test due to David Thomson. We will discuss this at the end of the tutorial.

9 Spectra, Coherences etc
Fourier transforms using multiple tapers: mtfftc.m Spectrum: mtspectrumc.m Coherency:mtcoherencyc.m Spectrogram: mtspecgramc.m Coherogram:mtcohgramc.m Local regression and likelihood The basic routines are listed here for continuous processes. Corresponding routines for spike times have names ending in pt, and corresponding routines for binned spike counts have names ending in pb. Note that almost all Chronux routines come with error bars. Regression and likelihood: locfit.m Plotting the fit: lfplot.m Plotting local confidence bands: lfband.m Plotting global confidence bands: scb.m

10 Chronux data format Continuous/binned point process data
matrices with dimension time x channels/trials e.g 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=[ ] data(2).times=[ ] 2 spike trains with 4 and 3 spikes Chronux’s standard data format is listed here. We will also expand the Chronux internal format shortly to include cell arrays. We will incorporate other ways of storing data by including filters to convert data from other formats to the Chronux format – filters to convert from the plexon format to the Chronux format will be released soon.

11 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

12 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 Cue Delay Cue Delay Reach and Saccade Task Slide from the morning’s lectures. Pesaran et al (Unpublished)

13 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) Description of data

14 Tasks Compute 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.

15 The main script for this tutorial lip_master_script.m
Calls other scripts to run through the various analyses Type lip_master_script at the Matlab command prompt and press return

16 The main script for this tutorial lip_master_script.m
Calls other scripts to run through the various analyses Type lip_master_script at the Matlab command prompt and press return

17 Basic locfit usage (rate estimate)
Spike rate: 1 trial Basic locfit usage (rate estimate) >> fit=locfit(data,'family','rate'); >> lfplot(fit); >> lfband(fit); Density estimate: replace 'rate‘ by ‘dens’ Regression >> fit=locfit(x,y);

18 Setting the bandwidth –fixed (h), nearest neighbor (nn)
h: fixed/absolute bandwidth e.g. h=1 is 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 >> fit=locfit(data,'family','rate‘,’nn’,0.3); >> lfplot(fit); >> lfband(fit);

19 Multiple trials pool the spikes and compute fit
rescale fits and confidence intervals Pause at this place

20 LFP spectrum : mtspectrumc.m
>>[S,f]=mtspectrumc(data); >> plot(f,10*log10(S)) S: spectrum f: frequency

21 Sampling frequency Set params.Fs plot_vector: Allows plotting
Default = 1 >>params.Fs=1000; >>[S,f]=mtspectrumc(data,params); >> plot_vector(S,f); plot_vector: Allows plotting errors and choice of color and scale (default: log scale for S) >> plot_vector(S,f,’n’); %Uses linear scale for S

22 Restricting frequencies of interest
Set params.fpass Default = [0 params.Fs/2] >>params.Fs=1000; >>params.fpass=[0 100]; >>[S,f]=mtspectrumc(data,params); >> plot_vector(S,f)

23 Changing the padding Set params.pad Allowed values: -1 0 1 2 ...
Default=0 Allowed values: For N=500, NFFT: … Default: 0 >> params.pad=2; >>[S,f]=mtspectrumc(data,params); >> plot_vector(S,f)

24 Smoothing (changing the bandwidth)
Set params.tapers : of the form [TW K] Default = [3 5] TW: time-bandwidth product K<2TW: well concentrated Slepian sequences Note the ‘r’ argument of plot_vector. That sets the color for the plot, in this case, red. >>params.tapers=[5 9]; >>[S,f]=mtspectrumc(data,params); >> plot_vector(S,f,[],[],’r’)

25 Averaging over trials Set 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

26 params.err=[2 p]: Jackknife Set params.err
Errors params.err = [1 p]: params.err=[2 p]: Jackknife Set params.err Serr: (1-p)% confidence interval of S >>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’);

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

28 Spectrogram: mtspecgramc
Set duration and step size of moving window:movingwin >> movingwin=[ ]; >> [S,t,f]=mtspecgramc(data,movingwin,params);

29 Spike spectrogram mtspecgrampt.m
>>[S,t,f,R]=mtspecgrampt(data,movingwin,params);

30 Coherence between LFP and spikes
coherencycpt.m >>params.err=[1 p]; >>[C,phi,S12,S1,S2,f,zerosp,confC,phistd]=coherencycpt(datalfp, datasp,params); C: coherence Phi: phase confC: Probability(C>confC)=p phistd: asymptotic standard deviation of phase

31 Coherence between cells
coherencypt.m >> params.err=[2 p]; >> [C,phi,S12,S1,S2,f,zerosp,confC,phistd,Cerr]=coherencypt(datasp1,… datasp2,params); Phistd: Jackknifed standard deviation of the phase Cerr: (1-p)% confidence intervals for C

32 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 Aug 28

33 Comparison of coherences and spectra
If z=tanh-1 (C) E(z)=tanh-1(Cpop)+1/(2m-2) V(z)=’(m) For two coherence estimates C1,C2 define test statistic Null hypothesis: C1,pop=C2,pop  z~N(0,1) Bokil et al., J Neurosci Methods Aug 28

34 Chronux code for comparing coherences
[dz,vdz,Adz]=two_group_test_coherence(J1c1,J2c1,J1c2,J2c2,p,'y',f); Fourier transforms Bokil et al, 2006

35 Electrophysiology Analysis Protocol

36 Electrophysiolgy: Data Conditioning

37 Removing 50/60 Hz N samples: X1, X2, …, XN
Model: X(t)=a cos(2f0t+)+(t) Potential Method: Least squares (t) is non-white in general non-linear in f0 and 

38 Thomson’s F test Idea: Equation can be transformed to a linear regression in frequency
Notice

39 Thomson’s F test Data Slepian Noise At f=f0 where k=1,2,…, 2TW-1
Multiply both sides by kth Slepian sequence ukn and Fourier transform where k=1,2,…, 2TW-1 Data Slepian Noise At f=f0

40 Thomson’s F-test Normal variables
Used in touch-tone phones to detect the key


Download ppt "Chronux Tutorial: Part I"

Similar presentations


Ads by Google