Jump to content

Contributions:CortecADC: Difference between revisions

From BCI2000 Wiki
Abelsten (talk | contribs)
Abelsten (talk | contribs)
No edit summary
Line 48: Line 48:


==Stimulation Parameters==
==Stimulation Parameters==
[[File:CortecADC_pulse_def.png|600px|thumb|center|upright=2.5|Figure 1. Pulse definition]]
===Enable Stimulation===
===Enable Stimulation===
This parameter enables/disables stimulation.  
This parameter enables/disables stimulation.  


===Stimulation Pulses===
===Stimulation Pulses===
This parameter defines the shape of the stimulation pulse applied, as described in Fig 1. It is possible to define an arbitrary number of pulses, each of which are associated with a PulseID which is an integer defined by the user. Each pulse must adhere to the charge-balanced pulse shape depicted in Fig 1.
Each pulse is defined in one column of this parameter matrix. The rows are labeled and there are some limitations to the magnitudes and durations which are elaborated on in the subsequent section.
====PulseID====
This must be an integer greater than or equal to zero. This ID will be used in the ''StimulationTriggers'' parameter.
====Pulse Amplitude====
The pulse amplitude defines the amplitude of the main pulse in units of µA. The counter pulse will have a negative amplitude that is one quarter of the magnitude of the main pulse.
The valid values of this parameter are in the range 0 to 6120 µA. The granularity changes for smaller amplitudes as follows:
* amplitude <=  3060 µA: step size of 12
* amplitude >  3060 µA: step size of 24
* This leads to a set of acceptable values that looks like: [0, 12, ..., 3048, 3060, 3084, ... 6096, 6120]
You can define this parameter to not be one of the acceptable values in this range, but it will be rounded to the nearest valid value and other parameters will be varied to maintain charge balance.
====Pulse Duration====
The pulse duration defines the duration of the main pulse in µs. The counter pulse will have a duration that is four times longer than the main pulse duration. Values for the pulse duration can be set in steps of 10 µs. The acceptable range is between 10 and 2550 µs. Again, if the provided value is not a multiple of 10, it will be rounded to the the nearest valid value, and other parameters will be modified to maintain charge balance.
====Dead Zone 0====
Holds the duration of the pause between main and counter pulse in µs. Values can be set in steps of 10 µs. The acceptable range is between 10 and 2550 µs.


==Filtering Parameters==
==Filtering Parameters==

Revision as of 15:28, 19 April 2021

Introduction

CorTec BIC is an application interface (API) in BCI2000 that facilitates with the CorTec hardware device, which is implanted in animals (primarily, pigs) for research and medical purposes. The API enables programmatic access to BIC implants.

CorTec BIC Architecture

Walkthrough: Experimental Steps

The following steps are the primary steps to perform the necessary experiment for medical and research purposes.

Initial Access and Device Discovery

There are several functions in the header file bciapi.h that provide central access to the application interface which helps in creating an implant factory and obtaining some information and details regarding the connected external units and implant devices (device discovery).

Implant Object Creation

This steps involves creation of implant object. During this step, it is assumed that only one external unit is connected and one implant is connected to this external unit. Then this implant object is used to query the temperature and the humidity within the implant's hermetic capsule.

Obtaining Measurement Data

In this step, an Implant listener object is created and registered to an Implant object. Then the measurement is started and one channel is written to standard output.

  • Attention

Please note that the current implementation writes a value to stdout approximately every millisecond (i.e., with the sampling frequency) will cause performance issues on slow machines. For productive use, the measurement data can be passed to another thread for further processing or written to a binary file, instead of being written to stdout.

Doing Stimulation

In this step, electrical stimulation is performed via an implant by first creating a stimulation command that stimulates with a frequency of ~18.5Hz.

Parameters:CorTec BIC Implant

Following is the Parameter Configuration for BIC Implant application interface in BCI2000.

Source Parameters

SourceCh

The total number of digitized and stored channels. In the current implementation, this parameter cannot be edited, and will default to how many channels are available from the implant.

SampleBlockSize

Samples per channel per digitized block. Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated. For example, at 1000 Hz sampling and a SampleBlockSize of 20, the system (e.g., source signal display, signal processing, and stimulus presentation) will be updated 50 times per second.

SamplingRate

The sample rate of the system. This parameter cannot be edited, and will default to the sampling rate available from the implant. In case you are experiencing problems by higher sampling rates (e.g., data loss, jerky display, etc.), increase the SampleBlockSize so that you are updating the system less frequently (usually, updating the system 20-30 times per second is sufficient for most applications), and increase Visualize->VisualizeSourceDecimation. This parameter will decrease the number of samples per second that are actually drawn in the Source display.

SourceChOffset

Offset for each channel.

SourceChGain

Gain for each channel.

ChannelNames

Names of each channel.

Stimulation Parameters

Figure 1. Pulse definition

Enable Stimulation

This parameter enables/disables stimulation.

Stimulation Pulses

This parameter defines the shape of the stimulation pulse applied, as described in Fig 1. It is possible to define an arbitrary number of pulses, each of which are associated with a PulseID which is an integer defined by the user. Each pulse must adhere to the charge-balanced pulse shape depicted in Fig 1. Each pulse is defined in one column of this parameter matrix. The rows are labeled and there are some limitations to the magnitudes and durations which are elaborated on in the subsequent section.

PulseID

This must be an integer greater than or equal to zero. This ID will be used in the StimulationTriggers parameter.

Pulse Amplitude

The pulse amplitude defines the amplitude of the main pulse in units of µA. The counter pulse will have a negative amplitude that is one quarter of the magnitude of the main pulse.

The valid values of this parameter are in the range 0 to 6120 µA. The granularity changes for smaller amplitudes as follows:

  • amplitude <= 3060 µA: step size of 12
  • amplitude > 3060 µA: step size of 24
  • This leads to a set of acceptable values that looks like: [0, 12, ..., 3048, 3060, 3084, ... 6096, 6120]

You can define this parameter to not be one of the acceptable values in this range, but it will be rounded to the nearest valid value and other parameters will be varied to maintain charge balance.

Pulse Duration

The pulse duration defines the duration of the main pulse in µs. The counter pulse will have a duration that is four times longer than the main pulse duration. Values for the pulse duration can be set in steps of 10 µs. The acceptable range is between 10 and 2550 µs. Again, if the provided value is not a multiple of 10, it will be rounded to the the nearest valid value, and other parameters will be modified to maintain charge balance.

Dead Zone 0

Holds the duration of the pause between main and counter pulse in µs. Values can be set in steps of 10 µs. The acceptable range is between 10 and 2550 µs.

Filtering Parameters

EnableStimulation

Flag to enable/disable stimulation.

StimulationParameters

Matrix to store parameters defined as follows: StimulatonId, StimulationType (voltage/current),DurationDuration1, amplitude1,DurationDuration2, amplitude2 ...

StimulationTriggers

Matrix to define a trigger for stimulation. Convention: StimulatonId, trigger equation,repeats, anode electrodes, kathode electrodes

StimulationExpression

Expression to start CorTec Stimulation.

AbortExpression

Expression to abort CorTec Stimulation.

EnableCorTecFilter

Flag to enable/disable CorTecFilter.

CheckState

Integer to connect stimulation parameters.

See also

User Reference:Filters, Contributions:ADCs