Skip to main content

实验室流层的 Python 接口

项目描述

pylsl

构建状态 PyPI 版本

这是Lab Streaming Layer (LSL)的 Python 接口。LSL 是一个覆盖网络,用于在应用程序之间实时交换时间序列,最常用于研究环境。LSL 有许多其他相互兼容的语言和平台的客户端。

如果您遇到任何错误,请告诉我们(最好使用 GitHub 项目上的问题跟踪器)。

安装

先决条件

在所有非 Windows 平台上以及对于某些 Windows-Python 组合,您必须首先获取 liblsl 共享库:

  • 在许多平台上,它可以安装conda install -c conda-forge liblsl
  • 此外,在 Mac 上,它可以安装brew install labstreaminglayer/tap/lsl
  • 您可以从liblsl 发布页面找到适当的 liblsl 共享对象(Linux 上的 *.so、MacOS 上的 *.dylib 或 Windows 上的 *.dll) 。
  • 否则,您可能会尝试克隆 liblsl 并使用它的standalone_compilation_linux.sh脚本(适用于树莓派)。

准备好的发行版

使用pippypi安装:pip install pylsl

对于几个发行版,pip 发行版附带 lsl.dll。对于其他所有情况,liblsl 必须安装在 PATH 上的某处(请参阅上面的先决条件)或下载并复制到搜索路径上的某处。我们建议您将其复制到 pylsl 安装模块路径的lib子文件夹中。即{path/to/env/}site-packages/pylsl/lib。用于python -m site查找“站点包”路径。(cp -L在使用符号链接的平台上使用)

自建

  • 下载 pylsl 源码:git clone https://github.com/labstreaminglayer/liblsl-Python.git && cd liblsl-Python
  • 将共享对象(请参阅上面的先决条件)复制到liblsl-Python/pylsl/lib.
  • liblsl-Python工作目录运行pip install ..
    • 注意:您可以使用pip install -e .来安装,同时将文件保持在原位。这对开发 pylsl 很方便。

用法

请参阅 pylsl/examples 中的示例。请注意,这些可以使用 (eg) 直接从命令行运行python -m pylsl.examples.{name-of-example}

您可以通过以下方式获取示例列表python -c "import pylsl.examples; help(pylsl.examples)"

对于维护者

持续集成

pylsl 使用持续集成和分发。

每当推送新的提交时,AppVeyor 都会准备几个文件。首先,它准备源轮——这在任何没有特定二进制分发的平台和 Python 版本上都很有用。然后准备二进制轮子;它从其发布页面下载 liblsl,将其复制到包中,然后构建轮子以进行分发。对于 Windows 和 Mac 的几个变体重复此过程。

此外,每当在git tag推送到 master 分支的提交上使用 new 时,CI 系统都会将轮子部署到 pypi。

不推荐使用 Linux 二进制文件

我们最近停止为 Linux 构建二进制轮子。在实践中,manylinux依赖项通常与实际系统不兼容。

当我们确实制作了许多 Linux 发行版时,它们依赖于特殊的 liblsl 构建,这些构建不会自动推送到 liblsl 发布页面。需要在Azure上手动运行特殊管道,然后将工件上传到发布页面。Azure 管道配置保留在 liblsl 存储库中,以防再次需要(不太可能)。

手动分发

  1. 手动方式:
    1. rm -Rf build dist *.egg-info
    2. python setup.py sdist bdist_wheel
    3. Linux 上的其他步骤:
      • auditwheel repair dist/*.whl -w dist
      • rm dist/*-linux_x86_64.whl
    4. twine upload dist/*
  2. 对于康达
    1. 构建 liblsl:conda build ../liblsl/
    2. conda build .

Linux 上多线程的已知问题

  • 至少对于某些版本的 pylsl ,据报道,在 Linux 上运行不能pylsl从不是主线程的线程调用函数。据报道,这会导致访问冲突,并且可能在从入口拉取时发生,也可能在访问线程中的入口信息结构时发生。
  • 最近使用 Python 3.7.6 进行的多线程测试(尤其是在使用锁保护库调用时)。在 Linux Mint 20 上使用 pylsl 1.14 表明此问题已解决,或者至少取决于您的机器。见https://github.com/labstreaminglayer/liblsl-Python/issues/29

致谢

Pylsl 主要由 Christian Kothe 在加州大学圣地亚哥分校 Swartz 计算神经科学中心编写。LSL 项目由陆军研究实验室根据合作协议编号 W911NF-10-2-0022 以及 NINDS 赠款 3R01NS047293-06S1 资助。pylsl 主要由 Chadwick Boulay 维护。感谢 Bastian Venthur、David Medine、Clemens Brunner 和 Matthew Grivich 的贡献、错误报告和建议。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

内置发行版

pylsl-1.16.0-py2.py3-none-win_amd64.whl (352.1 kB 查看哈希

已上传 py2 py3

pylsl-1.16.0-py2.py3-none-win32.whl (282.1 kB 查看哈希

已上传 py2 py3

pylsl-1.16.0-py2.py3-none-macosx_12_0_arm64.whl (948.3 kB 查看哈希

已上传 py2 py3

pylsl-1.16.0-py2.py3-none-macosx_10_13_x86_64.whl (1.0 MB 查看哈希

已上传 py2 py3

pylsl-1.16.0-py2.py3-none-any.whl (36.1 kB 查看哈希

已上传 py2 py3