need help in P300 Speller

Forum for discussion on different user applications
Locked
faisal-awan
Posts: 17
Joined: 28 Nov 2010, 23:18

need help in P300 Speller

Post by faisal-awan » 29 Nov 2010, 01:45

Hello

Dear Professor

We are making own P300 Speller in our lab ..according to requirements . For that

I need the source code (C++) in which P300 Speller detect the P300 signal after an event and where targeted rows and Columns were selected ?


Thanks

mellinger
Posts: 1210
Joined: 12 Feb 2003, 11:06

Post by mellinger » 29 Nov 2010, 06:25

Hello,

the code that handles P300 signals is not located in a single place. Rather, this functionality is factored out into parts.

The P300 signal processing does averaging of stimulus responses, and weighting of electrodes and time points with the linear classifier weights. The result of this is a single number per stimulus (row or column), which is transferred to the application module. On receiving scores for all stimuli, the application module then executes P3SpellerTask::OnClassResult() which is located in src/core/Application/P3Speller/P3SpellerTask.cpp, line 547. This function, in turn, calls AssociationMap::ClassifyTargets(), located in src/shared/modules/application/stimuli/Association.cpp, line 205, which computes scores for individual letters from row/column scores. Finally, the function TargetClassification::MostLikelyTarget() in src/shared/modules/application/stimuli/Association.cpp, line 181, determines which target to choose based on the per-target scores computed by the previous function.

This procedure, complicated as it may seem, has the advantage that it works for the P3Speller module as well as for the simpler stimulus/response scenario that applies to the StimulusPresentation module, and for the P3Speller module it works even it targets are arbitrarily grouped into highlighted sets, not just rows and columns.

Regards,
Juergen

faisal-awan
Posts: 17
Joined: 28 Nov 2010, 23:18

Post by faisal-awan » 30 Nov 2010, 21:56

dear Professor

Thanks for the reply ....

I need explanation in below mentioned areas:

1 )

In your reply , what do u mean by Scores ? Did u mean flashing of rows/Column. If yes than how averaging (P300 Signal Processing ) function produces single stimulus (code ) ??? Please give more explanation

2)

also more explanation needs for Target Classification ()


I am bit confuse in this ...How code is Produce, how the target classification give results on the basis of scores .........


Thanks alot


Regards

mellinger
Posts: 1210
Joined: 12 Feb 2003, 11:06

Post by mellinger » 01 Dec 2010, 08:52

1) The P3SignalProcessing does averaging of wave forms for stimuli sharing a single stimulus code. These stimuli are flashing of rows or columns. For each averaged wave form, channels and time points are weighted with the weights specified in the Classifier parameter. The result is a single number per stimulus code, which is considered a "score" for the hypothesis that the respective stimulus code was the attended stimulus, i.e. that the respective row or column was the desired stimulus.

2) In order to determine which letter was chosen from the matrix, the row/column scores need to be converted into per-letter scores. Here, letters are called "targets" because they are targets of a selection. AssociationMap::ClassifyTargets() computes per-letter scores by summing up row/column scores for rows and columns where each letter appears. Finally, TargetClassification::MostLikelyTarget() returns the target (letter) with the highest score.

Regards,
Juergen

faisal-awan
Posts: 17
Joined: 28 Nov 2010, 23:18

Post by faisal-awan » 06 Dec 2010, 20:59

Hi..... Thanks for the reply

As what i am trying to do is to :

1) make the P300 speller (6*6 matrix) which is done .
2) how the given code BCI2000(Source for P300 Speller) could help me to make , which row/column is detected/ selected by user intense and i want to identify that point in software (in my case Brain vision) by assigning some marker on that specific period.

Please help me in this problem.







Regards

mellinger
Posts: 1210
Joined: 12 Feb 2003, 11:06

Post by mellinger » 07 Dec 2010, 10:04

If I understand correctly, you want to write the detected row/column into the data file when the selection is made. This is what BCI2000 already does. There are two states (markers) called "SelectedRow" and "SelectedColumn" which are set to the respective row or column number when the selection is made.

--Juergen

faisal-awan
Posts: 17
Joined: 28 Nov 2010, 23:18

Post by faisal-awan » 08 Dec 2010, 09:47

Thanks for the information .


Kindly let me know , how i could synchoronize my P300 matrix build in C++ with any EEG software . any hardware code available ?


Thanks in advance


Regards

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

question

Post by gschalk » 08 Dec 2010, 10:27

Dear Faisal,

Please be more precise in your questions. Otherwise, we will not be able to help you.

Which P300 matrix system? Within BCI2000? "Any EEG software:" does this mean EEG amplifier? EEG recording software?

Based on this or other similar questions, I have no idea what you are asking.

Gerv

faisal-awan
Posts: 17
Joined: 28 Nov 2010, 23:18

Post by faisal-awan » 08 Dec 2010, 18:30

I want to ask you that , i have P300 matrix 6*6 paradigm develop in (C++), and i want to synchorise it with my EEg recording software.

SO that when user's intense detect the specific row/col in P300 matrix , some marker / identifier displays on same time in EEG recording system.



Thanks



Regards

Locked

Who is online

Users browsing this forum: No registered users and 29 guests