Difference between revisions of "DataHub"

From TSG Doc
Jump to navigation Jump to search
(20 intermediate revisions by the same user not shown)
Line 27: Line 27:
 
     | downloads          =  
 
     | downloads          =  
 
     | manuals            = {{bulleted list
 
     | manuals            = {{bulleted list
         | [https://docs.unity3d.com/Manual/index.html Official Documentation]
+
         | [https://docs.openbci.com/ Documentation]
 +
        | [https://sccn.ucsd.edu/~mgrivich/LSL_Validation.html LSL Validation]
 +
        | [https://labstreaminglayer.readthedocs.io/info/supported_devices.html Supported Devices and Tools]
 +
    }}
 +
    | header2            = Templates
 +
    | data2              = {{bulleted list
 +
        | [https://surfdrive.surf.nl/files/index.php/s/qggfMMKsnUIDO0k example scripts (zip)]
 
     }}
 
     }}
 
   }}
 
   }}
Line 46: Line 52:
  
 
===Versions===
 
===Versions===
The TSG uses the version 1.15.0. Open a command to find your version used:
+
The TSG uses the version 1.15.0. Open a command and type the following to find the version used:
  
 
<code style="background-color:#000; color:#fff; padding:1px 3px;">c:>python</code><br/>
 
<code style="background-color:#000; color:#fff; padding:1px 3px;">c:>python</code><br/>
Line 53: Line 59:
  
 
==Usage==
 
==Usage==
''(Under Construction)''<br/>
+
=== Python ===
We are working on templates and tips. Stay tuned!
+
A short example for sending lsl streaming data:
*[[Unity/Timing]]
+
<syntaxhighlight lang="python" line>
 +
#!/usr/bin/env python
 +
 
 +
import threading
 +
from pylsl import StreamInfo, StreamOutlet
 +
 
 +
def getData():
 +
    while running:
 +
        buffer_in = getSensorData()
 +
        send_data = True
 +
        time.sleep(0.001)
 +
 
 +
info = StreamInfo(
 +
    name='MyStream',
 +
    type='COP',
 +
    channel_count=4,
 +
    nominal_srate = 200,
 +
    source_id='BalanceBoard_stream'
 +
    )
 +
outlet = StreamOutlet(info)
 +
 
 +
threading.Thread(target=getData).start()
 +
while running == True:
 +
if send_data:
 +
outlet.push_chunk(buffer_in)
 +
send_data = False
 +
</syntaxhighlight>
 +
 
 +
A short example for receiving lsl data:
 +
<syntaxhighlight lang="python" line>
 +
#!/usr/bin/env python
  
===Builds===
+
from pylsl import StreamInlet, resolve_stream
We advise not to run your experiment from the Unity Editor, this will cause unwanted overhead that harms the performance. You can create a PC Standalone build to run it on our [[Computers | lab computers]].
 
  
==References==
+
streams = resolve_stream('name', 'MyStream')
<references />
+
#streams = resolve_streams()
  
==External Links== <!-- Optional -->
+
inlet = StreamInlet(streams[0])
*{{Official website|https://unity3d.com}}
+
while True:
*[https://docs.unity3d.com/Manual/index.html Official Documentation]
+
    sample, timestamp = inlet.pull_sample()
 +
    print(timestamp, sample)
 +
</syntaxhighlight>

Revision as of 16:12, 1 February 2022

DataHub
Developer(s)Christian Kothe; Chadwick Boulay.
Development status-in development-
Written inC, C++, Python, Java, C#, MATLAB
Operating systemWindows, Linux, MacOS, Android, iOS
TypeData collection
LicenseOpen source
WebsiteLSL webpage
Manuals

The DataHub Makes use of the lab streaming layer. The lab streaming layer (LSL) is a system for the unified collection of measurement time series in research experiments that handles both the networking, time-synchronization, (near-) real-time access as well as optionally the centralized collection, viewing and disk recording of the data.


Installation

Our support for LSL is mainly done in python. Download python here: Please choose a 64 bit version.. Run the installer and make sure to add Python to the file path (it's an option in the installer). Open a command prompt, start with upgrading the pip installer by typing:
c:>python -m pip install --upgrade pip
Then:
c:>pip install pylsl

more info: cross platform pylsl

Versions

The TSG uses the version 1.15.0. Open a command and type the following to find the version used:

c:>python
>>> import pylsl
>>> print(pylsl.__version__)

Usage

Python

A short example for sending lsl streaming data:

 1#!/usr/bin/env python
 2
 3import threading
 4from pylsl import StreamInfo, StreamOutlet
 5
 6def getData():
 7    while running:
 8        buffer_in = getSensorData()
 9        send_data = True
10        time.sleep(0.001)
11
12info = StreamInfo(
13    name='MyStream', 
14    type='COP', 
15    channel_count=4, 
16    nominal_srate = 200, 
17    source_id='BalanceBoard_stream'
18    )
19outlet = StreamOutlet(info) 
20
21threading.Thread(target=getData).start()
22while running == True:
23	if send_data:
24		outlet.push_chunk(buffer_in)
25		send_data = False

A short example for receiving lsl data:

 1#!/usr/bin/env python
 2
 3from pylsl import StreamInlet, resolve_stream
 4
 5streams = resolve_stream('name', 'MyStream')
 6#streams = resolve_streams()
 7
 8inlet = StreamInlet(streams[0])
 9while True:
10    sample, timestamp = inlet.pull_sample()
11    print(timestamp, sample)