示例#1
0
def check_stream_ringbuffer(**kwds):
    chunk_shape = (-1, 16)
    stream_spec = dict(protocol='tcp', interface='127.0.0.1', port='*', 
                       transfermode='plaindata', streamtype='analogsignal',
                       dtype='float32', shape=chunk_shape, compression='',
                       scale=None, offset=None, units='', axisorder=None,
                       double=True)
    stream_spec.update(kwds)
    print("  %s" % kwds)
    
    outstream = OutputStream()
    outstream.configure(**stream_spec)
    
    instream = InputStream()
    instream.connect(outstream)
    instream.set_buffer(stream_spec['buffer_size'], axisorder=stream_spec['axisorder'],
                double=stream_spec['double'])
    
    # Make sure we are re-using sharedmem buffer
    if instream.receiver.buffer is not None:
        assert instream._own_buffer is False
        
    time.sleep(.1)
    
    data = np.random.normal(size=(4096, 16)).astype('float32')
    for i in range(16):
        chunk = data[i*256:(i+1)*256]
        outstream.send(chunk)
        instream.recv()
    data2 = instream[0:4096]
    assert np.all(data2 == data)
    if outstream.params['axisorder'] is not None:
        assert np.all(np.argsort(data2.strides)[::-1] == outstream.params['axisorder'])
示例#2
0
def check_stream_struct_dtype(**kwds):

    dtype_struct = [
        ('datetime', 'datetime64[ms]'),
        ('message', 'S32'),
    ]

    chunk_shape = (-1, )
    stream_spec = dict(protocol='tcp',
                       interface='127.0.0.1',
                       port='*',
                       transfermode='plaindata',
                       streamtype='analogsignal',
                       dtype=dtype_struct,
                       shape=chunk_shape,
                       compression='',
                       scale=None,
                       offset=None,
                       units='',
                       axisorder=None,
                       double=True)
    stream_spec.update(kwds)
    print("  %s" % kwds)

    outstream = OutputStream()
    outstream.configure(**stream_spec)

    instream = InputStream()
    instream.connect(outstream)
    instream.set_buffer(stream_spec['buffer_size'],
                        axisorder=stream_spec['axisorder'],
                        double=stream_spec['double'])

    # Make sure we are re-using sharedmem buffer
    if instream.receiver.buffer is not None:
        assert instream._own_buffer is False

    time.sleep(.1)

    data = np.zeros(50, dtype=dtype_struct)
    for i in range(10):
        chunk = data[i * 5:(i + 1) * 5]
        outstream.send(chunk)
        instream.recv()
    data2 = instream[0:50]
    assert np.all(data2 == data)
    if outstream.params['axisorder'] is not None:
        assert np.all(
            np.argsort(data2.strides)[::-1] == outstream.params['axisorder'])
示例#3
0
def check_stream_ringbuffer(**kwds):
    chunk_shape = (-1, 16)
    stream_spec = dict(protocol='tcp',
                       interface='127.0.0.1',
                       port='*',
                       transfermode='plaindata',
                       streamtype='analogsignal',
                       dtype='float32',
                       shape=chunk_shape,
                       compression='',
                       scale=None,
                       offset=None,
                       units='',
                       axisorder=None,
                       double=True)
    stream_spec.update(kwds)
    print("  %s" % kwds)

    outstream = OutputStream()
    outstream.configure(**stream_spec)

    instream = InputStream()
    instream.connect(outstream)
    instream.set_buffer(stream_spec['buffer_size'],
                        axisorder=stream_spec['axisorder'],
                        double=stream_spec['double'])

    # Make sure we are re-using sharedmem buffer
    if instream.receiver.buffer is not None:
        assert instream._own_buffer is False

    time.sleep(.1)

    data = np.random.normal(size=(4096, 16)).astype('float32')
    for i in range(16):
        chunk = data[i * 256:(i + 1) * 256]
        outstream.send(chunk)
        instream.recv()
    data2 = instream[0:4096]
    assert np.all(data2 == data)
    if outstream.params['axisorder'] is not None:
        assert np.all(
            np.argsort(data2.strides)[::-1] == outstream.params['axisorder'])