function obj = spike_shape(t, s, props)
% spike_shape - Convert averaged spikes in the trace to a spike_shape object.
%
% Usage:
% obj = spike_shape(trace, spikes, props)
%
% Parameters:
% trace: A trace object.
% spikes: A spikes object on trace.
%
% Description:
% Creates a spike_shape object from averaged spikes. USE THIS ONLY IF
% YOU WANT TO USE AVERAGED SPIKE SHAPES.
%
% See also: spike_shape
%
% $Id$
%
% Author:
% Cengiz Gunay <cgunay@emory.edu>, 2004/08/04
% Copyright (c) 2007 Cengiz Gunay <cengique@users.sf.net>.
% This work is licensed under the Academic Free License ("AFL")
% v. 3.0. To view a copy of this license, please look at the COPYING
% file distributed with this software or visit
% http://opensource.org/licenses/afl-3.0.php.
if nargin < 2 % Called with insufficient params
error('Need parameters.');
end
if ~ exist('props', 'var')
props = struct;
end
% Find minimal ISI value for maximal range that can be acquired with
% single spikes
min_isi = min(getISIs(s));
% Set min_isi to 0 if no ISI so that left, right don't become empty lists
if isempty(min_isi)
if ~isempty(s.times)
spike_time = s.times;
else
spike_time = NaN;
end
min_isi = 7e-3 / t.dt + length(t.data) - spike_time - floor(3e-3 / t.dt);
end
% Points from left side of peak, depends on the half minimal isi
left = floor(min(7e-3 / t.dt, min_isi/2));
% Calculate right side accordingly
% Add some more on the right side
right = min_isi - left + floor(min(3e-3 / t.dt, left /2));
if length(s.times) > 0
[allspikes, avgspikes] = collectspikes(t.data, s.times, left, right, 0);
obj = spike_shape(avgspikes', t.dt, t.dy, t.id, props);
else
%error('spike_shape:no_spikes', 'No spikes exist!');
% Create empty object instead of error
obj = spike_shape([], t.dt, t.dy, t.id, props);
end