PyNoetic: Accelerating Brain Computer Interface development.
A framework for rapid prototyping of Brain-Computer interfaces tailored to the individual.
What are BCIs?
Neural pathways governing muscle control are often compromised in patients diagnosed with neurological disorders such as Cerebral Palsy, Amyotrophic Lateral Sclerosis (ALS), and traumatic brain or spinal cord injuries. Consequently, these patients experience substantial reductions in mobility and communication capabilities, significantly impacting their overall independence, social functioning, and self-care. This abrupt onset of mobility impairment in patients often triggers symptoms of psychological distress like depression, anxiety, and mood disturbances. In response to these challenges, Brain-Computer Interfaces (BCIs) offer a promising solution, establishing an alternative pathway between an individual’s brain and the external world, bypassing the compromised nervous system. However, the intricate nature of the human brain, along with characteristic variations that occur over time and between individuals, necessitates the development of BCIs tailored to specific disabilities. Recent studies have indicated that a BCI system designed to assist an individual with a particular disability is unlikely to be suitable for addressing a different one. Furthermore, even within a cohort of individuals sharing the same disability, the performance and effectiveness of a BCI system exhibit significant variability. BCIs developed in controlled lab settings also often lack versatility. Consequently, these solutions have not found widespread applications. To bridge this gap effectively, there is an immediate need for rapid prototyping of BCIs tailored to individual users.

What is PyNoetic?
The development of a BCI system is a multifaceted undertaking that demands expertise across multiple domains, including neuroscience, digital signal processing, machine learning, artificial intelligence, and embedded systems. Testing experimental paradigms further requires coding complex software frameworks, posing a significant hurdle to the swift development of scalable BCI solutions.
PyNoetic is a novel open-source, highly customizable, Graphical User Interface (GUI)-aided BCI framework built in Python. The primary objective of PyNoetic is to expedite the development and prototyping of synchronous BCIs. Addressing substantial shortcomings found in previous BCI frameworks, PyNoetic aims to provide a stand-alone solution to researchers, offering capabilities ranging from stimuli presentation and data acquisition to classification and feedback.

One of PyNoetic’s key strengths lies in its versatility for both offline analysis and real-time BCI development. By catering to both programmers and non-programmers, it streamlines the experimental design process, enabling researchers to focus on more intricate facets of BCI development and accelerating research. An introductory video of PyNoetic is available on YouTube.
Getting Started with PyNoetic.
PyNoetic's source code is available on GitHub.
git clone https://github.com/NeuroDiag/PyNoetic-official.git
python -m venv PyNoeticEnv
PyNoeticEnv/Scripts/activate
pip install -r requirements.txt
# You might need to use: sudo apt install libxcb==* for Linux
cd gui
python load.py
PyNoetic Features

PyNoetic's features are divided into modules and submodules for ease of use and understanding. There are six primary modules :
Stimuli Generation and Data Recording - Lab Streaming Layer for data acquisition and the ability to create custom experiments for SSVEL/ERP-based BCI tasks.
Channel Selection - Various channel ranking algorithms to identify critical channels offline and reduce complexity during deployment.
Pre-processing - Programmable filters as well as blind source separation and decomposition-based methods to reject artifacts.
Feature Extraction - Temporal, Frequency, and Spatial domain features. If a feature is missing, submit a request here!
Classification - Popular deep learning models - ResNet, AlexNet, and EEGNet are already included - other models can be added quite easily.
Simulation and Feedback - A 3D simulation environment that allows you to test your pipeline.

Why PyNoetic?
Apart from the standard functionality found in every BCI software, PyNoetic also offers a live mode for developing real-time BCI pipelines without writing a single line of code using programmable flowcharts. This feature is a first in any Python toolbox for BCI development.

Here is a comparison of PyNoetic with some other popular toolboxes.

This table is from our paper, and you can find more details on the comparison with other toolboxes there.
Citing PyNoetic
If you find our work valuable for your project, please consider adding a star to the repository and citing the paper in your research.
