A genetic algorithm for automatic feature extraction from EEG data
- 1 Part 1: project profile
- 2 Part 2: project description
- 3 Part 3: project status
- 4 Part 4: documents and references
Part 1: project profile
A genetic algorithm for automatic feature extraction from EEG data and its application as an online classifier
Project short description
The identification of sight-related stimuli (typically some sort of flash) based upon EEG-analysis needs a specific software capable to find and extract a set of relevant stimuli-related features from those EEG. In particular we are looking for a stimulus called P300 (a positive deflection found, in an EEG, after more or less 300ms from the stimulation). The application we are further developing aims at finding those features that best describe everyone's partcular P300. Such an application, based upon an ad-hoc genetic algorithm, has already been developed at Politecnico with excellent results. The goals of this project are
- producing a c++ version of this software in order to maximize efficiency and portability
- producing a c++ class that uses the previously detected template to classify any epoch as target or non-target
- Start date: 2008/10/01
- End date: 2009/04/30
Students currently working on the project
Students who worked on the project in the past
Part 2: project description
State of the art
It is currently under development the online component of the identification section of the code and the class to which is delegated the computation of the P300 template.
Preliminary studies and sketches
After a deep analysis of the pre-existing source code, a c++ flavor of an analogous matlab version, we moved towards the current phase of further development and conversion of the application.
Design notes and guidelines
Our attention is focused on portability and efficiency; due to this fact we are currently developing the software in the form of a c++ class.
Experiments (description and results)
After we will have developed the application in its entireness, it's been planned to carry on some experiments related to fitness, genes and parameters tweaking.
Savane - BioSignal Analysis Toolkit (you must be a registered user to log in the repository of Savane)
Part 3: project status
- 14/03/2009 Searching for the weights vector in IClassifier object; searching documentation about IClassifier class
- 16/03/2009 Defined the skeleton of the class OnlineClassifier, core of the second part of the project. Defined the prototype of the method TemplateGenerator, with which it's possible to write to filesystem the representation of the template of user's P300.
- 17/03/2009 Modified repository; defined where the second module fits in the framework of BCI2000 project; evaluated a possible implementation of the method TemplateGenerator; GenericSignal taken into account as the default way to describe a template/epoch (instead of the ones used in the preexisting code)
- 19/03/2009 Written the pseudocode of the function TemplateGenerator. Read the documentation of class GenericSignal of BCI2000. Found the weight vector in IClassifier.
- 24/03/2009 Given an implementation of the function TemplateGenerator. First attempts to interface with BCI2000.
- 25/03/09-01/04/09 Tried and failed to compile BCI2000 code. Attempts to produce a static library of the same code failed anyway.
- 02/04/09-05/04/09 Resolved the matters related to BCI2000.
- 03/04/09 Implemented a version of the classify(...) method of OnlineClassifier class.
- 08/04/09 Begun changes to fitness function towards its final version
- 22/04/09 Implemented the function "kFoldingByLetter()" and the first version of the function "balance()"
- Throughout 05/09-08/09: Implemented the final version of OnLineClassifier, an object aimed at classifing a single epoch or a set of epochs (intended as a selection) given a BCIChromosme/IClassifier pair or a GenericSignal representing the template (respectively: OLIClassifClassifier, OLTemplateClassifier) . Also a new class for calculating the fitness has been developed (BCIFitnessLetter). These classes have been documented for doxygen. Corrections have been apported to large portions of the code to let it code compare the two methods of classifing epochs, better control the way the fitness is evaluated, the prediction is sorted out.