Esempio n. 1
0
    def refresh(self):
        lines = [l for ax in self._fig.axes for l in ax.lines]
        axes = cycle(self._fig.get_axes(self.AXES_CLASS.name))
        params = self.params['draw']
        for i, channel in enumerate(self.channels):
            try:
                line = lines[i]
            except IndexError:
                # haven't plotted this channel before
                ax = next(axes)
                label = (hasattr(channel, 'label') and channel.label
                         or channel.texname)
                pparams = {}
                for key in params:
                    try:
                        if params[key][i]:
                            pparams[key] = params[key][i]
                    except IndexError:
                        pass

                ts = self.data[channel][0].copy()
                for t2 in self.data[channel][1:]:
                    ts.append(t2, pad=self.buffer.pad, gap=self.buffer.gap)
                l = ax.plot(ts, label=label, **pparams)
                ax.legend()
            else:
                # TODO: remove .copy() as soon as copy=True is fixed in gwpy
                ts = TimeSeries(line.get_ydata(),
                                times=line.get_xdata(),
                                copy=True).copy()
                for t2 in self.buffer.get((ts.span[1], self.epoch),
                                          channel,
                                          fetch=False):
                    ts.append(t2, pad=self.buffer.pad, gap=self.buffer.gap)
                line.set_xdata(ts.times.value)
                line.set_ydata(ts.value)

        # format figure
        if 'ylim' not in self.params['refresh']:
            for ax in self._fig.get_axes(self.AXES_CLASS.name):
                ax.relim()
                ax.autoscale_view(scalex=False)
        self.logger.info('Figure data updated')
        for ax in self._fig.get_axes(self.AXES_CLASS.name):
            if float(self.epoch) > (self.gpsstart + self.duration):
                ax.set_xlim(float(self.epoch - self.duration),
                            float(self.epoch))
            else:
                ax.set_xlim(float(self.gpsstart),
                            float(self.gpsstart) + self.duration)
            ax.set_epoch(self.epoch)
        self.set_params('refresh')
        self._fig.refresh()
        self.logger.debug('Figure refreshed')
Esempio n. 2
0
    def refresh(self):
        lines = [l for ax in self._fig.axes for l in ax.lines]
        axes = cycle(self._fig.get_axes(self.AXES_CLASS.name))
        params = self.params['draw']
        for i, channel in enumerate(self.channels):
            try:
                line = lines[i]
            except IndexError:
                # haven't plotted this channel before
                ax = next(axes)
                label = (hasattr(channel, 'label') and channel.label or
                         channel.texname)
                pparams = {}
                for key in params:
                    try:
                        if params[key][i]:
                            pparams[key] = params[key][i]
                    except IndexError:
                        pass

                ts = self.data[channel][0].copy()
                for t2 in self.data[channel][1:]:
                    ts.append(t2, pad=self.buffer.pad, gap=self.buffer.gap)
                l = ax.plot(ts, label=label, **pparams)
                ax.legend()
            else:
                # TODO: remove .copy() as soon as copy=True is fixed in gwpy
                ts = TimeSeries(line.get_ydata(), times=line.get_xdata(),
                                copy=True).copy()
                for t2 in self.buffer.get((ts.span[1], self.epoch), channel,
                                          fetch=False):
                    ts.append(t2, pad=self.buffer.pad, gap=self.buffer.gap)
                line.set_xdata(ts.times.value)
                line.set_ydata(ts.value)

        # format figure
        if 'ylim' not in self.params['refresh']:
            for ax in self._fig.get_axes(self.AXES_CLASS.name):
                ax.relim()
                ax.autoscale_view(scalex=False)
        self.logger.info('Figure data updated')
        for ax in self._fig.get_axes(self.AXES_CLASS.name):
            if float(self.epoch) > (self.gpsstart + self.duration):
                ax.set_xlim(float(self.epoch - self.duration),
                            float(self.epoch))
            else:
                ax.set_xlim(float(self.gpsstart),
                            float(self.gpsstart) + self.duration)
            ax.set_epoch(self.epoch)
        self.set_params('refresh')
        self._fig.refresh()
        self.logger.debug('Figure refreshed')
Esempio n. 3
0
 def test_add_timeseries(self):
     a = TimeSeries([1, 2, 3, 4, 5], name='test name', epoch=0,
                    sample_rate=1)
     # test simple add using 'name'
     data.add_timeseries(a)
     self.assertIn('test name', globalv.DATA)
     self.assertEqual(globalv.DATA['test name'], [a])
     # test add using key kwarg
     data.add_timeseries(a, key='test key')
     self.assertIn('test key', globalv.DATA)
     self.assertEqual(globalv.DATA['test key'], [a])
     # test add to existing key with coalesce
     b = TimeSeries([6, 7, 8, 9, 10], name='test name 2', epoch=5,
                    sample_rate=1)
     data.add_timeseries(b, key='test key', coalesce=True)
     self.assertEqual(globalv.DATA['test key'],
                      [a.append(b, inplace=False)])
Esempio n. 4
0
 def test_add_timeseries(self):
     a = TimeSeries([1, 2, 3, 4, 5],
                    name='test name',
                    epoch=0,
                    sample_rate=1)
     # test simple add using 'name'
     data.add_timeseries(a)
     self.assertIn('test name', globalv.DATA)
     self.assertEqual(globalv.DATA['test name'], [a])
     # test add using key kwarg
     data.add_timeseries(a, key='test key')
     self.assertIn('test key', globalv.DATA)
     self.assertEqual(globalv.DATA['test key'], [a])
     # test add to existing key with coalesce
     b = TimeSeries([6, 7, 8, 9, 10],
                    name='test name 2',
                    epoch=5,
                    sample_rate=1)
     data.add_timeseries(b, key='test key', coalesce=True)
     self.assertEqual(globalv.DATA['test key'],
                      [a.append(b, inplace=False)])