0001 function clusterXT(spikes, useassigns, show, threed)
0002
0003
0004
0005 if (nargin < 2 || isempty(useassigns)), useassigns = spikes.overcluster.assigns; cmap = spikes.overcluster.colors; end;
0006 if (nargin < 3 || isempty(show)), show = unique(useassigns); end;
0007 if (nargin < 4), threed = 0; end;
0008
0009 if (nargin > 1),
0010 if (isfield(spikes, 'overcluster') && all(ismember(useassigns, unique(spikes.overcluster.assigns))))
0011 cmap = spikes.overcluster.colors;
0012 else
0013 cmap = jetm(length(show));
0014 end
0015 end
0016
0017 show(show == 0) = [];
0018
0019 clustlist = unique(useassigns);
0020 t = ((0:size(spikes.waveforms,2)-1)-spikes.threshT)./spikes.Fs;
0021
0022
0023 cla reset; hold on;
0024 hndl = zeros(1,length(clustlist));
0025 for j = 1:length(clustlist)
0026 k = clustlist(j);
0027 members = find(useassigns == k);
0028 waves = spikes.waveforms(members,:);
0029
0030 if (k == 0), color = [0 0 0];
0031 elseif (ismember(k,show)), color = cmap(k,:);
0032 else color = Clgy;
0033 end
0034
0035 if (~isempty(members))
0036 if (~threed)
0037 h = mplot(t, waves, 'Color', color);
0038 set(h, 'ButtonDownFcn', {@raise_me, h});
0039 if (k == 0), hout = h;
0040 else hndl(k) = h;
0041 end
0042 else
0043 [lh,ph] = errorarea(mean(waves,1), std(waves,1,1));
0044 set(lh, 'Color', brighten(color, -0.6), 'ZData', repmat(k, size(get(lh,'XData'))));
0045 set(ph, 'FaceColor', color, 'ZData', repmat(k, size(get(ph,'XData'))), 'FaceAlpha', 0.8);
0046 end
0047 end
0048 end
0049 hold off; axis tight; xlabel('Time (samples)'); ylabel('Voltage (A/D Levels)');
0050
0051 if (~threed), uistack(hndl(show), 'top');
0052 else cameratoolbar('SetCoordSys', 'y');
0053 end
0054
0055 if ((length(show) < 33) && ~threed)
0056 leg = cell(length(show),1);
0057 for k = 1:length(show), leg{k} = num2str(sort(show(k))); end;
0058 if (any(useassigns == 0))
0059 legend([hout, hndl(show)], cat(1, {'Outliers'}, leg), 0);
0060 else
0061 legend(hndl(show),leg,0);
0062 end
0063 end
0064