function [h] = raster_plot(events,times,varargin)
% RASTER_PLOT raster plot
% RASTER_PLOT(E,T) plots the spike events in E at corresponding times T as a raster plot, with one point per spike, one row
% per event index (i.e. either per neuron or per sweep)
%
% RASTER_PLOT(E,T,FLAG) where FLAG is:
% 'r': randomises the order in which the events are plotted - this is useful for removing any potentially arbitrary structure
% imposed by the order of event indexing (e.g. in the BG models, the events are ordered by channel)
%
% 's': puts the rasterplot as the top window of a 2x1 subplot [put 'rs' to get both]
%
% RASTER_PLOT(E,T,FLAG,STRING) adds the STRING as the title of the plot (put FLAG=[] to omit)
%
% Returns the handle to the figure window
%
% Mark Humphries 9/10/2009
new_events = events;
if nargin >= 3 & findstr(varargin{1},'r')
% new_times = [];
event_idxs = unique(events); % array of indices
rand_seq = randperm(length(event_idxs));
map = event_idxs(rand_seq); % array of indices to re-map to
for loop=1:length(map)
new_events(events==event_idxs(loop)) = map(loop); % replace
end
end
h = figure
if nargin >= 3 & findstr(varargin{1},'s')
subplot(211)
end
plot(times,new_events,'k.')
min(new_events);
%axis([min(new_times) max(new_times) min(new_events) max(new_events)]);
if nargin==4
title(varargin{2});
end
ylabel('event')
xlabel('time');