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'])
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'])
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'])