Пример #1
0
    def plot_buffer_to_axis(self, axis=None, idx=None, limits=None):
        """plots the current buffer on the passed axis handle"""

        try:
            from spikeplot import plt, COLOURS
        except ImportError:
            return None

        # init
        ax = axis
        if ax is None:
            f = plt.figure()
            ax = f.add_subplot(111)
        col = 'k'
        if idx is not None:
            col = COLOURS[idx % len(COLOURS)]
        spks = self._xi_buf[:]
        n, s, c = spks.shape
        spks = spks.swapaxes(2, 1).reshape(n, s * c)

        # plot
        ax.plot(spks.T, color='gray')
        ax.plot(spks.mean(axis=0), color=col, lw=2)
        for i in xrange(1, c):
            ax.axvline((self.tf * i), ls='dashed', color='y')
        ax.set_xlim(0, s * c)
        if limits is not None:
            ax.set_ylim(*limits)
        ax.set_xlabel('time [samples]')
        ax.set_ylabel('amplitude [mV]')

        return spks.min(), spks.max()
Пример #2
0
    def plot(self, data, views=2, show=False, filename=None):
        """plot clustering"""

        # get plotting tools
        try:
            from spikeplot import plt, cluster, save_figure
        except ImportError:
            return None

        # init
        views = min(views, int(data.shape[1] / 2))
        fig = plt.figure()
        fig.suptitle('clustering [%s]' % self.clus_type)
        ax = [fig.add_subplot(2, views, v + 1) for v in xrange(views)]
        axg = fig.add_subplot(212)
        ncmp = int(self.labels.max() + 1)
        cdata = dict(
            zip(xrange(ncmp), [data[self.labels == c] for c in xrange(ncmp)]))

        # plot clustering
        for v in xrange(views):
            cluster(cdata,
                    data_dim=(2 * v, 2 * v + 1),
                    plot_handle=ax[v],
                    plot_mean=sp.sqrt(self.sigma_factor),
                    xlabel='PC %d' % int(2 * v),
                    ylabel='PC %d' % int(2 * v + 1),
                    show=False)

        # plot gof
        axg.plot(self._gof, ls='steps')
        for i in xrange(1, len(self.crange)):
            axg.axvline(i * self.repeats - 0.5, c='y', ls='--')
        axg.axvspan(self._winner - 0.5,
                    self._winner + 0.5,
                    fc='gray',
                    alpha=0.2)
        labels = []
        for k in self.crange:
            labels += ['%d' % k]
            labels += ['.'] * (self.repeats - 1)
        axg.set_xticks(sp.arange(len(labels)))
        axg.set_xticklabels(labels)
        axg.set_xlabel('cluster count and repeats')
        axg.set_ylabel(str(self.gof_type).upper())
        axg.set_xlim(-1, len(labels))

        # handle the resulting plot
        if filename is not None:
            save_figure(fig, filename, '')
        if show is True:
            plt.show()
        return True