Page 1 of 1
P3Speller accuracy
Posted: 26 Jan 2012, 08:12
by paolobernardis
Hello,
I am using P3Speller application. I would like to calculate system performance (i.e. accuracy in %) and system communication speed (i.e. transfer bit rate in bit/min) of the analyzer (perf =(1-etot)x100) (Wolpaw et al., 2002). For this I need to know:
-numbers of correctly classified non-target data epochs per session;
- numbers of correctly classified target data epochs per session.
Where can I find this information for sessions already conducted?
Thank you for your help.
Re: P3Speller accuracy
Posted: 30 Jan 2012, 08:45
by mellinger
Hi,
as far as I know, there is no such display available in the P300Classifier program. However, you can do this analysis on your own, using components coming with BCI2000:
1) Run the P3 signal processing chain on the existing data, using the bci2000chain Matlab command from BCI2000/tools/Matlab. The chain needs to include the LinearClassifier:
TransmissionFilter|SpatialFilter|P3TemporalFilter|LinearClassifier.
2) The output will be a stream of data in a single channel, organized as follows: After the end of stimulus presentation, a series of stimulus codes will be present in "StimulusCodeRes". Whenever that is nonzero, the classification result of that stimulus (row or column) will be contained in the signal. There will be exactly one value for each possible stimulus code. In addition, the state "StimulusTypeRes" will be one for an attended stimulus, and zero otherwise.
3) To test for correct classification of individual stimuli, treat that data separately for row stimuli, and column stimuli. Rows have stimulus code 1..NumRows, and columns have NumRows+1..NumRows+NumCols. Correct row classification has occurred when the row with StimulusTypeRes=1 has the greatest value associated with it. Similarly, correct column classification implies that the column with StimulusTypeRes=1 has the greatest value of all columns associated with it.
Regards,
Juergen
Re: P3Speller accuracy
Posted: 31 Jan 2012, 05:30
by paolobernardis
Dear Juergen,
thank you very much for your reply. We tried to run the P3 Signal Processing chain, but we had some troubles. Following step by step your advice, you wrote:
'Run the P3 signal processing chain on the existing data, using the bci2000chain Matlab command from BCI2000/tools/Matlab'
but unfortunately we haven't the Matlab directory or file in the Tools one. Is it like that, maybe, because we have an old version of BCI2000 (we are currently working with the early 2011 version)?
However, we found a file called 'P3Signalprocessing.exe' in the 'Prog' directory, but trying to opening it (even opening at the same time the operator module, as BCI2000 asked us to do) the system sistematically fails, and stop to work.
Are we following the wrong way? The signal processing file shouldn't have the .exe extension?
Thank you again!
Re: P3Speller accuracy
Posted: 31 Jan 2012, 07:57
by mellinger
Dear Paolo,
the Matlab tools are relatively recent, that's why they are not present in your BCI2000 directory. You may download a newer version of BCI2000, and install it side by side with your older version (if you don't want to abolish that in favor of the newer version anyway).
The P3SignalProcessing.exe file is the executable of the signal processing module, which does not work properly unless run in conjunction with the operator module. For offline analysis, you need the executables listed above: TransmissionFilter.exe, SpatialFilter.exe, P3TemporalFilter.exe, LinearClassifier.exe. These must be combined with the programs bci_dat2stream.exe and bci_stream2mat.exe to form a single "DOS" command that produces a Matlab file from a BCI2000 dat file. When loading that file into Matlab, additional steps must be performed to separate signal from states. All this is a little bit cumbersome, and that's why bci2000chain.m exists to simplify the process. With bci2000chain, you only need to specify the filters you want to use, in the "pipe" form which I gave in my previous post.
Regards,
Juergen