Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Forum for discussion on different user applications
Post Reply
killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 29 Aug 2015, 22:42

Hello.

I'm Kyungae Yoon who works in BCI area.
Recently, I have considered Hex-o-Speller with BCI2000, but current BCI2000 doesn't have modules for Hex-o-Speller application.

I think many works have done with Hex-o-Speller BCI, so I guess Hex-o-Speller implementation already exists in somewhere.

Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?
It would be very helpful for me to save time on research progress.

I look forward to your supports.
My e-mail is kayoon7613@gmail.com or kyungaeyoon@gist.ac.kr.

Thank you.

Best,
Kyungae Yoon

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 31 Aug 2015, 17:33

Kyungae Yoon,

if you are interested I can offer you to provide you with guidance on how to design and implement a BCI2000 application module that presents the Hex-o-Speller interface in BCI2000. However this requires that you have knowledge and expertise in C++ programming, and that you are willing to implement the application either on your own or with the help of somebody at your institutions, fully document it on the BCI2000 wiki and contribute the source code to the BCI2000 project. Please let me know if this agreeable for you.

Regards, Peter

PS: I am removing the duplicate post in the software development forum, as your request should be discussed here.

killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 31 Aug 2015, 18:05

Hello, peter.

I agree with you.
If you help me implement Hex-o-Speller interface with BCI 2000, it would be great.
And it is pleasure contributing my work to the BCI2000 wiki and BCI2000 project.

Please give me some guidance which module or function I should handle to implemente Hex-o-Speller interface.

Thank you.

Best,
Kyungae

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 31 Aug 2015, 20:53

Kyungae,

all right, the first thing that I need you to do is to specify the behavior of the application. You can see example of the Berlin's group implementation of the Hex-o-Speller [1,2] and see whether this is what you envision or not. Another aspect is, how general purpose do you want to make this. For example this does not have to be hexagonal and could just be an arbitrary number that is equally spaced on a circle. Post your specifications here and I will provide you with some input on how to best implement this.

Regards, Peter

[1] http://www.dcs.gla.ac.uk/~rod/publicati ... rMue06.pdf
[2] http://www.tobi-project.org/communicati ... pplication

killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 01 Sep 2015, 06:38

Hello, peter.

I post my specification for Hex-o-Speller implementation with BCI 2000.
Please see the below and attached files.
----------------------------------------------------------------------------------------------------------------------------------------------------
1. Auditory and visual stimuli combined-speller

1.1. Visual stimulus is presented by 6 different panels. Each panel contains 6 different characters or symbols. Each visual stimulus is presented in the center of the screen. Auditory stimulus is presented by 6 different sounds. Each sound corresponds to the position of each panel.

1.2. Visual and auditory stimuli are presented simultaneously, while those two concurrent stimuli are presented to represent same information. Accordingly, targets in the visual sequence always appear at the same time as targets in the auditory sequence.

1.3. Visual and auditory stimuli are presented in pseudo-random sequence. In addition, the order of stimuli is randomized within each repetition with the constraint that the same stimulus could not appear with less than two different stimuli in between.

1.4. The duration of each stimulus is 130ms and the stimulus onset asynchrony (SOA) is kept at 200ms.

2. Two periods selection procedure

2.1. The selection of one symbol is coded by two selection steps of one out of 6 targets each.
 - In 1st selection step, a group of symbols (e.g. ‘ABCDEF’) is selected, while in the 2nd selection step one symbol of
that group is selected. The procedure is performed subsequently.
 - For the serial selection, each group contains 6 characters or symbols.
 - Before each selection period, a countdown is launched. It includes the intensification of the visual and auditory
target stimuli for three times. This is followed by the pre-flashing of the last 3 digits (3, 2, 1) synchronized with the
subsequent stimulus sequence. (The countdown part does not only provide a cue for the targets but also helps the
participant to get used to the flashing frequency.)

3. 36-symbol alphabet with space symbol ‘-’
----------------------------------------------------------------------------------------------------------------------------------------------------
I look forward to your kind comments.
Thank you.

Best,
Kyungae
Attachments
Region-speller with BCI 2000_paradigm_1.jpg
Region-speller with BCI 2000_paradigm_2.jpg

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 01 Sep 2015, 11:02

Kyungae,

so I correctly understand this, you would like to have a ERP-based speller, in which the elements of an n-times-m sized sized matrix are flashing in a block-randomized fashion.

This is very similar to what the BCI2000 P300Speller already can do, except for the the way the cue is presented and the fact that only one matrix element at a time is flashed.

You have two options:
a) modify the existing P300Speller application and live with some cosmetic and functional differences to yours specifications.
b) create a new BCI2000 application that is tailored exactly to your need, while keeping the State variables and parameters the same, so that it will still work the supporting online signal processing module (P3SignalProcessing) and offline classifier application (P300Classifer).

As you want to use this online for spelling, and P300Speller application comes with a established online signal processing and offline classifier application, preserving the compatibility to these supporting modules is very important.

Let me know which avenue you would like to pursue.

Regards, Peter

killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 01 Sep 2015, 20:33

Hello, peter.

Many thanks for clear understanding.

I would prefer 2nd option.
I would like to make a new application module which is compatible with a established online signal processing and offline classifier module in BCI 2000.

Please tell me how I can implement the new application.
I look forwart to your reply.

Thank you.

Best,
Kyungae

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 02 Sep 2015, 22:46

Kyungae,

very well. I will create an empty application and provide you with general instructions within the next few days. You will have read/write access to the specific project on the BCI2000 SVN trunk. For this I need to know your BCI2000 username if it is not the same as on the BBS (killangi).

Regards, Peter

killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 03 Sep 2015, 03:55

Hello, Peter.

Thank you for your support.

My BCI2000 wiki ID is kayoon.

Can I receive your instruction within this week?
The speller implementation is a little urgent to progress my research.

I look forward to your kind reply.

Best,
Kyungae.

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 03 Sep 2015, 14:14

Kyungae,

this should be possible. I will get back to you shortly.

Regards, Peter

killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 03 Sep 2015, 19:54

Hello, Peter.

I will wait for you.
Thank you.

Best,
Kyungae

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 04 Sep 2015, 20:52

Kyungae,

here is the first step. I have created a new application in "/src/contrib/Application/ERPSpeller". This is forked from the original P3Speller application, however configured to already behave pretty close to what you eventually want while staying compatible with the signal processing and classification that support the P3Speller application. I chose the name ERPSpeller, as I find this to be more general purpose.

Please download Microsoft Visual Studio 2012 Express and install all updates up to SP4. Also install TortoiseSVN and CMake with the bin folder of CMake in the path. Use TortoiseSVN to download the the BCI2000 SVN trunk [1].

Edit the "\src\contrib\Application\CMakeList.txt" file and add the following line to the end.

Code: Select all

ADD_SUBDIRECTORY( ERPSpeller )
Start "/build/Make VS2012 Project Files.cmd" and select the Express edition (unless you have the professional one), and to build all the contributions. Open the resulting "BCI2000.sln" and compile it.

Next, start the "\src\contrib\Application\ERPSpeller\dev\ERPSpeller_free_spell.bat" and hit start. This should now show the P3Speller with row/column intensification, however with nested matrices, similar to what you want.

Next, start the "\src\contrib\Application\ERPSpeller\dev\ERPSpeller_copy_spell.bat" and hit start. This should now show the P3Speller with row/column intensification, however without the nested matrices. This will be for training the classifier. The signal source is setup such that it modulates the signal according to the StimulusType.

Next, start the "\tools\P300Classifier\P300Classifier.exe" and load the data written during the copy spelling and click at "Generate Feature Weights". This should now be able to classify the data 100% correct, as it picks up the modulation written in the BCI2000 signal source. This will be useful to test your setup.

Next, you will familiarize yourself with the processing in the ERPSpeller Application. You will need to accomplish two things:

(1) Implement the TextGroupStimulus.cpp to present groups of letters.
You will need to allocate the RectangularShape variable and arrange the shapes and characters with the correct z-level, i.e., which object is presented above the other.

(2) Implement the single cell intensification mode.
Add another parameter that defines row/column or single cell mode and implement the logic for the latter.

In all your modifications, please keep the functionality general purpose. For example, keep the number of rows and columns flexible.

Please perform all these steps and report back with questions. Based on your questions we discuss the details of your implementation.

Please note that your BCI2000 SVN username has write access o the ERPSpeller folder. When you have achieved a milestone in your project that you have properly tested, please commit the source code to the BCI2000 SVN trunk. I will also create a BCI2000 wiki entry for your contribution, so you can fully document the parameters and function of the ERPSpeller.

Regards, Peter

[1] http://www.bci2000.org/svn/trunk

killangi
Posts: 7
Joined: 10 Mar 2015, 08:30

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by killangi » 08 Sep 2015, 20:33

Hello, Peter.

Thank you for your kind reply.

Unexpectedly, I have another issue due to the change of research progress.
So I would like to postpone ERP-based Hex-o-Speller implementation until middle of November.
I might try to progress this implementation on spare time for this period.

However, I will progress this implementation after completion of current work.
I hope we restart discussion since middle of November.

Thank you.

Best,
Kyungae

pbrunner
Posts: 344
Joined: 17 Sep 2010, 12:43

Re: Could you help me get Hex-o-Speller implementation modules with BCI 2000 ?

Post by pbrunner » 09 Sep 2015, 10:20

Kyungae,

no problem. You should be able to finish the remaining changes within an estimated 2-3 days. Let me know once you have questions.

Regards, Peter

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest