Page 1 of 1
Parameters Setting for OL P300 Classification (ModularEEG)
Posted: 04 Jun 2008, 06:56
by jackstar harry
Hi Gerwin,
I have a 2 channels Modular EEG connected with BCI2000. I try to use P300 speller of BCI2000 using only 1 channel (an electrode is placed on Cz, one remain electrode is placed on ear). The other 1 channel is connected to Modular EEG Vground (electrode configuration rule when using only 1 channel).
Shortly, I have tried to configure the BCI2000 follow the direction explained on Help. But I am failed to configure BCI2000 parameters to make P300 spelling working.
Would you please to give me suggestion for solving it?
Anyway, the parameters I've set (that I've changed from its default) are as follows:
SOURCE:
- SourceCh = 6
- SourceChOffset = 0 0 0 0 0 0
- SOurceChGain = 0.008 0.008 0.008 0.008 0.008 0.008
- TransmitChList = 1 2
FILTERING:
- SpatialFilter = 2 coloumns x 2 rows; set all as number 0.5
- Classifier = ??? (I don't understand about "input element (bin)"; but I've tried to set it: 4 coloumns x 2 rows and set number for "input element" as 250ms
Thank you
P3Speller
Posted: 04 Jun 2008, 11:07
by gschalk
Jackstar Harry,
What you need to do is to calibrate the BCI2000 system to the P300 response of each user. The best thing to do is to follow the tutorial outlined in
http://www.bci2000.org/wiki/index.php/U ... I_Tutorial
Since you only have one channel, the performance of your system will not be optimal, but you should be able to do some spelling with a larger number of flashes per character, e.g., 15 or so. I would put the one electrode at Pz and not Cz for that purpose.
Gerv
P3Spelling using one channel
Posted: 05 Jun 2008, 05:36
by jackstar harry
Gerv,
thanks a lot for the respond.
Actually, we've followed step by step directions as explained in tutorial.
1. We do the initial session
Here, after load SignalGenerator.prm we set (and made some changes) for amplifier parameters as follows:
- SourceCh = 6
- SourceChOffset = 0 0 0 0 0 0
- SourceChGain = 0.008 0.008 0.008 0.008 0.008 0.008
- SamplingRate = 256
- SampleBlockSize = 8
- TransmitChList = 1
Is the setting correct?
However, I think it's working and for the result we have 2 dat-file to be applied in offline analysis. From the generated plot, we've note that the larger values of r^2 appear in 100ms and 280ms.
Then, these values are value that should be set in Classifier matrix as input element (bin), aren't it?
2. Filltering --> SpatialFilter
Since we only use only 1 channel, is the matrix size become 1 coloumn x 1 row?
3. Filtering --> LinearClassifier
Since we have 2 values from ofline analysis above, so we set 4 coloumns x 2 rows matrix and then fill 100ms in 1st row-2nd col (bin) and 280ms in 2nd row-2nd col (bin). Is it correct?
Thank you
P3Speller ...
Posted: 05 Jun 2008, 07:23
by gschalk
Jackstar Harry,
From what you write, it seems as if your parameters may be correct (except that I am not sure why you are recording 6 channels if the device has only 1). Also, your understanding of the classifier is also correct.
What I would double check is to see whether the changes at 100 and 280ms actually go in the same direction. (You can get this information from the time course plots in the OfflineAnalyzer.) I would not be surprised if the change at 100 is negative and the change at 280ms is positive. In this case, if you give them the same weight, they will simply cancel each other out. If that is true, you would want to give the element at 100ms a negative weight (e.g., -1) and the change at 280 a positive weight (e.g., +1).
I hope this helps.
Gerv
Why I record 6 channels
Posted: 06 Jun 2008, 07:00
by jackstar harry
Gerv,
I have to set ShourceCh=6 that imply to record 6 channels. Because if i set lower than 6 these messages appear:
6/6/2008 5:49:57 PM - Parameter "Source->SourceCh": Value is 1, exceeds lower range (6).
6/6/2008 5:49:57 PM - Parameter "Source->SourceCh": Value is 1, exceeds lower range (6).
6/6/2008 5:49:57 PM - ModularEEGADC::Preflight: A necessary condition is violated. Please make sure that the following is true: Parameter( "SourceCh" ) == 6
Is it a normal case or may be there are some wrong parameters that I've set?
Thank you
SourceCh
Posted: 06 Jun 2008, 07:50
by gschalk
Jackstar Harry,
It seems as if there is an explicit check in the code to see whether you are acquiring 6 channels. This may be the way the OpenEEG devices send their data (even if less are acquired).
Gerv