Home > chronux_0.5 > 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,phierr,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,phierr,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. 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)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [C,phi,S12,S1,S2,t,f,zerosp,confC,phierr,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,phierr,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. 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) - optional. Default 0
0030 %       fscorr   (finite size corrections, 0 (don't use finite size corrections) or 1 (use finite size corrections) - optional
0031 %                (available only for spikes). Defaults 0.
0032 % Output:
0033 %       C (magnitude of coherency time x frequencies x trials for trialave=0; time x frequency for trialave=1)
0034 %       phi (phase of coherency time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0035 %       S12 (cross spectrum - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0036 %       S1 (spectrum 1 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0037 %       S2 (spectrum 2 - time x frequencies x trials for no trial averaging; time x frequency for trialave=1)
0038 %       t (time)
0039 %       f (frequencies)
0040 %       zerosp (1 for windows where spikes in either channel were absent,zero otherwise)
0041 %       confC (confidence level for C at 1-p %) - only for err(1)>=1
0042 %       phierr (error bars for phi) - only for err(1)>=1
0043 %       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)
0044 
0045 if nargin < 3; error('Need data1 and data2 and window parameters'); end;
0046 if nargin < 4; params=[]; end;
0047 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0048 if nargin < 5 || isempty(fscorr); fscorr=0; end;
0049 
0050 if nargout > 10 && err(1)~=2; 
0051     error('Cerr computed only for Jackknife. Correct inputs and run again');
0052 end;
0053 if nargout > 8 && err(1)==0;
0054     error('Errors computed only if err(1) is not equal to zero');
0055 end;
0056 
0057 [N1,C1,N2,C2]=check_consistency(data1,data2);
0058 [mintime1,maxtime1]=minmaxsptimes(data1);
0059 [mintime2,maxtime2]=minmaxsptimes(data2);
0060 mintime=min(mintime1,mintime2);
0061 maxtime=max(maxtime1,maxtime2);
0062 
0063 tn=mintime+movingwin(1)/2:movingwin(2):maxtime-movingwin(1)/2;
0064 Nwin=round(Fs*movingwin(1)); % number of samples in window
0065 Nstep=round(movingwin(2)*Fs); % number of samples to step through
0066 nfft=2^(nextpow2(Nwin)+pad);
0067 [f,findx]=getfgrid(Fs,nfft,fpass); 
0068 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0069 nw=length(tn);
0070 for n=1:nw;
0071    t=linspace(tn(n)-movingwin(1)/2,tn(n)+movingwin(1)/2,Nwin);
0072    datawin1=extractdatapt(data1,[t(1) t(end)]);datawin2=extractdatapt(data2,[t(1) t(end)]);
0073    if nargout==11;
0074      [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypt(datawin1,datawin2,params,fscorr,t);
0075      confC=confc;
0076      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0077      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0078      Cerr(1,n,:,:)=squeeze(cerr(1,:,:));
0079      Cerr(2,n,:,:)=squeeze(cerr(2,:,:));
0080    elseif nargout==10;
0081      [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypt(datawin1,datawin2,params,fscorr,t);
0082      confC=confc;
0083      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0084      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0085    else
0086      [c,ph,s12,s1,s2,f,zsp]=coherencycpt(datawin1,datawin2,params,fscorr,t);
0087    end;
0088    C(n,:,:)=c;
0089    phi(n,:,:)=ph;
0090    S12(n,:,:)=s12;
0091    S1(n,:,:)=s1;
0092    S2(n,:,:)=s2;
0093    zerosp(n,:)=zsp;
0094 end;
0095 t=tn;
0096 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp);
0097 if nargout==11;Cerr=squeeze(Cerr);end;
0098 if nargout==10; phierr=squeeze(phierr);end

Generated on Tue 16-Aug-2005 21:33:45 by m2html © 2003