def test_wave_reader(n=10000):
    #plt.interactive(True)
    try:
        update = 0
        FIG = plt.figure()
        rb = None
        Q = Queue()
        bs_reader = BS3Reader(WAVEProtocolHandler, Q, verbose=False,
                              ident='TestWAVE')
        bs_reader.start()
        for _ in xrange(n):
            #print Q.qsize()
            try:
                item = Q.get(block=True, timeout=2)
                for wave in item.event_lst:
                    gid, uid, tv, nc, ns, wf = wave
                    if rb is None:
                        rb = MxRingBuffer(dimension=(ns, nc), capacity=2000)
                    rb.append(wf)
                    #print 'rb:', len(rb)
                    update += 1
                if update > 1000:
                    print 'plotting enter'
                    FIG.clear()
                    waveforms({0: rb[:]}, tf=ns, plot_handle=FIG,
                                        plot_separate=False, show=False)
                    #plt.draw()
                    save_figure(FIG, 'wave', file_dir='E:\SpiDAQ')
                    update = 0
                    print 'plotting exit'
            except Empty:
                continue
    except Exception, ex:
        print ex
Beispiel #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
Beispiel #3
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