BCIPY는 파이썬에서 뇌-컴퓨터 인터페이스 실험을 수행하기위한 라이브러리입니다. 실험 데이터 수집을위한 독립형 애플리케이션으로 기능하거나 필요한 도구를 가져 와서 고유 한 시스템 코딩을 시작할 수 있습니다. 제휴 및 더 많은 컨텍스트 정보를 포함한 공식 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 ++ 빌드 도구를 설치해야합니다.
파이썬 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 칩을 사용한 테스트에서는 필요하지 않았습니다.
Bash 대신 ZSH를 사용하는 경우 BCIPY를 실행할 때 세지 오류가 발생할 수 있습니다. 이것은 아직 알려진 수정이없는 Psychopy의 부양 가족의 문제 때문입니다. 지금은 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 ---- B --- C ----
시리즈 : 각 시리즈에는 하나 이상의 문의가 포함되어 있습니다. 철자 작업에서 시리즈 후에 문자/아이콘 결정이 이루어집니다.
세션 : 작업을 위해 수집 된 데이터. 작업에 대한 메타 데이터와 시리즈 목록으로 구성됩니다.
프로토콜 : 세션에서 실행할 작업 및 조치 모음. 이것은 실험 내에서 정의되며 BCIPY GUI를 사용하여 등록 할 수 있습니다.
작업 : BCI에서 사용하기위한 자극, 시험, 문의 및 시리즈를 갖춘 실험 설계. 예를 들어, "RSVP 교정"은 작업입니다.
모드 : 작업 유형 간의 일반적인 디자인 요소. 예를 들어, 교정 및 무료 철자는 모드입니다.
패러다임 : 고유 한 속성과 모드로 패러다임을 표시하십시오. 전. RSVP (Rapid-Serial Visual Presentation), 매트릭스 철자법, 정상 상태 시각적 유발 잠재력 (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.
모든 주요 기능 및 모듈에는 로컬로 실행될 수있는 데모 및 테스트 파일이 있습니다. 이를 통해 기능을 지향하고 문서로 사용하는 데 도움이됩니다. Repo에 추가하는 경우 테스트를 추가하고 코드를 변경할 때 실패한 테스트를 수정해야합니다.
예를 들어, 메인 BCIPY 데모를 실행할 수 있습니다.
python demo/bci_main_demo.py
이 데모는 매개 변수로로드하고 파일에 정의 된 데모 작업을 실행합니다. GUI, 신호 및 매개 변수를 제외하고 대부분의 모듈에 포함 된 데모 파일이 있습니다. 파이썬 스크립트로 실행하십시오!
정적 오프셋 결정 및 보정은 실험을 시작하기 전에 중요한 단계입니다. BCIPY는 LSL을 사용하여 EEG 데이터와 정신병을 획득하여 자극을 제시합니다.
LSL 동기화 문서 Psychopy 타이밍 문서
정적 오프셋은 신호와 자극 사이의 정기적 인 시차입니다. 이 오프셋은 포토 디오드 또는 기타 트리거 메커니즘을 통해 테스트를 통해 결정됩니다. 오프셋 보정은 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명령 줄에서 단일 모듈 테스트 (예 : 획득)를 실행하려면 :
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가 설치된 경우 Coverage/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개발 팀 슬랙에 추가되거나 추가 질문이 있으시면 [email protected]로 문의하십시오!
우리는이 오픈 소스 소프트웨어에 대한 안전하고 포용적인 환경을 조성하기 위해 기고자의 계약을 따르고 시행 할 것입니다. 자세한 내용은이 링크를 참조하십시오 : https://www.contributor-covenant.org/
기타 지침 :
예제는이 리소스를 참조하십시오 : http://docs.python-guide.org/en/latest/writing/style/
모든 기여는 대단히 감사합니다!