SharpBCI
A multi-threaded brain control interface (BCI) library in C#
|
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... | |
enum SharpBCI.EEGDataType |
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 |
enum SharpBCI.LogLevel |