All Projects → sccn → liblsl

sccn / liblsl

Licence: other
C++ lsl library for multi-modal time-synched data transmission over the local network

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to liblsl

spikesorters
Python-based module with spike sorter wrappers and a simple API for running them.
Stars: ✭ 19 (-72.86%)
Mutual labels:  electrophysiology
mtscomp
Multichannel time series lossless compression in pure Python based on NumPy and zlib
Stars: ✭ 20 (-71.43%)
Mutual labels:  electrophysiology
elephant
Elephant is the Electrophysiology Analysis Toolkit
Stars: ✭ 140 (+100%)
Mutual labels:  electrophysiology
spikeinterface
A Python-based module for creating flexible and robust spike sorting pipelines.
Stars: ✭ 193 (+175.71%)
Mutual labels:  electrophysiology
CellExplorer
CellExplorer is a graphical user interface, a standardized processing module and data structure for exploring and classifying single cells acquired using extracellular electrodes.
Stars: ✭ 55 (-21.43%)
Mutual labels:  electrophysiology
phy-contrib
[This repository is archived, will be deprecated after the release of phy 2.0]
Stars: ✭ 28 (-60%)
Mutual labels:  electrophysiology
spectral connectivity
Frequency domain estimation and functional and directed connectivity analysis tools for electrophysiological data
Stars: ✭ 57 (-18.57%)
Mutual labels:  electrophysiology
ecephys spike sorting
Modules for processing extracellular electrophysiology data from Neuropixels probes
Stars: ✭ 55 (-21.43%)
Mutual labels:  electrophysiology
NeuroPyxels
NeuroPyxels (npyx) is a python library built for electrophysiologists using Neuropixels electrodes. This package stems from the need of a pythonist who really did not want to transition to MATLAB to work with Neuropixels: it features a suite of core utility functions for loading, processing and plotting Neuropixels data.
Stars: ✭ 22 (-68.57%)
Mutual labels:  electrophysiology
Neuroimaging.jl
Neuroimaging in Julia
Stars: ✭ 39 (-44.29%)
Mutual labels:  electrophysiology
hnn
The Human Neocortical Neurosolver (HNN) is a software tool that gives researchers/clinicians the ability to develop/test hypotheses on circuit mechanisms underlying EEG/MEG data.
Stars: ✭ 62 (-11.43%)
Mutual labels:  electrophysiology
neurotic
Curate, visualize, annotate, and share your behavioral ephys data using Python
Stars: ✭ 24 (-65.71%)
Mutual labels:  electrophysiology

GitHub Actions Status Travis Build Status Azure Build Status DOI

Lab Streaming Layer library

The lab streaming layer is a simple all-in-one approach to streaming experiment data between applications in a lab, e.g. instrument time series, event markers, audio, and so on. For more information, please read the online documentation

Getting and using liblsl

The most up-to-date instructions are in the quick start online documentation.

Building liblsl

Precompiled packages are uploaded

liblsl is also available via the following package managers:

To compile the library yourself from source, please follow the online documentation.

For single board computers running linux, you can also try standalone_compilation_linux.sh.

To build language bindings (e.g. for Matlab or Python) take a look at the corresponding directory in the main repository.

You might also be interested in apps to connect to recording equipment and the LabRecorder to record streams to disk.

Boost

liblsl uses boost (mainly Boost.ASIO) extensively. Because embedding liblsl in an application that links to an other Boost version (notably Matlab) causes runtime errors, we bundle a subset of boost in lslboost.

To update the included lslboost, install Boost bcp and use the update_lslboost.sh script.

Design goals

The design goals of the library are: a) The interface shall be as simple as possible, allowing programs or drivers to send or receive data in just 3-5 lines of code. b) The library should be available for a variety of languages (currently C, C++, Matlab, Python, Java) and platforms (Windows, Mac OS X, Linux, 32/64 bit) and be fully interoperable between them. c) Data transmission should work "out of the box", even across networks with no need to configure IP addresses / hostnames and such (thanks to on-the-fly service discovery), also time synchronization and failure recovery should work out of the box. d) The library should be fully featured. It should cover the relevant streaming data formats incl. multi-channel signals, regular/irregular sampling rate and the major channel data types (int8, int16, int32, float, double, string) in a simple interface. Generic stream meta-data should be supported. Advanced transmission features should be available if desired (but not in the way for simple uses), including custom ways of chunking and buffering the data. It should be possible to configure and tune the behavior of the library (e.g. networking features) via configuration files in a way that is transparent to the applications. e) Network and processor overhead should be reasonably low to not get in the way.

Package overview:

  • The API headers are in the include/ directory.
  • The library source code is in the src/ directory.
  • Unit tests are in the testing/ directory

To connect an application to the lab streaming layer:

  • Include the header for your language (lsl_c.h for C, lsl_cpp.h for C++) (automatically done when using CMake) or get bindings for your preferred language
  • Make sure that the library file (liblsl.so/liblsl.dylib/lsl.dll) is found by your application. On Windows, it should be enough to put it in the same folder as your executable. When building a Windows app, also make sure that the lsl.lib file is visible to your build environment.
  • To provide data, create a new streaminfo to describe your stream and create a new outlet with that info. Push samples into the outlet as your app produces them. Destroy the outlet when you're done.
  • To receive data, resolve a stream that matches your citeria (e.g. name or type), which gives you a streaminfo and create a new inlet with that streaminfo. Pull samples from the inlet. Destroy the inlet when you're done.
  • Have a look at the example sources in the examples/ folder

The library and example applications are licensed under the MIT license.
The library uses code that is licensed under the Boost software license.

Acknowledgements

The original version of this software was written at the Swartz Center for Computational Neuroscience, UCSD. This work was funded by the Army Research Laboratory under Cooperative Agreement Number W911NF-10-2-0022 as well as through NINDS grant 3R01NS047293-06S1.

Citing liblsl

DOI

Information about versioning: https://help.zenodo.org/#versioning

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].