BCIPYは、Pythonで脳コンピューターインターフェイス実験を実施するためのライブラリです。実験的なデータ収集のスタンドアロンアプリケーションとして機能するか、必要なツールを使用して独自のシステムのコーディングを開始できます。提携などの公式のBCIPYドキュメントや、より多くのコンテキスト情報を参照してください。
最新のWindows(7、10、11)、Linux(Ubuntu 22.04)、およびMacOS(Big Sur)で実行されます。他のバージョンも同様に機能する可能性がありますが、保証されていません。サポートされているバージョンとオペレーティングシステムを見るには、このリリースの時点では、BCIPYビルドを参照してください。
使用するときは私たちを引用してください!
Memmott, T., Koçanaoğulları, A., Lawhead, M., Klee, D., Dudy, S., Fried-Oken, M., & Oken, B. (2021). BciPy: brain–computer interface software in Python. Brain-Computer Interfaces, 1-18.
このプロジェクトには、Python 3.8または3.9が必要です。インストールを完了する前に追加のOS固有の依存関係については、以下のメモをご覧ください。詳細については、ドキュメント/FAQを参照してください:https://bcipy.github.io/hardware-os-config/
scriptsshelllinux_requirements.shに定義されている前提条件をpip install attrdict3する必要があります。
Windowsマシンを使用している場合は、Microsoft Visual C ++ビルドツールをインストールする必要があります。
Python 3.9のみ! Pywinhookを手動でインストールする必要があります。適切なホイールファイルについては、こちらを参照してください( pyWinhook‑1.6.2‑cp39‑cp39‑win_amd64.whl )。次に、 pip install <path_to_wheel_file>実行します。また、 .bcipy/downloads/ディレクトリに64ビットホイールファイルを含めます。
Macを使用している場合は、Xcodeをインストールしてコマンドラインツールを有効にする必要があります。 xcode-select --install 。 M1/2チップを使用している場合は、 scripts/shell/m2chip_install.shのインストールスクリプトを使用して前提条件をインストールする必要があります。また、Rosetta端子を使用してインストールスクリプトを実行する必要があるかもしれませんが、これはM2チップを使用したテストでは必要ありませんでした。
ZSHを使用している場合、BASHの代わりに、BCIPYを実行するときに分離障害に遭遇する可能性があります。これは、まだ既知の修正がなく、サイコピーの依存の問題による問題によるものです。今のところZSHの代わりにBashを使用してください。
コンピューターでBCIPYを実行するには、上記の依存関係に従った後、BCIPYパッケージをインストールする必要があります。
ローカルで使用するためにインストールし、GUIを使用するには:
pip install kenlm==0.1 --global-option="--max_order=12" 。pip install psychopy==2023.2.1 --no-deps 。pip install -e .Pypiから最新バージョンを必要とし、モジュールを使用してビルドする場合:
pip install bcipyあるいは、makeがインストールされている場合、次のようにインストールするコマンドを実行できます。
# install in development mode
make dev-installコマンドラインユーティリティbcipyを使用して、実験プロトコルまたはタスクを直接呼び出します。
bcipy --helpbcipy --user "bci_user" --task "RSVP Calibration"bcipy --user "bci_user" --experiment "default"bcipy --fakebcipy --novizbcipy --alertbcipy --parameters "path/to/valid/parameters.json" 信号モデル(現在PCARDAKDE )をトレーニングするには、BCIPYをインストールした後に次のコマンドを実行します。
bcipy-train
bcipy-train --helpbcipy-train -d path/to/databcipy-train -vbcipy-train -sbcipy-train --balanced-accbcipy-train --alertbcipy-train -p "path/to/valid/parameters.json" データの収集後に表示または保存できるプロットを生成するには、BCIPYをインストールした後に次のコマンドを実行します。
bcipy-erp-viz
bcipy-erp-viz --helpbcipy-erp-viz -s path/to/databcipy-erp-viz --showbcipy-erp-viz --savebcipy-erp-viz -p "path/to/valid/parameters.json" シミュレータは、コマンドラインユーティリティbcipy-simを使用して実行できます。
元。 bcipy-sim -d my_data_folder/ -p my_parameters.json -m my_models/ -n 5
bcipy-sim --helpドキュメントのためにヘルプするか、シミュレーターモジュールのreadmeを参照してください。
from bcipy . helpers import system_utils
system_utils . get_system_info ()ターミナルで次のコマンドを実行して、BCIPY GUIを開始します。
python bcipy/gui/BCInterface.pyあるいは、makeがインストールされている場合、BCIPYルートディレクトリからGUIを開始するには、次のコマンドを実行できます。
make bci-gui刺激:示されている単一の文字、トーン、または画像(一般的に問い合わせ)。特異=刺激、複数=刺激。
試行:刺激後のデータのコレクションが表示されます。 A ----
問い合わせ:凝視タスクで固定を交差させた後の刺激のセットは、ユーザーの意図を収集します。 a ---- b --- c ----
シリーズ:各シリーズには、少なくとも1つの問い合わせが含まれています。スペルタスクのシリーズの後に文字/アイコンの決定が行われます。
セッション:タスクのために収集されたデータ。タスクとシリーズのリストに関するメタデータで構成されています。
プロトコル:セッションで実行されるタスクとアクションのコレクション。これは実験内で定義され、BCIPY GUIを使用して登録できます。
タスク:BCIで使用するための刺激、試行、問い合わせ、シリーズを備えた実験設計。たとえば、「RSVPキャリブレーション」はタスクです。
モード:タスクタイプ間の一般的な設計要素。たとえば、キャリブレーションとフリースペルはモードです。
パラダイム:一意のプロパティとモードを備えたパラダイムを表示します。元。ラピッドシリアル視覚プレゼンテーション(RSVP)、マトリックススペラー、定常状態の視覚誘発ポテンシャル(SSVEP)。
これは、主要なモジュールとその機能のリストです。各モジュールには、独自のREADME、デモ、テストが含まれます。詳細については、チェックしてください!
acquisition :データの取得、希望する時系列を返し、セッションの終了時にファイルするために節約します。display :画面上の刺激の表示を処理し、刺激のタイミングをバックします。signal :EEG信号モデル、視線信号モデル、フィルター、処理、評価者、視聴者。gui :登録されたBCIタスクとパラメーター編集へのエンドユーザーインターフェイス。 bcinterface.pyを参照してください。helpers :モジュール、基本的なI/O、およびデータの視覚化間の相互作用に必要な役立つ機能。language :タイピング中に次のシンボルの確率を与えます。parameters :JSONパラメーターの位置。これには、parameters.json(メイン実験 /アプリの構成)およびdevice.json(デバイスレジストリと構成)が含まれます。static :GUIの画像と音の刺激、その他のマニュアル、読み取り可能なテキスト。task :BCIPYはユーザータスクを実装しました。さまざまな実験中に使用するBCIモジュールのメインコレクション。元。 RSVPキャリブレーション。feedback :音と視覚刺激のフィードバックメカニズム。main :実験の執行者。アプリケーションへのメインエントリポイントconfig :パスおよびデータファイル名を含むアプリケーションの構成パラメーター。simulator :以前に収集されたデータに基づいて、ランニングシミュレーションのサポートを提供します。 サポートされているすべてのパラダイム、タスク、アクション、モードの詳細についてはbcipy/task/README.mdを参照してください。以下は、サポートされ、検証されたパラダイムです。
rsvpkeyboard
*RSVP KeyboardTM* is an EEG (electroencephalography) based BCI (brain computer interface) typing system. It utilizes a visual presentation technique called rapid serial visual presentation (RSVP). In RSVP, the options are presented rapidly at a single location with a temporal separation. Similarly in RSVP KeyboardTM, the symbols (the letters and additional symbols) are shown at the center of screen. When the subject wants to select a symbol, they await the intended symbol during the presentation and elicit a p300 response to a target symbol.
引用:
Orhan, U., Hild, K. E., 2nd, Erdogmus, D., Roark, B., Oken, B., & Fried-Oken, M. (2012). RSVP Keyboard: An EEG Based Typing Interface. Proceedings of the ... IEEE International Conference on Acoustics, Speech, and Signal Processing. ICASSP (Conference), 10.1109/ICASSP.2012.6287966. https://doi.org/10.1109/ICASSP.2012.6287966
マトリックススペラー
Matrix Speller is an EEG (electroencephalography) based BCI (brain computer interface) typing system. It utilizes a visual presentation technique called Single Character Presentation (SCP). In matrix speller, the symbols are arranged in a matrix with fixed number of rows and columns. Using SCP, subsets of these symbols are intensified (i.e. highlighted) usually in pseudorandom order to produce an odd ball paradigm to induce p300 responses.
引用:
Farwell, L. A., & Donchin, E. (1988). Talking off the top of your head: toward a mental prosthesis utilizing event-related brain potentials. Electroencephalography and clinical Neurophysiology, 70(6), 510-523.
Ahani A, Moghadamfalahi M, Erdogmus D. Language-Model Assisted And Icon-based Communication Through a Brain Computer Interface With Different Presentation Paradigms. IEEE Trans Neural Syst Rehabil Eng. 2018 Jul 25. doi: 10.1109/TNSRE.2018.2859432.
すべての主要な関数とモジュールには、それらに関連付けられたデモおよびテストファイルがあり、ローカルで実行される可能性があります。これは、機能に向けて、ドキュメントとして機能するのに役立つはずです。リポジトリに追加する場合は、テストを追加し、コードを変更したときに失敗するテストを修正する必要があります。
たとえば、メインのBCIPYデモを次のように実行できます。
python demo/bci_main_demo.py
このデモはパラメーターにロードされ、ファイルで定義されているデモタスクを実行します。 GUI、信号、パラメーターを除き、ほとんどのモジュールに含まれるデモファイルがあります。 Pythonスクリプトとしてそれらを実行してください!
静的オフセットの決定と修正は、実験を開始する前の重要な手順です。 BCIPYはLSLを使用してEEGデータとサイコピーを取得して刺激を提示します。
LSL同期ドキュメントサイコピータイミングドキュメント
静的オフセットは、信号と刺激の間の定期的な時差です。このオフセットは、フォトダイオードまたは他のトリガーメカニズムを介したテストを通じて決定されます。オフセット補正は、 static_offsetパラメーターを使用して決定されたオフセットによってEEG信号をシフトすることにより行われます。
ディスプレイに接続され、デバイスに接続されたフォトダイオードを使用してタイミング検証タスク(rsvptimingverificationなど)を実行した後、オフセットはデータを分析することで決定できます。 offsetモジュールを使用して、オフセット修正値を推奨し、結果を表示します。
オフセットの決定を実行して結果を印刷するには、次のコマンドを使用します。
python bcipy/helpers/offset.py -r上記のコマンドを実行した後、推奨されるオフセット修正値が端末に表示され、システムの安定性を決定し、結果を表示するために渡されます。
# Let's say the recommneded offset value is 0.1
python bcipy/helpers/offset.py --offset " 0.1 " -pあるいは、Makeがインストールされている場合、フォローコマンドを実行してオフセット決定を実行し、結果を表示できます。
make offset-recommendテストを作成するときは、正しいモジュールのテストフォルダーに入れ、ファイルに接頭辞を付けて、Pytestを発見するためにtest_でテストします。例については、他のモジュールテストをご覧ください!
実行前に開発要件をインストールする必要があります: pip install -r dev_requirements.txt
コマンドラインですべてのテストを実行するには:
py . testコマンドラインで単一のモジュールテスト(Ex。Acquisition)を実行するには:
py . test acquisitionコマンドラインでテストカバレッジメトリックを生成するには:
coverage run --branch --source=bcipy -m pytest --mpl -k " not slow "
# Generate a command line report
coverage report
# Generate html doc in the bci folder. Navigate to index.html and click.
coverage htmlあるいは、Makeがインストールされている場合、次のコマンドを実行してカバレッジ/pytestを実行し、HTMLを生成できます。
make coverage-htmlこのプロジェクトは、Flake8を使用してPEPスタイルのガイドラインを実施します。
フォーマットに不必要な時間を費やすことを避けるために、 autopep8使用することをお勧めします。ファイルまたはディレクトリを自動形式に指定できます。コードをプッシュする準備ができたら、次のコマンドを実行してコードをフォーマットできます。
# autoformat all files in bcipy
autopep8 --in-place --aggressive -r bcipy
# autoformat only the processor file
autopep8 --in-place --aggressive bcipy/acquisition/processor.py最後に、糸くずを実行します: flake8 bcipy 。
あるいは、makeがインストールされている場合、autopep8とflake8を実行するには、次のコマンドを実行できます。
make lintこのプロジェクトは、 mypyタイプのチェックを実施します。タイピングプロジェクトの構成は、mypy.iniファイルにあります。タイプチェックを実行するには、次のコマンドを実行します。
mypy bcipyレポートを生成するには、次のコマンドを実行します。
mypy --html-report bcipyあるいは、makeがインストールされている場合、mypyを実行するためにフォローコマンドを実行できます。
make type開発チームのSlackに追加されたい場合、または追加の質問がある場合は、[email protected]でご連絡ください!
このオープンソースソフトウェアの安全で包括的な環境を促進するために、貢献者の契約を施行します。詳細については、このリンクを参照してください:https://www.contributor-covenant.org/
その他のガイドライン:
例については、このリソースを参照してください:http://docs.python-guide.org/en/latest/writing/style/
すべての貢献は大歓迎です!