Home > FMAToolbox > Data > GetSpikeWaveforms.m

GetSpikeWaveforms

PURPOSE ^

GetSpikeWaveforms - Get spike waveforms.

SYNOPSIS ^

function data = GetSpikeWaveforms(unit,varargin)

DESCRIPTION ^

GetSpikeWaveforms - Get spike waveforms.

  USAGE

    waveforms = GetSpikeWaveforms(unit,<options>)

    unit           [electrode group,cluster] pair
    <options>      optional list of property-value pairs (see table below)

    =========================================================================
     Properties    Values
    -------------------------------------------------------------------------
     'restrict'    list of time intervals to read from the data file
    =========================================================================

  OUTPUT

    waveforms      3D array (spike #,channel,sample) of waveforms

  SEE

    See also LoadSpikeWaveforms, PlotSpikeWaveforms.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function data = GetSpikeWaveforms(unit,varargin)
0002 
0003 %GetSpikeWaveforms - Get spike waveforms.
0004 %
0005 %  USAGE
0006 %
0007 %    waveforms = GetSpikeWaveforms(unit,<options>)
0008 %
0009 %    unit           [electrode group,cluster] pair
0010 %    <options>      optional list of property-value pairs (see table below)
0011 %
0012 %    =========================================================================
0013 %     Properties    Values
0014 %    -------------------------------------------------------------------------
0015 %     'restrict'    list of time intervals to read from the data file
0016 %    =========================================================================
0017 %
0018 %  OUTPUT
0019 %
0020 %    waveforms      3D array (spike #,channel,sample) of waveforms
0021 %
0022 %  SEE
0023 %
0024 %    See also LoadSpikeWaveforms, PlotSpikeWaveforms.
0025 
0026 % Copyright (C) 2004-2014 by Michaƫl Zugaro
0027 %
0028 % This program is free software; you can redistribute it and/or modify
0029 % it under the terms of the GNU General Public License as published by
0030 % the Free Software Foundation; either version 3 of the License, or
0031 % (at your option) any later version.
0032 
0033 global DATA;
0034 if isempty(DATA),
0035     error('No session defined (did you forget to call SetCurrentSession? Type ''help <a href="matlab:help Data">Data</a>'' for details).');
0036 end
0037 
0038 % Default values
0039 intervals = [];
0040 
0041 if nargin < 1,
0042     error('Incorrect number of parameters (type ''help <a href="matlab:help GetSpikeWaveforms">GetSpikeWaveforms</a>'' for details).');
0043 end
0044 
0045 if ~isivector(unit,'#2','>=0'),
0046     error('Incorrect unit (type ''help <a href="matlab:help GetSpikeWaveforms">GetSpikeWaveforms</a>'' for details).');
0047 end
0048 group = unit(1);
0049 cluster = unit(2);
0050 
0051 % Parse parameter list
0052 for i = 1:2:length(varargin),
0053   if ~ischar(varargin{i}),
0054     error(['Parameter ' num2str(i+1) ' is not a property (type ''help <a href="matlab:help GetSpikeWaveforms">GetSpikeWaveforms</a>'' for details).']);
0055   end
0056   switch(lower(varargin{i})),
0057     case {'intervals','restrict'},
0058       intervals = varargin{i+1};
0059       if ~isdmatrix(intervals) || size(intervals,2) ~= 2,
0060             error('Incorrect value for property ''intervals'' (type ''help <a href="matlab:help GetSpikeWaveforms">GetSpikeWaveforms</a>'' for details).');
0061       end
0062     otherwise,
0063         error(['Unknown property ''' num2str(varargin{i}) ''' (type ''help <a href="matlab:help GetSpikeWaveforms">GetSpikeWaveforms</a>'' for details).']);
0064   end
0065 end
0066 
0067 filename = [DATA.session.path '/' DATA.session.basename '.spk.' int2str(group)];
0068 nChannels = length(DATA.spikeGroups.groups{group});
0069 nSamplesPerWaveform = DATA.spikeGroups.nSamples(group);
0070 
0071 % Determine which spikes belong to this cluster
0072 t = GetSpikes([group -3],'output','full');
0073 c = t(:,3) == cluster;
0074 if isempty(intervals),
0075     % List all spikes in this cluster
0076     list = find(c);
0077 else
0078     % List spikes that fall in the requested time intervals
0079     in = InIntervals(t(:,1),intervals);
0080     list = find(in&c);
0081 end
0082 
0083 data = LoadSpikeWaveforms(filename,nChannels,nSamplesPerWaveform,list);

Generated on Fri 16-Mar-2018 13:00:20 by m2html © 2005