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
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
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