SharpBCI
A multi-threaded brain control interface (BCI) library in C#
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Pages
Package SharpBCI

Classes

interface  IPredictor< T >
 Interface for all predictors. More...
 
interface  IPredictorPipeable
 Extends the typical pipeable to include training controls SharpBCI uses these functions to interface with the prediction mechanisms. More...
 
class  AggregatePredictionPipeable
 A pipeable which aggregates received EEGEvents into an array based on the reported EEGEvent timestamp and then uses an IPredictor<EEGEvent[]> to train/classify on them. More...
 
class  Predictor
 An IPredictor which uses a 3-dimensional loci of points in the form of an array of EEGEvent's to classify EEG data Uses nearest neighbor predictions with distance computed by the abstract Compute(double[] x, double[] y) function Predictions occur by computing the distance between the incoming sample and all training samples, pulls the k nearest neighbors, and determines the final prediction. More...
 
class  AggregateKNNCorrelationPredictor
 
class  AggregateKNNDTWPredictor
 
class  TournamentArtifactPipeable
 An artifact detector which uses a TournamentArtifactDectector on a per-channel basis to detect artifacts Input types: EEG, Output types: EEG. More...
 
interface  IArtifactDetector
 An interface which defines an abstract artifact detector You can implement this to utilize classes which find the best detector implementation. More...
 
class  ARArtifactDetector
 A detector which uses an underlying AR model to detect artifacts. More...
 
class  TournamentArtifactDetector
 The TournamentArtifactDetector holds a "tournament" of some number ARArtifactDetectors (termed competitors) The majority consensus of the most well-fit models is the final determination of whether or not the data is an artifact. More...
 
class  AsyncStreamReader
 
class  AsyncStreamWriter
 Used internally to asynchronously write a string to a file stream. More...
 
class  EEGDeviceAdapter
 An abstract base class from which all device adapters should inherit. More...
 
class  RemoteOSCAdapter
 An EEGDeviceAdapter which connects to an EEGDevice via OSC It then asynchronously listens for messages on a given OSC socket and emits the appropriate EEGEvents for the received OSC message Target Hardware: Muse 2014 and Muse 2016 (via android-bridge.apk) More...
 
struct  DummyAdapterSignal
 A simple struct which defines a signal of given frequencies and amplitudes (per-channel) More...
 
class  InstrumentedDummyAdapter
 An EEGDeviceAdapter which is used to emit a certain set of signals via StartSignal. More...
 
class  CSVReadAdapter
 A device adapter that can be used to replay or reemit the data logged during a previous session. More...
 
class  DummyAdapter
 A version of InstrumentedDummyAdapter which constantly emits a given DummyAdapterSignal Generally used for smoke-testing / debugging your SharpBCI pipeline. More...
 
class  DynamicTimeWarping
 
class  SeriesVariable
 
interface  IPreprocessor
 
class  Preprocessors
 
class  StandardizationPreprocessor
 
class  CentralizationPreprocessor
 
class  EEGEvent
 A class which represent various types of events relating to EEG data. More...
 
interface  IVectorizedSmoother< T >
 A common interface for a generic smoother which operates on arrays of type T Currently, only used by FFTPipeable for smoothing. More...
 
class  ExponentialVectorizedSmoother
 Implements a vectorized version of exponential smoothing Each value in the input array is assumed to belong to the same time series as the previous value at the same index in the last input array. More...
 
class  XCorrVectorizedSmoother
 
class  FFTPipeable
 A Pipeable which performs an FFT on each channel It outputs an FFTEvent every windowSize samples. More...
 
class  BandpassPipeable
 A pipeable which implements a band-pass filter on all incoming data Input types: EEGEvent Output types: EEGEvent. More...
 
class  SimpleFilterPipeable
 This pipeable is deprecated and may be removed at any point without warning. More...
 
class  FilterUtilities
 
interface  IFilter< T >
 
class  MultiFilter< T >
 
class  MovingAverageFilter
 
class  ExponentialFilter
 
class  RecursiveFilter
 
class  NarrowPassFilter
 
class  NotchFilter
 
class  ConvolvingFilter
 
class  ConvolvingSingleEndedFilter
 
class  ConvolvingDoubleEndedFilter
 
class  IndexableQueue< T >
 Weiss implementation of Circular Buffer with addition of indexability. More...
 
interface  ILogOutput
 
class  ConsoleLogger
 
class  FileLogger
 
class  Logger
 
class  MatrixUtils
 
interface  IPipeable
 All components of the SharpBCI pipeline are expected to implement this interface. More...
 
class  Pipeable
 
class  SerializedPipeline
 A class which represents the entire pipeline. More...
 
class  SerializedStage
 A class which represents a single stage in the pipeline Can be serialized into a JSON file. More...
 
class  SerializedConnectionInfo
 A class which represents a connection graph for the pipeline. More...
 
class  PipelineSerializer
 A static class to read SerializedStage files from a file.
 
class  SharpBCIConfig
 An object which configures a SharpBCI object. More...
 
class  SharpBCIBuilder
 A builder class for SharpBCIConfig. More...
 
class  TrainedEvent
 A generic event which indicates previously trained event occured. More...
 
class  SharpBCI
 This is the "main" class which you should create. More...
 
class  TrainedEventEmitter
 An end-point consumer which emits TrainedEvents it received Must only be connected to Pipeables which output TrainedEvents. More...
 
class  RawEventEmitter
 An end-point consumer which emits TrainedEvents it received Must only be connected to Pipeables which output EEGEvents. More...
 
class  EEGDeviceProducer
 Wraps an EEGDeviceAdapter with a Pipeable and emits EEGDataType.EEG events Should only be used as a producer not consumer. More...
 
class  StatsUtils
 A class for statistical utility functions.
 
class  OnlineVariance
 Simultaneously calculates sample mean and variance in O(1) using Welford-Knuth online algorithm. More...
 
class  ARModel
 A simple AR model class which can predict the next value of X given AR parameters (phi), a constant factor (i.e., E[noise(X)]), and previous values of X O(p) performance. More...
 

Enumerations

enum  DistanceMeasure { DistanceMeasure.Manhattan = 1, DistanceMeasure.Euclidean = 2, DistanceMeasure.SquaredEuclidean = 3, DistanceMeasure.Maximum = 4 }
 
enum  EEGDataType {
  EEGDataType.EEG = 0, EEGDataType.FFT_RAW = 1, EEGDataType.FFT_SMOOTHED = 2, EEGDataType.ALPHA_ABSOLUTE = 3,
  EEGDataType.BETA_ABSOLUTE = 4, EEGDataType.GAMMA_ABSOLUTE = 5, EEGDataType.DELTA_ABSOLUTE = 6, EEGDataType.THETA_ABSOLUTE = 7,
  EEGDataType.ALPHA_RELATIVE = 8, EEGDataType.BETA_RELATIVE = 9, EEGDataType.GAMMA_RELATIVE = 10, EEGDataType.DELTA_RELATIVE = 11,
  EEGDataType.THETA_RELATIVE = 12, EEGDataType.CONTACT_QUALITY = 13
}
 What type of EEG data this EEGEvent represents. More...
 
enum  LogLevel { LogLevel.INFO, LogLevel.WARNING, LogLevel.ERROR }
 Internal enum to indicate log level INFO = normal running information WARNING = possible error, but not fatal ERROR = fatal error occurred. More...
 

Enumeration Type Documentation

Enumerator
Manhattan 
Euclidean 
SquaredEuclidean 
Maximum 

What type of EEG data this EEGEvent represents.

IMPORTANT note to devs: not assigning a value to each field in this enum can break scenes that rely on it.

Enumerator
EEG 

This represents microvolt data organized by channel.

It may or may not be filtered for artifacts depending on pipeline layout. The length of EEGEvent data should equal the number of channels as reported by the underlying EEGDeviceAdapter.

FFT_RAW 

Data resulting from a Fourier Transform on some number of samples of type = EEG events This EEGEvent has not been smoothed in any way, and is inherently more variable than FFT_SMOOTHED.

Length of data array depends on window size of the Fourier Transform. Extra data is an int indicating what channel this event belongs to.

FFT_SMOOTHED 

Data resulting from a Fourier Transform on some number of samples of type = EEG events This EEGEvent has been smoothed by some function which depends on the underlying pipeline.

Length of data array depends on window size of the Fourier Transform. Extra data is an int indicating what channel this event belongs to.

ALPHA_ABSOLUTE 

The sum of power in the alpha band (specifically about 7.5 Hz ~ 13 Hz) in decibels Length of data array is equal to the number of channels as reported by the underlying EEGDeviceAdapter.

BETA_ABSOLUTE 

The sum of power in the beta band (specifically about 13 Hz ~ 30 Hz) in decibels Length of data array is equal to the number of channels as reported by the underlying EEGDeviceAdapter.

GAMMA_ABSOLUTE 

The sum of power in the alpha band (specifically about 30 Hz ~ 44 Hz) in decibels Length of data array is equal to the number of channels as reported by the underlying EEGDeviceAdapter.

DELTA_ABSOLUTE 

The sum of power in the alpha band (specifically about 1 Hz ~ 4 Hz) in decibels Length of data array is equal to the number of channels as reported by the underlying EEGDeviceAdapter.

THETA_ABSOLUTE 

The sum of power in the alpha band (specifically about 4 Hz ~ 8 Hz) in decibels Length of data array is equal to the number of channels as reported by the underlying EEGDeviceAdapter.

ALPHA_RELATIVE 

The power of the alpha band in relation to other bands.

Length of data array should be equal to the underlying EEGDeviceAdapter.

BETA_RELATIVE 

The power of the beta band in relation to other bands.

Length of data array should be equal to the underlying EEGDeviceAdapter.

GAMMA_RELATIVE 

The power of the gamma band in relation to other bands.

Length of data array should be equal to the underlying EEGDeviceAdapter.

DELTA_RELATIVE 

The power of the delta band in relation to other bands.

Length of data array should be equal to the underlying EEGDeviceAdapter.

THETA_RELATIVE 

The power of the theta band in relation to other bands.

Length of data array should be equal to the underlying EEGDeviceAdapter.

CONTACT_QUALITY 

Indicates a change in contact quality for EEG channels Length of data array should be equal to the underlying EEGDeviceAdapter.

The data array indicates a qualitative metric of current connectivity on a per channel basis. Current semantics: 4 = no contact, 2 = poor contact, 1 = good contact

Internal enum to indicate log level INFO = normal running information WARNING = possible error, but not fatal ERROR = fatal error occurred.

Enumerator
INFO 
WARNING 
ERROR