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。請參閱下面的註釋,以獲取安裝之前的其他特定特定依賴項,並參考我們的文檔/常見問題解答以獲取更多信息: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/ Directory中包含64位輪文件。
如果您使用的是Mac,則需要安裝XCode並啟用命令行工具。 xcode-select --install 。如果使用M1/2芯片,則需要在scripts/shell/m2chip_install.sh中使用安裝腳本來安裝先決條件。您可能還需要使用Rosetta終端來運行安裝腳本,但是在我們使用M2芯片的測試中,這並不是必需的。
如果使用ZSH,而不是bash,則在運行BCIPY時可能會遇到分離故障。這是由於心理副本的依賴性問題,目前還沒有已知的解決方案。請暫時使用Bash而不是ZSH。
為了在計算機上運行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或者,如果安裝了製造,則可以運行以下命令進行安裝:
# 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 ,或在模擬器模塊中查看讀數。
from bcipy . helpers import system_utils
system_utils . get_system_info ()在您的終端中運行以下命令以啟動Bcipy GUI:
python bcipy/gui/BCInterface.py或者,如果安裝了製造,則可以運行LOCER命令以從BCIPY root Directory啟動GUI:
make bci-gui刺激:顯示的單個字母,音調或圖像(通常在查詢中)。單數=刺激,複數=刺激。
試驗:顯示刺激後的數據集。一個 - -
查詢:在拼寫任務中固定十字架後的刺激集以收集用戶意圖。 a ---- b --- c ------
系列:每個系列至少包含一個查詢。字母/圖標的決定是在拼寫任務中的系列後做出的。
會話:為任務收集的數據。由有關任務和系列列表組成的元數據。
協議:將在會話中執行的任務和操作集合。這定義為實驗中,可以使用BCIPY GUI進行註冊。
任務:用於BCI的刺激,試驗,查詢和系列的實驗設計。例如,“ RSVP校準”是一項任務。
模式:任務類型之間的常見設計元素。例如,校準和免費拼寫是模式。
範式:顯示具有獨特屬性和模式的範式。前任。快速式視覺呈現(RSVP),矩陣拼寫器,穩態視覺誘發電位(SSVEP)。
這是主要模塊及其功能的列表。每個模塊將包含其自己的讀數,演示和測試。請查看他們以獲取更多信息!
acquisition :獲取數據,回饋所需的時間序列,在會話結束時保存以保存。display :屏幕上的刺激顯示並傳遞刺激時間。signal :EEG信號模型,凝視信號模型,過濾器,處理,評估人員和觀眾。gui :最終用戶接口到註冊的BCI任務和參數編輯。請參閱bcinterface.py。helpers :模塊,基本I/O和數據可視化之間相互作用所需的有用功能。language :在打字過程中給出下一個符號的概率。parameters :JSON參數的位置。這包括參數。 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獲取腦電圖數據和心理複製,以呈現刺激。
LSL同步文檔心理拷貝定時文檔
靜態偏移是我們的信號和刺激之間的常規時間差。通過通過光電二極管或其他觸發機制進行測試來確定此偏移。偏移校正是通過使用static_offset參數將腦電圖信號通過確定的偏移來完成的。
在運行了帶有光電二極管並連接到設備的光電二極管的定時驗證任務(例如,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 offset-recommend在編寫測試時,將它們放入正確的模塊中,將其放在測試文件夾中,並在文件前綴並用test_進行測試,以便Pytest發現它。查看其他模塊測試以獲取示例!
運行前必須安裝開發要求: 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或者,如果安裝了製造,則可以運行以下命令以運行覆蓋範圍/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 。
或者,如果安裝了製造,則可以運行以下命令以運行AUTOPEP8和FLAKE8:
make lint該項目強制執行mypy類型檢查。打字項目配置在mypy.ini文件中找到。要運行類型檢查,請運行以下命令:
mypy bcipy要生成報告,請運行以下命令:
mypy --html-report bcipy或者,如果安裝了製造,則可以運行以下命令來運行mypy:
make type如果您想被添加到開發團隊懈怠或有其他疑問中,請通過[email protected]與我們聯繫!
我們遵循並將強制執行貢獻者的盟約,以促進此開源軟件的安全和包容性環境,請參考此鏈接以獲取更多信息:https://www.contributor-covenant.org/
其他準則:
請參閱此資源以獲取示例:http://docs.python-guide.org/en/latest/writing/style/
所有貢獻都非常感謝!