Home > chronux_1_50 > pointtimes > cohgrampt.m

cohgrampt

PURPOSE ^

Multi-taper time-frequency coherence - two point processes given as times

SYNOPSIS ^

function [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampt(data1,data2,movingwin,params,fscorr)

DESCRIPTION ^

 Multi-taper time-frequency coherence - two point processes given as times
 process 

 Usage:

 [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampt(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  (structure array of spike times with dimension trials; also accepts 1d array of spike times) -- required
       data2  (structure array of spike times with dimension trials; also accepts 1d array of spike times) -- 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 (can take values -1,0,1,2...). 
                    -1 corresponds to no padding, 0 corresponds to padding
                    to the next highest power of 2 etc.
                       e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT
                       to 512 points, if pad=1, we pad to 1024 points etc.
                       Defaults to 0.
           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 and trials where spikes were absent (in either channel),zero otherwise)
       confC (confidence level for C at 1-p %) - only for err(1)>=1
       phistd - theoretical/jackknife (depending on err(1)=1/err(1)=2) standard deviation for phi - Note that 
                phi + 2 phistd and phi - 2 phistd will give 95% confidence
                bands for phi - only for err(1)>=1 
       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampt(data1,data2,movingwin,params,fscorr)
0002 % Multi-taper time-frequency coherence - two point processes given as times
0003 % process
0004 %
0005 % Usage:
0006 %
0007 % [C,phi,S12,S1,S2,t,f,zerosp,confC,phistd,Cerr]=cohgrampt(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  (structure array of spike times with dimension trials; also accepts 1d array of spike times) -- required
0013 %       data2  (structure array of spike times with dimension trials; also accepts 1d array of spike times) -- 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 (can take values -1,0,1,2...).
0020 %                    -1 corresponds to no padding, 0 corresponds to padding
0021 %                    to the next highest power of 2 etc.
0022 %                       e.g. For N = 500, if PAD = -1, we do not pad; if PAD = 0, we pad the FFT
0023 %                       to 512 points, if pad=1, we pad to 1024 points etc.
0024 %                       Defaults to 0.
0025 %           Fs   (sampling frequency) - optional. Default 1.
0026 %           fpass    (frequency band to be used in the calculation in the form
0027 %                                   [fmin fmax])- optional.
0028 %                                   Default all frequencies between 0 and Fs/2
0029 %           err  (error calculation [1 p] - Theoretical error bars; [2 p] - Jackknife error bars
0030 %                                   [0 p] or 0 - no error bars) - optional. Default 0.
0031 %           trialave (average over trials when 1, don't average when 0) - optional. Default 0
0032 %       fscorr   (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional
0033 %                (available only for spikes). Defaults 0.
0034 % Output:
0035 %       C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1)
0036 %       phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0037 %       S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0038 %       S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0039 %       S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0040 %       t (time)
0041 %       f (frequencies)
0042 %       zerosp (1 for windows and trials where spikes were absent (in either channel),zero otherwise)
0043 %       confC (confidence level for C at 1-p %) - only for err(1)>=1
0044 %       phistd - theoretical/jackknife (depending on err(1)=1/err(1)=2) standard deviation for phi - Note that
0045 %                phi + 2 phistd and phi - 2 phistd will give 95% confidence
0046 %                bands for phi - only for err(1)>=1
0047 %       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)
0048 
0049 if nargin < 3; error('Need data1 and data2 and window parameters'); end;
0050 if nargin < 4; params=[]; end;
0051 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0052 if nargin < 5 || isempty(fscorr); fscorr=0; end;
0053 
0054 if nargout > 10 && err(1)~=2; 
0055     error('Cerr computed only for Jackknife. Correct inputs and run again');
0056 end;
0057 if nargout > 8 && err(1)==0;
0058     error('Errors computed only if err(1) is not equal to zero');
0059 end;
0060 
0061 [N,Ch]=check_consistency(data1,data2);
0062 [mintime1,maxtime1]=minmaxsptimes(data1);
0063 [mintime2,maxtime2]=minmaxsptimes(data2);
0064 mintime=min(mintime1,mintime2);
0065 maxtime=max(maxtime1,maxtime2);
0066 
0067 tn=mintime+movingwin(1)/2:movingwin(2):maxtime-movingwin(1)/2;
0068 Nwin=round(Fs*movingwin(1)); % number of samples in window
0069 % Nstep=round(movingwin(2)*Fs); % number of samples to step through
0070 nfft=max(2^(nextpow2(Nwin)+pad),Nwin);
0071 f=getfgrid(Fs,nfft,fpass); Nf=length(f);
0072 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0073 nw=length(tn);
0074 if trialave;
0075    C=zeros(nw,Nf);
0076    S12=zeros(nw,Nf);
0077    S1=zeros(nw,Nf);
0078    S2=zeros(nw,Nf);
0079    phi=zeros(nw,Nf);
0080    Cerr=zeros(2,nw,Nf);
0081 %    phierr=zeros(2,nw,Nf);
0082    phistd=zeros(nw,Nf);
0083 else
0084    C=zeros(nw,Nf,Ch);
0085    S12=zeros(nw,Nf,Ch);
0086    S1=zeros(nw,Nf,Ch);
0087    S2=zeros(nw,Nf,Ch);
0088    phi=zeros(nw,Nf,Ch);
0089    Cerr=zeros(2,nw,Nf,Ch);
0090 %    phierr=zeros(2,nw,Nf,Ch);
0091    phistd=zeros(nw,Nf,Ch);
0092 end;
0093 zerosp=zeros(nw,Ch);
0094 
0095 for n=1:nw;
0096    t=linspace(tn(n)-movingwin(1)/2,tn(n)+movingwin(1)/2,Nwin);
0097    datawin1=extractdatapt(data1,[t(1) t(end)]);datawin2=extractdatapt(data2,[t(1) t(end)]);
0098    if nargout==11;
0099      [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypt(datawin1,datawin2,params,fscorr,t);
0100 %      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0101 %      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0102      phistd(n,:,:)=phie;
0103      Cerr(1,n,:,:)=squeeze(cerr(1,:,:));
0104      Cerr(2,n,:,:)=squeeze(cerr(2,:,:));
0105    elseif nargout==10;
0106      [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypt(datawin1,datawin2,params,fscorr,t);
0107 %      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0108 %      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0109      phistd(n,:,:)=phie;
0110    else
0111      [c,ph,s12,s1,s2,f,zsp]=coherencypt(datawin1,datawin2,params,fscorr,t);
0112    end;
0113    C(n,:,:)=c;
0114    phi(n,:,:)=ph;
0115    S12(n,:,:)=s12;
0116    S1(n,:,:)=s1;
0117    S2(n,:,:)=s2;
0118    zerosp(n,:)=zsp;
0119 end;
0120 t=tn;
0121 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp);
0122 if nargout > 9; confC=confc; end;
0123 if nargout==11;Cerr=squeeze(Cerr);end;
0124 % if nargout==10; phierr=squeeze(phierr);end
0125 if nargout==10; phistd=squeeze(phistd);end

Generated on Mon 09-Oct-2006 00:54:52 by m2html © 2003