BCIPY ist eine Bibliothek zur Durchführung von Hirn-Computer-Schnittstellenexperimenten in Python. Es fungiert als eigenständige Anwendung für die experimentelle Datenerfassung oder Sie können die benötigten Tools einnehmen und mit der Codierung Ihres eigenen Systems beginnen. In unserer offiziellen BCIPY -Dokumentation einschließlich Zugehörigkeiten und weiteren Kontextinformationen finden Sie hier.
Es wird unter den neuesten Windows (7, 10, 11), Linux (Ubuntu 22.04) und MacOS (Big Sur) ausgeführt. Andere Versionen können ebenfalls funktionieren, sind jedoch nicht garantiert. Um unterstützte Versionen und Betriebssysteme zum Zeitpunkt dieser Version zu sehen, siehe hier: BCIPY Builds.
Bitte zitieren Sie uns, wenn Sie verwendet werden!
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.
Dieses Projekt erfordert Python 3.8 oder 3.9. Weitere Informationen finden Sie im folgenden Hinweise weiter unten, um weitere Informationen zu erhalten. Weitere Informationen erhalten Sie auf unsere Dokumentation/FAQs: https://bcipy.github.io/hardware-os-config/
Sie müssen die in scriptsshelllinux_requirements.sh sowie pip install attrdict3 definierten Voraussetzungen installieren.
Wenn Sie einen Windows -Computer verwenden, müssen Sie die Microsoft Visual C ++ -Er -Build -Tools installieren.
Python nur 3.9! Sie müssen Pywinhook manuell installieren. Siehe hier für die entsprechende Raddatei ( pyWinhook‑1.6.2‑cp39‑cp39‑win_amd64.whl ). Führen Sie dann pip install <path_to_wheel_file> aus. Wir nehmen auch die 64-Bit-Raddatei in die .bcipy/downloads/ Verzeichnis auf.
Wenn Sie einen Mac verwenden, müssen Sie Xcode installieren und Befehlszeilen -Tools aktivieren. xcode-select --install . Wenn Sie einen M1/2 -Chip verwenden, müssen Sie das Skript in scripts/shell/m2chip_install.sh verwenden, um die Voraussetzungen zu installieren. Möglicherweise müssen Sie auch das Rosetta -Terminal verwenden, um das Installationsskript auszuführen. Dies war jedoch bei unseren Tests mit M2 -Chips nicht erforderlich.
Wenn Sie ZSH verwenden, können Sie anstelle von Bash auf einen Segementationsfehler stoßen, wenn Sie BCIPY ausführen. Dies ist auf ein Problem in einer Abhängigkeit von Psychopy zurückzuführen, die bisher noch keine bekannte Fixierung hat. Bitte verwenden Sie Bash anstelle von ZSH vorerst.
Um BCIPY auf Ihrem Computer auszuführen, müssen Sie nach den obigen Abhängigkeiten das BCIPY -Paket installieren.
So installieren Sie für die Verwendung lokal und die Verwendung der GUI:
pip install kenlm==0.1 --global-option="--max_order=12" .pip install psychopy==2023.2.1 --no-deps .pip install -e .Wenn Sie die neueste Version von PYPI wünschen und mit Modulen erstellen möchten:
pip install bcipyWenn Sie die Marke installiert sind, können Sie den Befehl folgt ausführen, um zu installieren:
# install in development mode
make dev-install Rufen Sie ein Experiment -Protokoll oder eine Aufgabe direkt mit dem Befehlszeilen -Dienstprogramm bcipy auf.
bcipy --helpbcipy --user "bci_user" --task "RSVP Calibration"bcipy --user "bci_user" --experiment "default"bcipy --fakebcipy --novizbcipy --alertbcipy --parameters "path/to/valid/parameters.json" Führen Sie nach der Installation von BCIPY den folgenden Befehl aus, um ein Signalmodell (derzeit PCARDAKDE ) zu trainieren:
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" Führen Sie nach der Installation von BCIPY den folgenden Befehl aus, um Plots zu generieren, die nach der Erfassung von Daten angezeigt oder gespeichert werden können:
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" Der Simulator kann mit dem Befehlszeilen-Dienstprogramm bcipy-sim ausgeführt werden.
Ex. bcipy-sim -d my_data_folder/ -p my_parameters.json -m my_models/ -n 5
Führen Sie bcipy-sim --help für die Dokumentation aus oder sehen Sie das Readme im Simulator-Modul.
from bcipy . helpers import system_utils
system_utils . get_system_info ()Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die BCIPY -GUI zu starten:
python bcipy/gui/BCInterface.pyWenn Sie die Make installiert sind, können Sie den Befehl folgen, um die GUI aus dem BCIPY -Root -Verzeichnis zu starten:
make bci-guiStimuli : Ein einzelner Buchstaben, ein Ton oder ein Bild, das gezeigt wird (im Allgemeinen in einer Anfrage). Singular = Stimulus, Plural = Stimuli.
Versuch : Eine Datenerfassung nach einer Stimuli. A----
Anfrage : Die Reihe von Stimuli nach einem Fixierungskreuz in einer Rechtschreibaufgabe, um die Benutzerabsicht zu sammeln. A ---- b --- c ----
Serie : Jede Serie enthält mindestens eine Anfrage. Nach einer Serie in einer Rechtschreibaufgabe wird eine Brief-/Symbolentscheidung getroffen.
Sitzung : Daten für eine Aufgabe gesammelt. Bestehen aus Metadaten über die Aufgabe und eine Liste von Serien.
Protokoll : Eine Sammlung von Aufgaben und Aktionen, die in einer Sitzung ausgeführt werden sollen. Dies wird als innerhalb von Experimenten definiert und kann mit der BCIPY -GUI registriert werden.
Aufgabe : Ein experimentelles Design mit Stimuli, Versuchen, Anfragen und Serien zur Verwendung in BCI. Zum Beispiel ist "RSVP -Kalibrierung" eine Aufgabe.
Modus : Häufige Designelemente zwischen Aufgabentypen. Zum Beispiel sind Kalibrierung und freie Schreibweise Modi.
Paradigma : Paradigma mit einzigartigen Eigenschaften und Modi anzeigen. Ex. Rapid-seriale visuelle Präsentation (RSVP), Matrix-Speller, Visuelles Evozed Potential (SSVEP).
Dies ist eine Liste der Hauptmodule und ihrer Funktionalität. Jedes Modul enthält seine eigene Readme, Demo und Tests. Bitte besuchen Sie sie, um weitere Informationen zu erhalten!
acquisition : Erfasst Daten, gibt die gewünschte Zeitreihe zurück und speichert am Ende der Sitzung in der Datei.display : Handles Anzeige von Stimuli auf dem Bildschirm und übergibt das Stimuli -Timing zurück.signal : EEG -Signalmodelle, Blicksignalmodelle, Filter, Verarbeitung, Evaluatoren und Zuschauer.gui : Endbenutzerschnittstelle in registrierte BCI-Aufgaben und Parameterbearbeitung. Siehe Bcinterface.py.helpers : Hilfreiche Funktionen, die für Interaktionen zwischen Modulen, Basis -E/A und Datenvisualisierung erforderlich sind.language : Gibt die Wahrscheinlichkeiten der nächsten Symbole während des Typs.parameters : Ort der JSON -Parameter. Dies umfasst Parameter.json (Hauptsexperiment / App -Konfiguration) und Device.json (Geräteregistrierung und Konfiguration).static : Bild- und Klangstimuli, Verschiedenheitshandbücher und lesbare Texte für GUI.task : BCIPY implementierte Benutzeraufgaben. Hauptsammlung von BCI -Modulen zur Verwendung während verschiedener Experimente. Ex. RSVP -Kalibrierung.feedback : Feedback -Mechanismen für Klang und visuelle Reize.main : Executor von Experimenten. Haupteintrittspunkt in die Anwendungconfig : Konfigurationsparameter für die Anwendung, einschließlich Pfaden und Datenfilensamen.simulator : Bietet Unterstützung für das Ausführen von Simulationen, die auf zuvor gesammelten Daten basieren. Weitere Informationen zu allen unterstützten Paradigmen, Aufgaben, Aktionen und Modi finden Sie unter bcipy/task/README.md . Das Folgende sind die unterstützten und validierten Paradigmen:
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.
Zitat:
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 -Zauberer
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.
Zitat:
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.
Alle wichtigen Funktionen und Module sind mit Demo- und Testdateien zugeordnet, die lokal ausgeführt werden können. Dies sollte dazu beitragen, Sie an die Funktionalität zu orientieren und als Dokumentation zu dienen. Wenn Sie zum Repo hinzufügen, sollten Sie Tests hinzufügen und alle Tests beheben, die fehlschlagen, wenn Sie den Code ändern.
Zum Beispiel können Sie die Hauptdemo der BCIPY -Demo durch:
python demo/bci_main_demo.py
Diese Demo wird in Parametern geladen und eine Demo -Aufgabe ausführt, die in der Datei definiert ist. In den meisten Modulen sind Demo -Dateien enthalten, mit Ausnahme von GUI, Signal und Parametern. Führen Sie sie als Python -Skript aus!
Die Bestimmung und Korrektur der statischen Offseting sind kritische Schritte, bevor ein Experiment gestartet wird. BCIPY verwendet LSL, um EEG -Daten und Psychopy zu erwerben, um Stimuli zu präsentieren.
LSL Synchronisation Dokumentation Psychopy Timing -Dokumentation
Ein statischer Versatz ist der reguläre Zeitunterschied zwischen unseren Signalen und Reizen. Dieser Offset wird durch Testen über eine Fotodiode oder einen anderen Auslösermechanismus bestimmt. Die Offset -Korrektur erfolgt durch Verschieben des EEG -Signals durch den festgelegten Offset unter Verwendung des Parameters static_offset .
Nach Ausführung einer Timing -Überprüfungsaufgabe (z. Verwenden Sie das offset -Modul, um einen Offset -Korrekturwert zu empfehlen und die Ergebnisse anzuzeigen.
Verwenden Sie den folgenden Befehl, um die Offset -Bestimmung auszuführen und die Ergebnisse auszudrucken:
python bcipy/helpers/offset.py -rNach dem Ausführen des obigen Befehls wird der empfohlene Offset -Korrekturwert im Terminal angezeigt und kann übergeben werden, um die Systemstabilität zu bestimmen und die Ergebnisse anzuzeigen.
# Let's say the recommneded offset value is 0.1
python bcipy/helpers/offset.py --offset " 0.1 " -pWenn Sie die Marke installiert sind, können Sie den Befehl folgen ausführen, um die Offset -Bestimmung auszuführen und die Ergebnisse anzuzeigen:
make offset-recommend Wenn Sie Tests schreiben, legen Sie sie in das richtige Modul in einen Testordner und prüfen Sie die Datei und testen Sie sich mit test_ , damit PyTest sie entdeckt. Beispiele finden Sie unter anderen Modultests!
Die Entwicklungsanforderungen müssen vor dem Ausführen installiert werden: pip install -r dev_requirements.txt
So führen Sie alle Tests in der Befehlszeile aus:
py . testSo führen Sie ein einzelne Module -Tests (z. B. Akquisition) in der Befehlszeile aus:
py . test acquisitionSo generieren Sie Metriken zur Testabdeckung in der Befehlszeile:
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 htmlAlternativ können Sie den Befehl folgen, wenn die Marke installiert ist, den Befehl folgen, um Deckung/PyTest auszuführen und die HTML zu generieren:
make coverage-html Dieses Projekt erzwingt die Richtlinien PEP -Stil mit Flake8.
Um zu vermeiden, dass sie unnötige Zeit für die Formatierung verbringen, empfehlen wir die Verwendung autopep8 . Sie können eine Datei oder ein Verzeichnis für das automatische Format angeben. Wenn Sie bereit sind, Ihren Code zu drücken, können Sie die folgenden Befehle ausführen, um Ihren Code zu formatieren:
# autoformat all files in bcipy
autopep8 --in-place --aggressive -r bcipy
# autoformat only the processor file
autopep8 --in-place --aggressive bcipy/acquisition/processor.py Leiten Sie schließlich den Lint -Check: flake8 bcipy .
Wenn Sie die Marke installiert sind, können Sie den Befehl folgen, um autopep8 und Flake8 auszuführen, ausführen.
make lint Dieses Projekt erzwingt mypy -Typ -Überprüfung. Die Tippprojektkonfiguration befindet sich in der Datei mypy.ini. Führen Sie den folgenden Befehl aus:
mypy bcipyFühren Sie den folgenden Befehl aus, um einen Bericht zu erstellen:
mypy --html-report bcipyWenn Sie die Marke installiert sind, können Sie den Befehl folgen, um MyPY auszuführen:
make typeWenn Sie dem Entwicklungsteam Slack hinzugefügt werden oder zusätzliche Fragen haben möchten, wenden Sie sich bitte an uns unter [email protected]!
Wir folgen und werden den Bund des Mitwirkenden durchsetzen, um eine sichere und integrative Umgebung für diese Open-Source-Software zu fördern. Verweisen Sie auf diesen Link, um weitere Informationen zu erhalten: https://www.contributor-covenant.org/
Andere Richtlinien:
Beispiele finden Sie in dieser Ressource: http://docs.python-guide.org/en/latest/writing/style/
Alle Beiträge werden sehr geschätzt!