WebSocket API
カスタムWebSocket APIを使用すると、Labvancedと他の任意のサーバーとの間にランタイムで接続を作成できます。これにより、Labvancedサーバーと指定した他のサーバーの間でデータを双方向に送信する可能性が基本的に提供されます。一方向(つまり、直接サーバーに保存するため)のみデータを送信する必要がある場合は、Webhook API.のドキュメントを参照してください。
WebSocket APIが利用できる実験の例には、以下のものが含まれます:
- LabvancedからEEGシステム、アイ・トラッキングシステム、または他のローカルデータ記録デバイスへの実験トリガー(例:トライアル/刺激の開始または参加者の応答)を送信/受信したい実験。
- インターネットを介してオンラインで記録されたデータを他のサーバー/APIに送信して処理したい実験(例:AI/機械学習プロセスやリアルタイムデータ分析)。
- Labvancedと他のプロセス(ローカルまたはリモートで実行できる)との間に双方向通信を作成したい実験(例:BCI、バイオフィードバック、その他のクローズドループシステム)。
Labvancedをローカルサーバー(デバイスを接続するため)に接続する場合、現在はシンプルなスクリプト(以下で説明)を使用して、Labvancedの研究エディターでイベントを設定することでこれを実現できます。将来的には、Labvanced Desktop App内で統合されたソリューションが利用可能になり、ボタンをクリックするだけでこの接続を確立できるようになります。
スクリプトソリューション
スクリプトを使用して、基本的なPythonコードをカスタマイズできます。これにより、スクリプトを実行し、最終的には研究ニーズを満たす柔軟性を提供します。別のPythonスクリプトを実行することにより、LabvancedはWebSocket APIと通信し、Pythonは外部デバイスと通信します。
WebSocket APIの構成は、特定のポートとIPを指すことで機能します。その後、これがPythonコードに反映されます。お互いを指すことによって、WebSocket APIを介して通信のラインが確立されます。
注意: 接続を表示するには、この半自動プロセスのためにGUIを使用できます。
以前のアプローチ(Labvancedプログラムに直接埋め込む)は、やや限界があり、異なるオペレーティングシステムで機能させるのが難しかったため、これらの新しいPythonスクリプトを使用することで、すべてのプラットフォーム(Linux、MacOS、Windows)で動作し、双方向にLSLストリームデータを送受信できるようになるはずです。
試すために必要なこと:
- pip install -r requirements.txt のようなものを使用して必要な4つのライブラリをインストールします。
- 次に、Labvanced実験が開始される同じマシンで、LSLマーカをLabvancedに受信するためにpython3 lsl_marker_receive.pyをバックグラウンドで開始するか、LabvancedからLSLマーカーを送信するためにpython3 lsl_marker_send.pyをバックグラウンドで開始します。
注意: 特定のLSLパラメータやストリーム名を希望する場合、これらのスクリプトを簡単に適応できます。
私たちのGitHub WebSocket APIリポジトリでは、Labvanced実験からLSLマーカーを送信または受信するための2つの例のPythonスクリプトが、Lab Streaming Layerフォルダ内にあり、この設定方法に関する詳細な指示もあります。
また、私たちの公開実験ライブラリからこのソケット接続サンプル研究をインポートし、イベントがどのように設定されているかを確認することもできます。
LSL統合のためのWebSocket APIを利用した実験の例
上記に対応するLabvanced研究ライブラリには2つの例の研究があります:
LSLマーカー送信 (lsl_marker_send.py): https://www.labvanced.com/page/library/53231
LSLマーカー受信 (lsl_marker_receive.py): https://www.labvanced.com/page/library/53230
これらの例の研究をインポートまたは検査すると、「実験機能」サブセクションの「研究設定」のチェックボックスで「WebSocket接続」のオプションがチェックされており、Labvanced実験が同じコンピュータで実行されているPythonスクリプトに接続できるように接続の詳細が示されていることに注意してください。以下の画像のように:
