function obj = spikes(times, num_samples, dt, id)
% spikes - Spike times from a trace.
%
% Usage:
% obj = spikes(times, num_samples, dt, id)
%
% Parameters:
% times: The spike times [dt].
% num_samples: Number of samples in the original trace.
% dt: Time resolution [s].
% id: Identification string.
%
% Description:
%
% Returns a structure object with the following fields:
% times, num_samples, dt, id.
%
% General methods of spikes objects:
% spikes - Construct a new spikes object.
% plot - Graph the spikes.
% display - Returns and displays the identification string.
% subsref - Allows usage of . operator.
% spikeRate - Average spike rate [Hz].
% spikeRateISI - Average spike rate, calculated from ISIs [Hz].
% spikeISIs - Vector of spike ISIs [dt].
% ISICV - ISI coefficient of variation.
% SFA - Spike frequency accommodation.
% spikeAmpSlope - Approximate spike amplitude decay parameters.
% withinPeriod - Returns a spikes object valid only within the
% given period.
% periodWhole - Period object covering the whole period.
% getResults - Calculates a set of tests.
%
% Additional methods:
% See methods('spikes')
%
% See also: trace/spikes, trace, spike_shape, period
%
% $Id$
%
% Author:
% Cengiz Gunay <cgunay@emory.edu>, 2004/07/30
% Inspired by cip_dataset of Jeremy Edgerton.
% 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 == 0 % Called with no params
obj.times = [];
obj.num_samples = 0;
obj.dt = 1;
obj.id = '';
obj = class(obj, 'spikes');
elseif isa(times,'spikes') % copy constructor?
obj = times;
else
obj.times = times;
obj.num_samples = num_samples;
obj.dt = dt;
obj.id = id;
obj = class(obj, 'spikes');
end