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 and trials where spikes were absent (in either channel),zero otherwise)
       confC (confidence level for C at 1-p %) - only for err(1)>=1
       phierr - standard deviation for phi (note that the routine gives phierr as phierr(1,...) and phierr(2,...) 
                in order to incorporate Jackknife (eventually). Currently phierr(1,...)=phierr(2,...). Note that 
                phi + 2 phierr(1,...) and phi -2 phierr(2,...) 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,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 and trials where spikes were absent (in either channel),zero otherwise)
0041 %       confC (confidence level for C at 1-p %) - only for err(1)>=1
0042 %       phierr - standard deviation for phi (note that the routine gives phierr as phierr(1,...) and phierr(2,...)
0043 %                in order to incorporate Jackknife (eventually). Currently phierr(1,...)=phierr(2,...). Note that
0044 %                phi + 2 phierr(1,...) and phi -2 phierr(2,...) will give 95% confidence bands for phi - only for err(1)>=1
0045 %       Cerr  (Jackknife error bars for C - use only for Jackknife - err(1)=2)
0046 
0047 if nargin < 3; error('Need data1 and data2 and window parameters'); end;
0048 if nargin < 4; params=[]; end;
0049 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0050 if nargin < 5 || isempty(fscorr); fscorr=0; end;
0051 
0052 if nargout > 10 && err(1)~=2; 
0053     error('Cerr computed only for Jackknife. Correct inputs and run again');
0054 end;
0055 if nargout > 8 && err(1)==0;
0056     error('Errors computed only if err(1) is not equal to zero');
0057 end;
0058 
0059 [N,Ch]=check_consistency(data1,data2);
0060 [mintime1,maxtime1]=minmaxsptimes(data1);
0061 [mintime2,maxtime2]=minmaxsptimes(data2);
0062 mintime=min(mintime1,mintime2);
0063 maxtime=max(maxtime1,maxtime2);
0064 
0065 tn=mintime+movingwin(1)/2:movingwin(2):maxtime-movingwin(1)/2;
0066 Nwin=round(Fs*movingwin(1)); % number of samples in window
0067 % Nstep=round(movingwin(2)*Fs); % number of samples to step through
0068 nfft=2^(nextpow2(Nwin)+pad);
0069 f=getfgrid(Fs,nfft,fpass); Nf=length(f);
0070 params.tapers=dpsschk(tapers,Nwin,Fs); % check tapers
0071 nw=length(tn);
0072 if trialave;
0073    C=zeros(nw,Nf);
0074    S12=zeros(nw,Nf);
0075    S1=zeros(nw,Nf);
0076    S2=zeros(nw,Nf);
0077    phi=zeros(nw,Nf);
0078    Cerr=zeros(2,nw,Nf);
0079    phierr=zeros(2,nw,Nf);
0080 else;
0081    C=zeros(nw,Nf,Ch);
0082    S12=zeros(nw,Nf,Ch);
0083    S1=zeros(nw,Nf,Ch);
0084    S2=zeros(nw,Nf,Ch);
0085    phi=zeros(nw,Nf,Ch);
0086    Cerr=zeros(2,nw,Nf,Ch);
0087    phierr=zeros(2,nw,Nf,Ch);
0088 end;
0089 zerosp=zeros(nw,Ch);
0090 
0091 for n=1:nw;
0092    t=linspace(tn(n)-movingwin(1)/2,tn(n)+movingwin(1)/2,Nwin);
0093    datawin1=extractdatapt(data1,[t(1) t(end)]);datawin2=extractdatapt(data2,[t(1) t(end)]);
0094    if nargout==11;
0095      [c,ph,s12,s1,s2,f,zsp,confc,phie,cerr]=coherencypt(datawin1,datawin2,params,fscorr,t);
0096      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0097      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0098      Cerr(1,n,:,:)=squeeze(cerr(1,:,:));
0099      Cerr(2,n,:,:)=squeeze(cerr(2,:,:));
0100    elseif nargout==10;
0101      [c,ph,s12,s1,s2,f,zsp,confc,phie]=coherencypt(datawin1,datawin2,params,fscorr,t);
0102      phierr(1,n,:,:)=squeeze(phie(1,:,:));
0103      phierr(2,n,:,:)=squeeze(phie(2,:,:));
0104    else
0105      [c,ph,s12,s1,s2,f,zsp]=coherencycpt(datawin1,datawin2,params,fscorr,t);
0106    end;
0107    C(n,:,:)=c;
0108    phi(n,:,:)=ph;
0109    S12(n,:,:)=s12;
0110    S1(n,:,:)=s1;
0111    S2(n,:,:)=s2;
0112    zerosp(n,:)=zsp;
0113 end;
0114 t=tn;
0115 C=squeeze(C); phi=squeeze(phi);S12=squeeze(S12); S1=squeeze(S1); S2=squeeze(S2);zerosp=squeeze(zerosp);
0116 if nargout > 9; confC=confc; end;
0117 if nargout==11;Cerr=squeeze(Cerr);end;
0118 if nargout==10; phierr=squeeze(phierr);end

Generated on Tue 28-Mar-2006 14:37:41 by m2html © 2003