SSSignalProcessing

Forum for discussion on different signal processing algorithms
Locked
Brendan
Posts: 12
Joined: 18 Aug 2003, 18:42

SSSignalProcessing

Post by Brendan » 07 Jun 2004, 21:38

Hello,

I am interested in using BCI2000 with the steady state visual evoked potential (or response), aka the SSVEP or SSVER. I believe this will require the development of a new signal processing module, SSSignalProcessing, hereafter abbreviated SSSP.

Like P3 Signal Processing, SSSP must be able to time lock the EEG to flash onset, and do realtime averaging. Like AR Signal Processing, SSSP must be able to look at spectra.

There are basically two ways to evoke the SSVEP. You can either present flashes on a monitor, or on an external device like a strobe light or LED apparatus. This module should ideally be able to handle both. To work with monitor flashes, the module must be able to figure out exactly when each flash begins, which is a hassle since Windows introduces a nondeterministic latency. To work with external devices, BCI2000 needs to utilize an external trigger so that it knows when each flash begins.

BCI2000 will also have to create ERPs reflecting the response to each flash, and average these together. Like many other BCIs, the more trials are averaged together, the more clearly you can find what interests you in the EEG. Once these are averaged, BCI2000 will find the spectra and use this information for control. This could be done in a fashion similar to what is commonly done with RJB or other mu systems.

Here is an example. Let's say you have 2 LEDs, a red one at 7 Hz and a green one at 17 Hz. These should produce oscillations in the brain at those frequencies. Users should be able to choose to focus on one light or the other, thus producing an increase in the frequency of the attended LED and a decrease in the ignored LED. Thus you might make a BCI for answering questions by telling the user to focus on the red LED for "yes" and the green LED for "no." By playing with the appropriate parameters in SS Signal Processing (such as the MEM settings, spatial filter if any, and MUD settings), you could make the cursor move up based on 7 Hz activity and down with 17 Hz activity. If you put "yes" on the top of the screen and "no" on the bottom, you have an SSVEP BCI. Again, this is similar to an RJB task. There are 2 differences we care about for SSSP: time locking to an external event and averaging. This should be a straightforward hack, well within the abilities of the GSU BrainLab!

I plan to post further on this board to update the community on this development. If anyone else is interested in using BCI2000 with SSVEPs, please post here or contact me. We'd love to collaborate.
-Brendan

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

SSVEP Signal Processing ...

Post by gschalk » 08 Jun 2004, 04:07

Control using SSVEPs is most simply done in the frequency domain. Thus, for this purpose, the current ARSignalProcessing is sufficient.

If alternatively you are interested in learning more about SSVEPs, e.g., determining their exact waveform in response to different stimulation parameters, you could easily tweak P3SignalProcessing. For example, you could record SSVEP trigger channels as additional analog channels. You could then have a small filter in P3SignalProcessing, placed before any processing is done, that processes these signals and that creates the "Flashing" and "StimulusCode" states similar to what is usually done by any of the BCI2000 P300 UserApplications. In consequence, this would be a very minor addition to the system that could exploit the large code base that is already available.

Gerv

Brendan
Posts: 12
Joined: 18 Aug 2003, 18:42

mod to ARSignalProcessing

Post by Brendan » 15 Jun 2004, 20:17

Hi,

I think that ARSignalPRocessing would need to be modified, as it is currently not configured to take an external trigger. The module must not only look at spectra, but also first create epochs based on the onset of each LED flash. It has to do this in realtime, which is not currently possible. This is where some modification is needed. Please correct me if I am mistaken.

I spoke with Dennis about the plan briefly today. Our plan is to first get BCI2000 to take a trigger pulse from a joystick. This is because BCI2000 can already take a trigger from a joystick via a USB port. So, we will make BCI2000 think that each flash is a joystick button press. I can then epoch the data and look at it offline to make sure we have a spike that the LED flash frequency. If so, we will then proceed to modifying the signal processing so this can work in realtime. Perhaps we would start with a modified RJB, in which cursor movement is controlled not by mu but by selective attention to one of 2 LEDs.

We will keep you updated and appreciate any suggestions.
-Brendan

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

SSVEPs ...

Post by gschalk » 16 Jun 2004, 02:35

Hi,

You do not need to epoch data for the scenario you describe. For example, you could realize a SSVEP-driven RJB with BCI2000 as-is. You would simply configure ARSigProc to use the flash frequency of one LED. Thus, the control signal would be larger, and thus move the cursor down, when you look at the LED as opposed to when you don't. You can get fancier and configure MUD such that, for example, you subtract one frequency from another. This way, you could have two different flashing frequencies and control the cursor with attention on one vs. the other.

In summary, unless you are interested in averaging SSVEP waveforms, you do not need to use external triggers.

Gerv

prcrkpee
Posts: 4
Joined: 29 Sep 2005, 15:24

HELLO PLEASE HELP ME

Post by prcrkpee » 01 Oct 2005, 09:52

IAM NEW TO USE BCI 2000. IAM NOT ABLE TO OPERATE IT PROPERLY .I WANT TO WORK IT IN MY PC WITHOUT DATA AQUISTION MODULE. I WANTED TO WORK IT FOR READY MADE DATA. WILL THAT BE POSSIBLE .PLEASE HELP ME.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

Re: New to BCI2000 ...

Post by gschalk » 03 Oct 2005, 08:48

Hi,

Are you mainly interested in analyzing EEG signals? If so, then a general-purpose analysis package is probably better suited than BCI2000. There is an excellent analysis plugin for Matlab, called EEGlab, that provides many analyses in an easy-to-use fashion.

The major strength of BCI2000 is the capacity to do real-time experiments.

I hope this helps.

Gerv

prcrkpee
Posts: 4
Joined: 29 Sep 2005, 15:24

hello

Post by prcrkpee » 03 Oct 2005, 09:26

i need your help .i have developed a simulated eeg program . the output is a mixture of alpha, beta and theta waves. iam not able to distinguish between them. if to do manually we will count the number of cycles in one sec and depending on that we will know which wave it is . but how to do it in program. i wanted to find out that .please tell me how to find out the frequency of a particular signal at different time instants .please try to do it in matlab. PLEASE HELP ME .IS THERE ANY OPTION FOR ACCESSING LOCAL DATA FROM FILE BY BCI2000 FOR OFFLINE ANALYSIS OR ONLY ONLINE ANALYSIS.

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

Re: Analysis

Post by gschalk » 03 Oct 2005, 09:36

Hi,

As I mentioned, the major strength of BCI2000 is online analysis. If you know C++, you could write yourself a new Source module that reads data from a file rather from a data acquisition device. For various reasons, we have not done that ourselves.

Again, for what you are trying to do, Matlab is probably the better choice.

In either case, you will need some basic understanding of signal processing, such as frequency analysis, etc.

Gerwin

Locked

Who is online

Users browsing this forum: No registered users and 4 guests