Page 1 of 1

MARIO P300 Analysis

Posted: 13 Apr 2010, 05:56
by timo.veldt
Jeej, I've finished my module! :D So now I have a module that can record data files with markers for two different types of stimuli.

But as I would like to make a BCI with this module, something of a classifier would be in order. I've had some experience with MARIO (as documented on the Wiki), so I would like to use this if possible (however my mind is not quite made up, alternatives are welcome).

I've started with MARIO (In Matlab:

Code: Select all

>> mario p300
) by just recording a file without a participant, so it's just EEG noise with markers. MARIO couldn't work with this file, because certain states were unavailable or did not contain the right values (see Code block below). When looking on the Wiki there doesn't appear to be documentation on what a data file should contain and in what format.

Could somebody help me out with this or give me a pointer to the right webpage where I can read it myself?

Code: Select all

??? Reference to non-existent field 'Flashing'.

Error in ==> bci_p300 at 3
VectorStateLength = length (States.Flashing);

Error in ==> bci_protocol at 10
        Protocol.States = bci_p300(States,TypeOfDesign,0);

Error in ==> bci_main_p300>EditMontage_pushbut_Callback at 262
BCI2k.Protocol = bci_protocol(BCI2k.Files.States, 'P300',0);

Error in ==> bci_main_p300>LoadDatFiles_Callback at 170
EditMontage_pushbut_Callback(hObject, eventdata, handles);

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> bci_main_p300 at 42
    gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback

Posted: 13 Apr 2010, 08:22
by mellinger
Mario has not been maintained for quite some time, so it still expects state (event marker) and parameter names from BCI2000 version 1.
Currently, there are two data analysis tools being maintained with BCI2000: Offline Analysis and P300Classifier. For event related potentials (e.g., P300), you may use either tool, with P300Classifier giving you the advantage of computing optimal classifier weights using the SWLDA method, whereas Offline Analysis requires manual classifier configuration. For the analysis of sensorimotor rhythm data, you may use the Offline Analysis tool.

Alternatively, if you choose to use Mario, I can support you in fixing the error messages you encounter. The current error message appears because the "Flashing" state does no longer exist in P300 data. Rather than for

Code: Select all

States.Flashing~=0
state, a data analysis procedure should now test for

Code: Select all

States.StimulusCode~=0
--Juergen

Posted: 16 Apr 2010, 05:21
by timo.veldt
Thank you for the advice! Since Mario is not being supported anymore and there is more information on the other two analysis tools, I am now working with P300Classifier.

I've modified both my module and the classifier so that the files I present it can be read. However when generating weights I get the an error saying that no usable weights could be formed for my dataset.
The dataset I use at this moment contains only noise with respect to the EEG (markers etc are correct). When using this file in the Offline Analysis tool, my highest R-squared value is 0.0005, so indeed no useful information exists in the file.

My question is whether or not this error I mentioned earlier could be produced by this lack of useful information or because something else is wrong?

P300Classifier

Posted: 16 Apr 2010, 06:46
by gschalk
The message that no usable weights are found appears, because the P300Classifier cannot identify features that separate the targets from the non-targets. Since you seem to be using noise, this can be expected.

If you record real EEG, I would first analyze the data using Offline Analysis. Once you can see a difference between the targets and non-targets that at least somehow resembles those in the Wiki, you can go on to use the P300Classifier.

Gerv