Git Product home page Git Product logo

sharpbci's Introduction

SharpBCI

Introduction

This is a easy-to-use platform to run BCI experiments. This platform provides basic functions such as experimental configuration, data streaming, and offline analysis. Different experiment paradigms and external device drivers can be implemented through plug-in development.

System Design

Modules & Interfaces

Repository Organisation

\

  • Library Shared libraries
  • SharpBCI SharpBCI executable
  • SharpBCI.Core Core of SharpBCI
  • SharpBCI.Extensions Basic extensions
  • SharpBCI.Plugins SharpBCI plugins
    • SharpBCI.CPT.Plugin Conners' Continuous Performance Test pradigm
    • SharpBCI.MI.Plugin User interface of motor imagery paradigm interop with python server
    • SharpBCI.MRCP.Plugin Movement related cortical potential paradigm
    • SharpBCI.P300.Plugin P300 paradigm
    • SharpBCI.Speller.Plugin BCI speller paradigm, using DirectX to provide stable flicker rendering
      • CCA C++ cannonical correlation analysis library
    • SharpBCI.VEP.Plugin Multiple visual evoked potential paradigms included, using DirectX to provide stable flicker rendering
    • SharpBCI.WebBrowser.Plugin Server side of BCI web browser paradigm, client side is a script running in Chrome
    • SharpBCI.BiosignalSources.Plugin Bio-signal sampler drivers, e.g. Neuroscan, NeuroElectrics, OpenBCI, ...
    • SharpBCI.EyeTrackers.Plugin Eye-tracker drivers, e.g. Tobii's eye-tracker
    • SharpBCI.VideoSources.Plugin Video source drivers, e.g. Web-Cam
  • SharpBCI.Tests Unit tests of SharpBCI

Get Started

  1. Install Visual Studio 2018 or later, clone MarukoLib and SharpBCI into same folder.
  2. Open Visual Studio as administrator and create a new empty Visual Studio solution.
  3. Add all projects in repo MarukoLib except 'MarukoLib.Dragonfly' and 'MarukoLib.Tests' to the created solution.
  4. Add 'SharpBCI.Core', 'SharpBCI.Extensions', 'SharpBCI' projects into the solution.
  5. (Optional) Add some plugin projects into the solution as your wish.
  6. Set SharpBCI as the startup project.
  7. Build and run the solution.

File Formats

After the completion of a session, you can see some files that have the same filename but different suffixes in the data folder:

  • .mkr Experiment marker with timestamp with timestamp. (ASCII; Comma-separated)
  • .dat Biosignal data with timestamp. (ASCII; Comma-separated)
  • .gaz Eye gaze point data with timestamp. (ASCII; Comma-separated)
  • .vfs Video frames with timestamp. (Binary)
  • .scfg Session configuration, can be used to restart the experiment. (ASCII; Json)
  • .session Session information. (ASCII; Json)
  • .result Result of the experiment. (ASCII; Json)

Command-line

  • .\SharpBCI.exe "xxx.scfg" Directly run the predefined session.
  • .\SharpBCI.exe "xxx.mscfg" Run multiple predefined sessions in one go.

How to Create Your Own Paradigm

You can implement a paradigm easily by defining your own Paradigm with desired paramters and corresponding ParadigmFactory.

Demo Paradigm

See Demo Plugin for more detail.

Currently Supported Devices

  • Biosignal Source
    • Generic Oscillator (Sine wave simulated)
    • Data File Reader (Replay stored file)
    • Neuroscan (via TCP/IP from SCAN 4.5)
    • Neuro Electrics (via TCP/IP from NIC 2)
    • OpenBCI (via serial port)
    • Unnamed Device (via serial port, made by ZJU)
  • Eye tracker
    • Cursor Tracker (PC mouse simulated)
    • Tobii's Eye-Tracker (via Tobii gaming SDK)
  • Video Source
    • Screen Capturer (PC screenshot)
    • Web Camera (via DirectShow)
  • EGI Supports
    • Net Station ECI Tagging (via TCP/IP to Net Station)

sharpbci's People

Contributors

dalelin93 avatar zqinqaas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.