Contributions:NeuroOmegaADC: Difference between revisions
Wengelhardt (talk | contribs) |
Wengelhardt (talk | contribs) StimMarker and Digital input details |
||
| Line 6: | Line 6: | ||
===Version History=== | ===Version History=== | ||
* 2022/07/18: StimMarker 1 and Ports 1 and 2 are written to BCI2000 States. | |||
* 2021/06/17: Initial working release R6310. | * 2021/06/17: Initial working release R6310. | ||
===Source Code Revisions=== | ===Source Code Revisions=== | ||
*Initial development: 6274 | *Initial development: 6274 | ||
*Known to compile under: | *Known to compile under: 6843 | ||
*Broken since: -- | *Broken since: -- | ||
===Known Issues/Important Things to Know=== | ===Known Issues/Important Things to Know=== | ||
*Recording from channels with different sampling rates is not possible. | *Recording from channels with different sampling rates is not possible. | ||
*The Neuro Omega is not able to immediately switch stimulating an electrode as a cathode to an anode. If this is desired, you must introduce a sham stimulation in-between, which can be done to a channel that is not used | *The Neuro Omega is not able to immediately switch stimulating an electrode as a cathode to an anode. If this is desired, you must introduce a sham stimulation in-between, which can be done to a channel that is not used | ||
| Line 97: | Line 97: | ||
====Digital Ports==== | ====Digital Ports==== | ||
*'''EnablePortInputs''' - | *'''EnablePortInputs''' - Enabling this parameter will record from both 16-bit D-Sub digital input connectors to the Port1 and Port2 states. | ||
====Device Information==== | ====Device Information==== | ||
| Line 116: | Line 114: | ||
===NeuroOmegaTimeStamp=== | ===NeuroOmegaTimeStamp=== | ||
The time at which the channels are read from the Neuro Omega. | The 32-bit time at which the channels are read from the Neuro Omega. | ||
===NeuroOmegaStimulation=== | ===NeuroOmegaStimulation=== | ||
A boolean state showing whether or not the Neuro Omega is stimulating. It is important to note it only has one value per block, so it cannot be updated more frequently than the block size. | A boolean state showing whether or not the Neuro Omega is stimulating. It is important to note it only has one value per block, so it cannot be updated more frequently than the block size. | ||
=== | ===StimMarker1=== | ||
A state that contains the number of the channel that is being stimulated. It will only be triggered when stimulation is occurring, otherwise it will be zero. | |||
===Port2=== | ===StimMarker1Time=== | ||
The timestamp at which StimMarker1 occurs. For every StimMarker event, there will be a corresponding time stamp. | |||
===Port1 and Port2=== | |||
These are 16-bit states recorded from the 16-bit D-Sub digital input 1 and input 2 connector on the Neuro Omega. The states record each pin as a 1 or 0, and stored in a certain bit. To decode this data, analyze as binary. For example, if Port1 was 8, this would mean only the 4th pin of Port1 was high and the rest were low. | |||
===Port1Time and Port2Time=== | |||
The timestamps at which Port1 and Port2 are triggered. | |||
==Additional Information== | |||
===TimeStamps=== | |||
There are currently three timestamps logged: NeuroOmega timestamp, StimMarker timestamp, and the Ports 1 and 2 timestamps. The NeuroOmega timestamp is 32 bits, and corresponds to the time at which each block of data is read. Since both the StimMarkers and the Ports are read asynchronously to the signal source, they each have their own timestamps to accurately mark when the event occurred. These states are 16-bit, and increase twice as fast as the NeuroOmegaTimeStamp. To align them, shift every other peak up by 2^15. | |||
==See also== | ==See also== | ||
Revision as of 21:20, 18 July 2022

Versioning
Authors
- Alexander Belsten (belsten@neurotechcenter.org)
- William Engelhardt (engelhardt@neurotechcenter.org)
Version History
- 2022/07/18: StimMarker 1 and Ports 1 and 2 are written to BCI2000 States.
- 2021/06/17: Initial working release R6310.
Source Code Revisions
- Initial development: 6274
- Known to compile under: 6843
- Broken since: --
Known Issues/Important Things to Know
- Recording from channels with different sampling rates is not possible.
- The Neuro Omega is not able to immediately switch stimulating an electrode as a cathode to an anode. If this is desired, you must introduce a sham stimulation in-between, which can be done to a channel that is not used
Functional Description
This source module allows you to collect electrophysiological data from the Alpha Omega Neuro Omega clinical recording system. The Neuro Omega can record from a variety of modalities, such as ECoG, sEEG, micro, and macro contacts. It is often used for the placement of deep brain stimulating electrodes, facilitated by its ability to sonify local field potentials and drive the DBS lead to precise depths.
Video Overview
Integration into BCI2000
- Install the NeuroOmega System SDK - The SDK must be downloaded in order to run this source module. The executable "Neuro Omega System SDK .exe" must be obtained to download the SDK.
- Compile the source module - You will need both the Neuro Omega clinical system and a PC with BCI2000 installed and the NeuroOmegaADC source module compiled. Compile the source module on the BCI2000 PC by enabling
BUILD_PRIVATEin your CMake configuration and generating the BCI2000 solution. Access to the private directory in the SVN is necessary. Then compile the source module, and makeNeuroOmegaADCthe source module in your batch file.
Connection to BCI2000 PC
- Connection of Ethernet Cable - The BCI2000 PC connects to the Neuro Omega via a CAT6 ethernet cable. On the back of the Neuro Omega, you will find three ethernet ports. Connect the CAT6 cable into one that is not currently occupied, and connect the other end to the BCI2000 PC. It is a good idea to use an ethernet isolator to prevent transfer of significant current between the two systems.
- Configuring IPv4 address - Now that the two systems are connected physically, the BCI2000 PC's IPv4 address can be configured such that it is on the same subnet as the Neuro Omega. This can be done by checking the IPv4 address and subnet mask on the Neuro Omega system ethernet adapter and setting the BCI2000 PC's ethernet adapter to the same subnet mask and setting an appropriate IPv4 address.
- Installation of SDK - Alpha Omega provides an SDK installer for the Neuro Omega that must be installed. Acquire this installer and carry out the installation process.
- Setting MAC addresses - Now that the two systems are configured, and everything is installed, launch your batch file that has the NeuroOmegaADC as the source module. Open the Config window and navigate to the source tab. You will need to enter the Alpha Omega's MAC address into the NeuroOmegaMAC parameter. This can be located by looking at the sticker on the bottom of the Alpha Omega, near where ethernet ports are. Next, you will need to set the HostMAC parameter to the BCI2000 PC's MAC address. You can find this by opening the command prompt on the BCI2000 PC and entering the command
ipconfig /all. In the output of this command, find physical address in the ethernet adapter section. This is the BCI2000 PC's MAC address. - Setting Recording Channels - On the Neuro Omega, launch the data acquisition software. Press
Ctrl-Shift-Mto show the menu bar. In the Options tab, open the settings dialog box for the channel type you want to record from. You should see a box like this:
-
Figure 1: Channel dialog box on NeuroOmega Clinical System.
There are two columns in the box that are of particular importance to recording with BCI2000. The first is the Channel ID column. To record from a channel, you will need to enter its corresponding integer Channel ID in the RecordingChIDs parameter in BCI2000. The other important column is the SR (sampling rate) column. All of the channels you record from in BCI2000 must have the same sampling rate. You must enter this sampling rate in the SamplingRate parameter in BCI2000.
Stimulation
StimulationConfigurations
-
Figure 2: Stimulation pulse shape and train shape definition. The stimulation pulses on the left would take place during the "Stimulation duration" phase on the right.
-
Figure 3: Stimulation pulse shape definition in BCI2000.
This parameter is where stimulation pulses are defined. The pulse shapes are defined according to Fig. 2.
Additional Notes:
- If only one pulse is desired, Train Duration and Train Frequency don't have to be specified, or they can be set to 0.
StimulationTriggers
-
Figure 4: Stimulation triggers have an expression, a configuration ID, a list of channels, and a return channel.
Additional Notes:
- NeuroOmega has a bug where a channel cannot immediately switch from being a cathode to anode, or vice versa. To overcome this restriction, you can introduce a sham stimulation to a channel you are not using. This means you can set both the stimulation amplitudes to 0, and trigger it in-between the two stimulations. For example, if you did bipolar stimulation with Ch 1 and Ch 8 and wanted to switch which channel is the return channel. You could do the first stimulation to Ch 1 (with Ch 8 as the return channel), the sham stimulation, then the second stimulation to Ch 8 (with Ch 1 as the return channel).
- Channel Names are set by the NeuroOmega system. They can be found by following the steps resulting in Figure 1.
Stimulation Parameter GUI
To help out with creating the BCI2000 parameters, a GUI has been made which should make it easy to translate your stimulation specifications into BCI2000 parameter files. The GUI also visualizes the stimulation from three different perspectives, making it easy to tell if your parameters are really what you want. There is a NeuroStimulationParamsGUI user reference which will further tell you how to use this tool.
-
Figure 5: The Neuro Omega GUI which creates BCI2000 parameters from stimulation specifications.
Parameters
Source Tab
Signal Properties
- SourceCh - This parameter should be "auto", as it is determined by the size of the "RecordingChIDs" parameter.
- SampleBlockSize - Number of samples that are transmitted at a time.
- SamplingRate - Some channels on the Neuro Omega are recorded at different sampling rates, so this parameter is dictated by the configuration of the clinical system and must be manually entered accordingly. Information on how to check the sampling rate of a given channel is coming soon.
- ChannelNames - This should be set to auto, as the names of the channels will be automatically acquired from the Neuro Omega.
- SourceChOffset - Use 'auto', or needs to be the length of number of channels in RecordingChIDs.
- SourceChGain - Use 'auto', or needs to be the length of number of channels in RecordingChIDs.
- RecordingChIDs - This parameter should be a list of channel IDs corresponding to the channels you want to record from. Each of these channels must have the same sampling rate.
Hardware Addresses
- NeuroOmegaMAC - This parameter should be the MAC address of the Neuro Omega system.
- HostMAC - This parameter should be the MAC address of the BCI2000 recording computer.
Digital Ports
- EnablePortInputs - Enabling this parameter will record from both 16-bit D-Sub digital input connectors to the Port1 and Port2 states.
Device Information
- ChannelInfo - This is a read-only parameter that will be populated with channel information from the Neuro Omega (namely, the mapping between channel IDs (integers) and channel names).
Drive
- ReadDriveDepth - Enable if you would like to read the driver depth from device. Only enable if the driver is connected.
Application Tab
NeuroOmegaStimulation
- EnableNeuroOmegaStimulation - If disabled, no stimulation will be performed.
- StimulationConfigurations - Described above.
- StimulationTriggers - Described above.
States
NeuroOmegaTimeStamp
The 32-bit time at which the channels are read from the Neuro Omega.
NeuroOmegaStimulation
A boolean state showing whether or not the Neuro Omega is stimulating. It is important to note it only has one value per block, so it cannot be updated more frequently than the block size.
StimMarker1
A state that contains the number of the channel that is being stimulated. It will only be triggered when stimulation is occurring, otherwise it will be zero.
StimMarker1Time
The timestamp at which StimMarker1 occurs. For every StimMarker event, there will be a corresponding time stamp.
Port1 and Port2
These are 16-bit states recorded from the 16-bit D-Sub digital input 1 and input 2 connector on the Neuro Omega. The states record each pin as a 1 or 0, and stored in a certain bit. To decode this data, analyze as binary. For example, if Port1 was 8, this would mean only the 4th pin of Port1 was high and the rest were low.
Port1Time and Port2Time
The timestamps at which Port1 and Port2 are triggered.
Additional Information
TimeStamps
There are currently three timestamps logged: NeuroOmega timestamp, StimMarker timestamp, and the Ports 1 and 2 timestamps. The NeuroOmega timestamp is 32 bits, and corresponds to the time at which each block of data is read. Since both the StimMarkers and the Ports are read asynchronously to the signal source, they each have their own timestamps to accurately mark when the event occurred. These states are 16-bit, and increase twice as fast as the NeuroOmegaTimeStamp. To align them, shift every other peak up by 2^15.
See also
User Reference:Filters, Contributions:ADCs, User Reference:NeuroStimulationParamsGUI




