Exemple #1
0
def test_TriggerAccumulator():
    app = pg.mkQApp()

    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel,
                  sample_interval=1. / sample_rate,
                  chunksize=chunksize,
                  buffer=buffer)
    dev.output.configure(protocol='tcp',
                         interface='127.0.0.1',
                         transfermode='plaindata',
                         dtype='float32')
    dev.initialize()

    trigger = AnalogTrigger()
    trigger.configure()
    trigger.input.connect(dev.output)
    trigger.output.configure(protocol='tcp',
                             interface='127.0.0.1',
                             transfermode='plaindata')
    trigger.initialize()
    trigger.params['threshold'] = 1.
    trigger.params['debounce_mode'] = 'no-debounce'
    trigger.params['front'] = '+'
    trigger.params['debounce_time'] = 0.1

    triggeraccumulator = TriggerAccumulator()
    triggeraccumulator.configure(max_stack_size=5)
    triggeraccumulator.inputs['signals'].connect(dev.output)
    triggeraccumulator.inputs['events'].connect(trigger.output)
    triggeraccumulator.initialize()
    triggeraccumulator.params['stack_size'] = 3
    triggeraccumulator.params['left_sweep'] = -.2
    triggeraccumulator.params['right_sweep'] = .5

    #~ def on_new_chunk(total_trig):
    #~ print
    #~ print('total_trig', total_trig)
    #~ print('triggeraccumulator.stack', triggeraccumulator.stack)
    #~ print('triggeraccumulator.total_trig', triggeraccumulator.total_trig)
    #~ triggeraccumulator.new_chunk.connect(on_new_chunk)

    dev.start()
    trigger.start()
    triggeraccumulator.start()

    def terminate():
        dev.stop()
        trigger.stop()
        triggeraccumulator.stop()
        app.quit()

    # start for a while
    timer = QtCore.QTimer(singleShot=True, interval=6000)
    timer.timeout.connect(terminate)
    timer.start()

    app.exec_()

    assert triggeraccumulator.total_trig == 6
Exemple #2
0
def do_filtertest(engine):
    app = pg.mkQApp()

    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel,
                  sample_interval=1. / sample_rate,
                  chunksize=chunksize,
                  buffer=buffer)
    dev.output.configure(**stream_spec)
    dev.initialize()

    f1, f2 = 40., 60.

    coefficients = scipy.signal.iirfilter(
        7, [f1 / sample_rate * 2, f2 / sample_rate * 2],
        btype='bandpass',
        ftype='butter',
        output='sos')

    filter = OverlapFiltfilt()
    filter.configure(coefficients=coefficients,
                     engine=engine,
                     chunksize=chunksize,
                     overlapsize=overlapsize)
    filter.input.connect(dev.output)
    filter.output.configure(**stream_spec)
    filter.initialize()

    viewer = QOscilloscope()
    viewer.configure(with_user_dialog=True)
    viewer.input.connect(filter.output)
    viewer.initialize()
    viewer.show()

    viewer2 = QOscilloscope()
    viewer2.configure(with_user_dialog=True)
    viewer2.input.connect(dev.output)
    viewer2.initialize()
    viewer2.show()

    viewer2.start()
    viewer.start()
    filter.start()
    dev.start()

    def terminate():
        dev.stop()
        filter.stop()
        viewer.stop()
        viewer2.stop()
        app.quit()

    # start for a while
    timer = QtCore.QTimer(singleShot=True, interval=3000)
    timer.timeout.connect(terminate)
    timer.start()

    app.exec_()
Exemple #3
0
def do_filtertest(engine):
    stream_spec = dict(protocol='tcp', interface='127.0.0.1', transfermode='sharedmem',
                            double=True, dtype = 'float32',buffer_size=2048*50, shape=(-1,nb_channel))
    
    app = pg.mkQApp()
    
                            
    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel, sample_interval=1./sample_rate, chunksize=chunksize,
                    buffer=buffer)
    dev.output.configure( **stream_spec)
    dev.initialize()
    
    
    f1, f2 = 40., 60.
    
    coefficients = scipy.signal.iirfilter(7, [f1/sample_rate*2, f2/sample_rate*2],
                btype = 'bandpass', ftype = 'butter', output = 'sos')
    
    filter = SosFilter()
    filter.configure(coefficients = coefficients, engine=engine, chunksize=chunksize)
    filter.input.connect(dev.output)
    filter.output.configure(**stream_spec)
    filter.initialize()
    
    viewer = QOscilloscope()
    viewer.configure(with_user_dialog=True)
    viewer.input.connect(filter.output)
    viewer.initialize()
    viewer.show()

    viewer2 = QOscilloscope()
    viewer2.configure(with_user_dialog=True)
    viewer2.input.connect(dev.output)
    viewer2.initialize()
    viewer2.show()
    
    viewer2.start()
    viewer.start()
    filter.start()
    dev.start()
    
    
    def terminate():
        dev.stop()
        filter.stop()
        viewer.stop()
        viewer2.stop()
        app.quit()
    
    # start for a while
    timer = QtCore.QTimer(singleShot=True, interval=3000)
    timer.timeout.connect(terminate)
    timer.start()
    
    app.exec_()
Exemple #4
0
def setup_nodes():
    #fake analog stream

    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel, sample_interval=1./sample_rate, chunksize=chunksize, buffer=buffer)
    dev.output.configure(protocol='tcp', interface='127.0.0.1', transfermode='plaindata', dtype='float32')
    dev.initialize()

    # trigger
    trigger = AnalogTrigger()
    trigger.configure()
    trigger.input.connect(dev.output)
    trigger.output.configure(protocol='tcp', interface='127.0.0.1', transfermode='plaindata')
    trigger.initialize()
    trigger.params['threshold'] = 1.
    trigger.params['front'] = '+'
    
    return dev, trigger
Exemple #5
0
def do_filtertest(engine):
    stream_spec = dict(protocol='tcp', interface='127.0.0.1', transfermode='sharedmem',
                            double=True, dtype = 'float32',buffer_size=2048*50, shape=(-1,nb_channel))
    
    app = pg.mkQApp()
    
                            
    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel, sample_interval=1./sample_rate, chunksize=chunksize,
                    buffer=buffer)
    dev.output.configure( **stream_spec)
    dev.initialize()
    
    
    f1, f2 = 40., 60.
    
    coefficients = scipy.signal.iirfilter(7, [f1/sample_rate*2, f2/sample_rate*2],
                btype = 'bandpass', ftype = 'butter', output = 'sos')
    
    filter = SosFilter()
    filter.configure(coefficients = coefficients, engine=engine, chunksize=chunksize)
    filter.input.connect(dev.output)
    filter.output.configure(**stream_spec)
    filter.initialize()
    
    viewer = QOscilloscope()
    viewer.configure(with_user_dialog=True)
    viewer.input.connect(filter.output)
    viewer.initialize()
    viewer.show()

    viewer2 = QOscilloscope()
    viewer2.configure(with_user_dialog=True)
    viewer2.input.connect(dev.output)
    viewer2.initialize()
    viewer2.show()
    
    viewer2.start()
    viewer.start()
    filter.start()
    dev.start()
    
    
    def terminate():
        dev.stop()
        filter.stop()
        viewer.stop()
        viewer2.stop()
        app.quit()
    
    # start for a while
    timer = QtCore.QTimer(singleShot=True, interval=3000)
    timer.timeout.connect(terminate)
    timer.start()
    
    app.exec_()
def test_TriggerAccumulator():
    app = pg.mkQApp()
    
    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel, sample_interval=1./sample_rate, chunksize=chunksize,
                    buffer=buffer, timeaxis=1,)
    dev.output.configure(protocol='tcp', interface='127.0.0.1', transfermode='sharedarray',
                            sharedarray_shape=(nb_channel, 2048*50), ring_buffer_method = 'double', timeaxis = 1,
                            dtype = 'float32')
    dev.initialize()

    trigger = AnalogTrigger()
    trigger.configure()
    trigger.input.connect(dev.output)
    trigger.output.configure(protocol='tcp', interface='127.0.0.1', transfermode='plaindata')
    trigger.initialize()
    trigger.params['threshold'] = 1.
    trigger.params['debounce_mode'] = 'no-debounce'
    trigger.params['front'] = '+'
    trigger.params['debounce_time'] = 0.1
    
    triggeraccumulator = TriggerAccumulator()
    triggeraccumulator.configure(max_stack_size = 5)
    triggeraccumulator.inputs['signals'].connect(dev.output)
    triggeraccumulator.inputs['events'].connect(trigger.output)
    triggeraccumulator.initialize()
    triggeraccumulator.params['stack_size'] = 3
    triggeraccumulator.params['left_sweep'] = -.2
    triggeraccumulator.params['right_sweep'] = .5
    
    #~ def on_new_chunk(total_trig):
        #~ print
        #~ print('total_trig', total_trig)
        #~ print('triggeraccumulator.stack', triggeraccumulator.stack)
        #~ print('triggeraccumulator.total_trig', triggeraccumulator.total_trig)
    #~ triggeraccumulator.new_chunk.connect(on_new_chunk)
    
    dev.start()
    trigger.start()
    triggeraccumulator.start()
    
    
    
    def terminate():
        dev.stop()
        trigger.stop()
        triggeraccumulator.stop()
        app.quit()
    
    # start for a while
    timer = QtCore.QTimer(singleShot=True, interval=5000)
    timer.timeout.connect(terminate)
    timer.start()
    
    app.exec_()
    assert triggeraccumulator.total_trig==6
Exemple #7
0
def setup_nodes():
    #fake analog stream

    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel,
                  sample_interval=1. / sample_rate,
                  chunksize=chunksize,
                  buffer=buffer)
    dev.output.configure(protocol='tcp',
                         interface='127.0.0.1',
                         transfermode='plaindata',
                         dtype='float32')
    dev.initialize()

    # trigger
    trigger = AnalogTrigger()
    trigger.configure()
    trigger.input.connect(dev.output)
    trigger.output.configure(protocol='tcp',
                             interface='127.0.0.1',
                             transfermode='plaindata')
    trigger.initialize()
    trigger.params['threshold'] = 1.
    trigger.params['front'] = '+'

    return dev, trigger
Exemple #8
0
def do_filtertest(engine):
    app = pg.mkQApp()
    
    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel, sample_interval=1./sample_rate, chunksize=chunksize,
                    buffer=buffer)
    dev.output.configure(**stream_spec)
    dev.initialize()
    
    
    f1, f2 = 40., 60.
    
    coefficients = scipy.signal.iirfilter(7, [f1/sample_rate*2, f2/sample_rate*2],
                btype = 'bandpass', ftype = 'butter', output = 'sos')
    
    filter = OverlapFiltfilt()
    filter.configure(coefficients = coefficients, engine=engine, chunksize=chunksize, overlapsize=overlapsize)
    filter.input.connect(dev.output)
    filter.output.configure(**stream_spec)
    filter.initialize()
    
    viewer = QOscilloscope()
    viewer.configure(with_user_dialog=True)
    viewer.input.connect(filter.output)
    viewer.initialize()
    viewer.show()

    viewer2 = QOscilloscope()
    viewer2.configure(with_user_dialog=True)
    viewer2.input.connect(dev.output)
    viewer2.initialize()
    viewer2.show()
    
    viewer2.start()
    viewer.start()
    filter.start()
    dev.start()
    
    
    def terminate():
        dev.stop()
        filter.stop()
        viewer.stop()
        viewer2.stop()
        app.quit()
    
    # start for a while
    timer = QtCore.QTimer(singleShot=True, interval=3000)
    timer.timeout.connect(terminate)
    timer.start()
    
    app.exec_()
Exemple #9
0
def setup_nodes():
    #fake analog stream
    dev = NumpyDeviceBuffer()
    dev.configure(nb_channel=nb_channel, sample_interval=1./sample_rate, chunksize=chunksize,
                    buffer=buffer, timeaxis=1,)
    dev.output.configure(protocol='tcp', interface='127.0.0.1', transfermode='sharedarray',
                            sharedarray_shape=(nb_channel, 2048*50), ring_buffer_method = 'double', timeaxis = 1,
                            dtype = 'float32')
    dev.initialize()
    
    # trigger
    trigger = AnalogTrigger()
    trigger.configure()
    trigger.input.connect(dev.output)
    trigger.output.configure(protocol='tcp', interface='127.0.0.1', transfermode='plaindata')
    trigger.initialize()
    trigger.params['threshold'] = 1.
    trigger.params['front'] = '+'
    
    return dev, trigger