AppConnector

Forum for software developers to discuss BCI2000 software development
Locked
marialaura
Posts: 8
Joined: 01 Apr 2008, 03:45

AppConnector

Post by marialaura » 26 Jan 2009, 16:59

Hi,

I'm trying to write an external application interface that uses BCI control signal. On wiki page I read

Messages consist of a name and a value that in the case of the control signal assumes the format (<channel>,<element>) -- followed by a float value in decimal ASCII representation. I wonder:

<channel> indicates the dimension of the cursor movement ?
i.e. 1D task channel is 1, in 2D task channel 1-x dimension, channel 2-y dimension)?

while <element>indicates the number of features (electrodes) that are used to control the movement in that dimension?
If I'm not wrong, then in the example given on wiki
Signal(1,2) 1e-8\n, means the control signal in the 1D is computed using the Ch2 and is value is 1-e8?

thanks,
Maria Laura

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

Post by mellinger » 28 Jan 2009, 12:17

Hi Maria Laura,

thanks for your question.

The meaning of control signal indices depends on the application module used. For the control signal in a typical cursor task, there are up to three channels holding a single element each, with channels 1, 2, and 3 corresponding to movement in x, y, and z direction. Unlike configuration parameters, the AppConnector uses zero-based indices, such that
Signal(1,0) 1e-2\n
would indicate a value of 1e-2 for the control signal representing movement in y direction.

Apart from the way it is used in the application module, the presence of output channels in the control signal depends on which channels are specified as output channels in the LinearClassifier's last column (note that channels are given in one-based notation in the LinearClassifier parameter, and in zero-based notation in the AppConnector protocol).

I modified the wiki page, so it should be more clear now.

Regards,
Juergen
Last edited by mellinger on 29 Jan 2009, 06:01, edited 1 time in total.

marialaura
Posts: 8
Joined: 01 Apr 2008, 03:45

Post by marialaura » 28 Jan 2009, 14:09

Great! Thanks for the explanation....but still a doubt come out when I run my program. From the prompt I can read...

Running 1
Recording 1
SourceTime 18189
....
...
...
Signal (1,0) -0.989963
Signal (2,0) 0.491524
Signal (3,0) 0

Why <element > is zero? :oops: [/img]. The classifier matrix is set as follow:
C3 9Hz 1 -0.5
Cz 12Hz 2 1
CP3 8Hz 3 1

Should this be translated in channel 1 holds a single element (C3), channel 2 holds a single element (Cz) and channel 3 holds a single element too (CP3)?!?!?!?

Again thanks in adavance.
Maria Laura

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

Post by mellinger » 29 Jan 2009, 05:57

Maria Laura,

you are right. In the AppConnector, indices are zero-based, this is different from parameter configuration, where indices are one-based.

In your case, there are 3 channels in the control signal, and these are numbered 1, 2 and 3 in the LinearClassifier parameter. Thus, the output of the AppConnector should read

Signal (0,0) -0.989963
Signal (1,0) 0.491524
Signal (2,0) 0

Thank you for pointing out the inconsistency. I'm correcting my previous post to avoid confusion.

Regards,
Juergen

Locked

Who is online

Users browsing this forum: No registered users and 0 guests