


Multi-taper time-frequency coherence,cross-spectrum and individual spectra - two binned point processes
process
Usage:
[C,phi,S12,S1,S2,t,f,zerosp,confC,phierr,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr)
Input:
Note units have to be consistent. Thus, if movingwin is in seconds, Fs
has to be in Hz. see chronux.m for more information.
data1 (binned point process data in form samples x trials) -- required
data2 (binned point process data in form samples x trials) -- required
movingwin (in the form [window winstep] -- required
params: structure with fields tapers, pad, Fs, fpass, err, trialave
- optional
tapers (precalculated tapers from dpss, or in the form [NW K] e.g [3 5]) -- optional. If not
specified, use [NW K]=[3 5]
pad (padding factor for the FFT) - optional. Defaults to 0.
e.g. For N = 500, if PAD = 0, we pad the FFT
to 512 points; if PAD = 2, we pad the FFT
to 2048 points, etc.
Fs (sampling frequency) - optional. Default 1.
fpass (frequency band to be used in the calculation in the form
[fmin fmax])- optional.
Default all frequencies between 0 and Fs/2
err (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars
[0 p] or 0 - no error bars) - optional. Default 0.
trialave (average over trials when 1, don't average when 0) -
optional. Default 0
fscorr (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional
(available only for spikes). Defaults 0.
Output:
C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1)
phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
t (time)
f (frequencies)
zerosp (1 for windows where spikes in either channel were absent,zero otherwise)
confC (confidence level for C at 1-p %) - only for err(1)>=1
phierr (error bars for phi) - only for err(1)>=1
Cerr (Jackknife error bars for C - use only for Jackknife - err(1)=2)

0001 function [C,phi,S12,S1,S2,t,f,zerosp,confC,phierr,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr) 0002 % Multi-taper time-frequency coherence,cross-spectrum and individual spectra - two binned point processes 0003 % process 0004 % 0005 % Usage: 0006 % 0007 % [C,phi,S12,S1,S2,t,f,zerosp,confC,phierr,Cerr]=cohgrampb(data1,data2,movingwin,params,fscorr) 0008 % Input: 0009 % Note units have to be consistent. Thus, if movingwin is in seconds, Fs 0010 % has to be in Hz. see chronux.m for more information. 0011 % 0012 % data1 (binned point process data in form samples x trials) -- required 0013 % data2 (binned point process data in form samples x trials) -- required 0014 % movingwin (in the form [window winstep] -- required 0015 % params: structure with fields tapers, pad, Fs, fpass, err, trialave 0016 % - optional 0017 % tapers (precalculated tapers from dpss, or in the form [NW K] e.g [3 5]) -- optional. If not 0018 % specified, use [NW K]=[3 5] 0019 % pad (padding factor for the FFT) - optional. Defaults to 0. 0020 % e.g. For N = 500, if PAD = 0, we pad the FFT 0021 % to 512 points; if PAD = 2, we pad the FFT 0022 % to 2048 points, etc. 0023 % Fs (sampling frequency) - optional. Default 1. 0024 % fpass (frequency band to be used in the calculation in the form 0025 % [fmin fmax])- optional. 0026 % Default all frequencies between 0 and Fs/2 0027 % err (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars 0028 % [0 p] or 0 - no error bars) - optional. Default 0. 0029 % trialave (average over trials when 1, don't average when 0) - 0030 % optional. Default 0 0031 % fscorr (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional 0032 % (available only for spikes). Defaults 0. 0033 % Output: 0034 % C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1) 0035 % phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1) 0036 % S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1) 0037 % S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1) 0038 % S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1) 0039 % t (time) 0040 % f (frequencies) 0041 % zerosp (1 for windows where spikes in either channel were absent,zero otherwise) 0042 % confC (confidence level for C at 1-p %) - only for err(1)>=1 0043 % phierr (error bars for phi) - only for err(1)>=1 0044 % Cerr (Jackknife error bars for C - use only for Jackknife - err(1)=2) 0045 0046 if nargin < 3; error('Need data1 and data2 and window parameters'); end; 0047 if nargin < 4; params=[]; end; 0048 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params); 0049 if nargin < 5 || isempty(fscorr); fscorr=0; end; 0050 0051 if nargout > 8 && err(1)==0; 0052 error('When errors are desired, err(1) has to be non-zero.'); 0053 end; 0054 if nargout > 10 && err(1)~=2; 0055 error('Cerr computed only for Jackknife. Correct inputs and run again'); 0056 end; 0057 [N1,C1,N2,C2]=check_consistency(data1,data2); 0058 N=N1; 0059 0060 Nwin=round(Fs*movingwin(1)); % number of samples in window 0061 Nstep=round(movingwin(2)*Fs); % number of samples to step through 0062 nfft=2^(nextpow2(Nwin)+pad); 0063 [f,findx]=getfgrid(Fs,nfft,fpass); 0064 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers 0065 0066 winstart=1:Nstep:N1-Nwin+1; 0067 nw=length(winstart); 0068 for n=1:nw; 0069 indx=winstart(n):winstart(n)+Nwin-1; 0070 datawin1=data1(indx,:);datawin2=data2(indx,:); 0071 if nargout==11; 0072 [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypb(datawin1,datawin2,params,fscorr); 0073 confC=confc; 0074 phierr(1,n,:,:)=squeeze(phie(1,:,:)); 0075 phierr(2,n,:,:)=squeeze(phie(2,:,:)); 0076 Cerr(1,n,:,:)=squeeze(cerr(1,:,:)); 0077 Cerr(2,n,:,:)=squeeze(cerr(2,:,:)); 0078 elseif nargout==10; 0079 [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypb(datawin1,datawin2,params,fscorr); 0080 confC=confc; 0081 phierr(1,n,:,:)=squeeze(phie(1,:,:)); 0082 phierr(2,n,:,:)=squeeze(phie(2,:,:)); 0083 else 0084 [c,ph,s12,s1,s2,f,zsp]=coherencycpb(datawin1,datawin2,params,fscorr); 0085 end; 0086 C(n,:,:)=c; 0087 phi(n,:,:)=ph; 0088 S12(n,:,:)=s12; 0089 S1(n,:,:)=s1; 0090 S2(n,:,:)=s2; 0091 zerosp(n,:)=zsp; 0092 end; 0093 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp); 0094 if nargout==11;Cerr=squeeze(Cerr);end; 0095 if nargout==10; phierr=squeeze(phierr);end 0096 winmid=winstart+round(Nwin/2); 0097 t=winmid/Fs;