diff --git a/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierProcessor.dox-part b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierProcessor.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..05e4fb2d11f71f7b67c27e93fd3c88ebe2bf94d9 --- /dev/null +++ b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierProcessor.dox-part @@ -0,0 +1,101 @@ +/** + * \page BoxAlgorithm_ClassifierProcessor Classifier processor +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Description| +The <em>Classifier Processor</em> box is a generic box for classification purpose. It works +in cunjunction with the \ref Doc_BoxAlgorithm_ClassifierTrainer box. +This box' role is to expose a generic interface to the rest of the BCI pipelines. The tasks +specific to a given classifier are forwarded to one of the registered \c OVTK_TypeId_ClassifierAlgorithm +algorithms. The behavior is simple, at initialization phase, the classification algorithm is initialized +and its configuration is loaded from the configuration file. Then each time this box receives a new +feature vector, it is forwarded to the classification algorithm that classifies it. The box gets the algorithm +status and the actual class value and translates this information to its output. The class is sent in the form of +a stimulation and the algorithm status is sent in the form a streamed matrix. The stimulation can be generically +interpreted by the rest of the pipeline but it is important to understand that each classification algorithm is +free to report whatever it wants in its "status matrix". Consequently, the use of this output stream will be +depedendent on the choosen classification algorithm. For example, the LDA classifier sends the hyperplane distance +value as its status. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Inputs| + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Input1| +This input should be connected to the feature vectors to classify. Each time a new feature vector arrives, +a classification process will be triggered. Consequently, a classification stimulation will be sent on the +first output of this box. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Input1| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Outputs| + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Output1| +This output will contain the classification stimulations. Each time a new feature vector arrives to this box, +a new classification process is triggered, resuling int the generation of the corresponding class stimulation. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Output1| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Output2| +This output reflects the classification algorithm status in the form of a matrix of value. The content of this +matrix is dependent of the choosen classification algorithm. For example, the LDA classifier sends the hyperplane +distance as its status. Given that this value is dependent of the choosen algorithm, you should be very carefull +with the use of this output stream. Unexepected behavior may (will) occur when changing the classifier. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Output2| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Settings| + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Settings| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting1| +The first setting of this box is the classifier to use. You have to choose the same classifier as the one you used +during the training phase with the \ref Doc_BoxAlgorithm_ClassifierTrainer box. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting2| +This setting points to the configuration file of the algorithm. This configuration file is generally generated from the +\ref Doc_BoxAlgorithm_ClassifierTrainer box. Its syntax depends on the selected algorithm. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting3| +For classification algorithms that support rejection, you can choose a stimulation that reflects the feature vectore +could not be classified. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting3| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting4| +This is the stimulation to send when the classifier algorithm detects a class-1 feature vector + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting4| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Setting5| + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Setting5| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Examples| +This box is used in BCI pipelines in order to classify cerebral activity states. For a detailed scenario using this +box and its associated \ref Doc_BoxAlgorithm_ClassifierTrainer, please see the <b>motor imagary</b> +BCI scenario in the sample scenarios. + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierProcessor_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_ClassifierProcessor_Miscellaneous| + */ diff --git a/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierTrainer.dox-part b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierTrainer.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..92cb8377f7307c18006e2598a080b66bdcb68b49 --- /dev/null +++ b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_ClassifierTrainer.dox-part @@ -0,0 +1,145 @@ +/** + * \page BoxAlgorithm_ClassifierTrainer Classifier trainer +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Description| +The <em>Classifier Trainer</em> box is a generic box for classification training purpose. It works +in cunjunction with the \ref Doc_BoxAlgorithm_ClassifierProcessor box. +This box' role is to expose a generic interface to the rest of the BCI pipelines. The tasks +specific to a given classifier are forwarded to one of the registered \c OVTK_TypeId_ClassifierAlgorithm +algorithms. The behavior is simple, the box collects a number of feature vectors. Those feature vectors +are labelled depending on the input they arrive on. When a specific stimulation arrives, a training +process is triggered. This process can take some time so this box should be used offline. Depending on the +settings you enter, you will be able to perform a k-fold test in order to train a better classifier. When +this training stimulation is received, the box requests the selected classification algorithm to generate +a configuration file that will be useable online by the \ref Doc_BoxAlgorithm_ClassifierProcessor box. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Inputs| +This box can have a variable number of inputs. If you need more than two classes, feel free to add more +inputs and to use a classifier algorithm able to classify more than two classes. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Input1| +The first input receives a stimulation stream. Only one stimulation of this stream is important, the one +that triggers the training process. When this stimulation is received, all the feature vectors are labelled +and sent to the classification algorithm. The training is triggered and executed. Then the classification +algorithm generates a configuration file that will be used online by the \ref Doc_BoxAlgorithm_ClassifierProcessor box. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Input1| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Input2| +This input receives the feature vector for the first class. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Input2| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Input3| +This input receives the feature vector for the second class. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Input3| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Settings| +The number of settings of this box can vary depending on the classification algorithm you choose. Such algorithm +could have specific input OpenViBE::Kernel::IParameter objects (see \ref OpenViBE::Kernel::IAlgorithmProxy for details). If +the type of those parameters is simple enough to be handled in the GUI, then additional settings will be added to this box. +For this to be applied, you will have to close & reopen the settings configuration dialog after the actual classification +algorithm is choosen. Supported parameter types are : Integers, Floats, Enumeations, Booleans. The documentation for those +parameters can not be done in this page because it is impossible to know at this time what classifier thus what hyper +parameters you will have available. This will depend on the classification algorihtms that are be implemented in OpenViBE. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Settings| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting1| +The first setting of this box is the classifier to use. You can choose any registered \c OVTK_TypeId_ClassifierAlgorithm +algorithm you want. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting2| +This setting points to the configuration file where to save the result of the training for later online use. This +configuration file is used by the \ref Doc_BoxAlgorithm_ClassifierProcesor box. Its syntax +depends on the selected algorithm. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting3| +This is the stimualation to consider to trigger the training process. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting3| + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Setting4| +If you want to perform a k-fold test, you should enter something else than 0 or 1 here. A k-fold test generally allows +better classification rates. The idea is to divide the set of feature vectors in a number of partitions. The classification +algorithm is trained on some of the partitions and its accuracy is tested on the others. The classifier with the best results +is selected as the trained classifier. See the miscellaneous section for details on how the k-fold test is done in this box. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Setting4| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Examples| +This box is used in BCI pipelines in order to classify cerebral activity states. For a detailed scenario using this +box and its associated \ref Doc_BoxAlgorithm_ClassifierProcessor, please see the <b>motor imagary</b> +BCI scenario in the sample scenarios. + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_ClassifierTrainer_Miscellaneous| +In this section, we will detail how the k-fold test is implemented in this box. For the k-fold test to be performed, you +have to choose more than 1 partition in the related settings. Suppose you chose \c n partitions. Then when trigger stimulation +is received, the feature vector set is splitted in \c n consecutive segments. The classification algorithm is trained on +\c n-1 of those segments and tested on the last one. This is performed for each segment. Then the classifier with the +best accuracy is choosen. + +For example, suppose you have 5 parititions of feature vectors (\c FVs) +\verbatim ++------+ +------+ +------+ +------+ +------+ +| FVs1 | | FVs2 | | FVs3 | | FVs4 | | FVs5 | ++------+ +------+ +------+ +------+ +------+ +\endverbatim +For the first training, a feature vector set is built form the \c FVs2, \c FVs3, \c FVs4, \c FVs5. The classifier algorithm +is trained on this feature vector set. Then the classifier is tested on the \c FVs1 : +\verbatim ++------+ +---------------------------------+ +| FVs1 | | Training Feature Vector Set 1 | ++------+ +---------------------------------+ +\endverbatim +Then, a feature vector set is built form the \c FVs1, \c FVs3, \c FVs4, \c FVs5. The classifier algorithm +is trained on this feature vector set. Then the classifier is tested on the \c FVs2 : +\verbatim ++------+ +------+ +------------------------+ +|Traini| | FVs2 | |ng Feature Vector Set 2 | ++------+ +------+ +------------------------+ +\endverbatim +The same process if performed on all the partitions : +\verbatim ++---------------+ +------+ +---------------+ +|Training Featur| | FVs3 | |e Vector Set 3 | ++---------------+ +------+ +---------------+ ++------------------------+ +------+ +------+ +|Training Feature Vector | | FVs4 | |Set 4 | ++------------------------+ +------+ +------+ ++---------------------------------+ +------+ +| Training Feature Vector Set 5 | | FVs5 | ++---------------------------------+ +------+ +\endverbatim + +Important things to consider : +- The more partitions you have, the more feature vector you have in your training sets... and the less examples you'll have to +test on. This means that the result of the test will probably be less reliable. But you will be able to choose the best classifier +among a more consequent list. +- The less partitions you have, the less feature vector you have in your training sets... and the more examples you'll have to +test on. This means that the online use of the trained classifier is more likely to be consistent with the trained classifier accuracy. + +In conclusion, be carefull when choosing this k-fold test setting. Typical value range from 4 partitions (train on 75% of the feature vectors and +test on 25% - 4 times) to 10 partitions (train on 90% of the feature vectors and test on 10% - 10 times). + * |OVP_DocEnd_BoxAlgorithm_ClassifierTrainer_Miscellaneous| + */ diff --git a/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_VotingClassifier.dox-part b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_VotingClassifier.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..01e6bc8389a87533450a34b12f5f9aa062904bc8 --- /dev/null +++ b/openvibe-plugins/classification/trunc/src/doc/Doc_BoxAlgorithm_VotingClassifier.dox-part @@ -0,0 +1,111 @@ +/** + * \page BoxAlgorithm_VotingClassifier Voting Classifier +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Description| +The purpose of this simple classifier is to choose between multiple two class classifiers which +one mostly fits a condition. For example imagine \c n states. Each of those states can be either active +or inactive. Additionnaly, imagine you want only one active state at a time. Then you can have \c n +two-class classifiers telling for each state if it is active or not, and a following voting classifier +that chooses which of those states is the <em>most active</em>. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Inputs| +You can add as many inputs as you need depending on the number of preceeding states. + +The inputs of this classifier can be changed to either streamed matrix of stimulations. + +In the case you choose stimulations, each active stimulation gives a point +to the preceeding state. An inactive stimulation gives no point. After a number of repetitions, the +state whith the best score is chossen. + +In the case you choose streamed matrix, the matrix must have only one +element. This element is used as a score coefficient (in place of the simple 1-0 of the previous +case). After a number of repetitions, the state whith the best score is chossen. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Input1| +Input streaam for the first state. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Input1| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Input2| +Input streaam for the second state. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Input2| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Outputs| + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Output1| +This output sends a new stimulation as soon as the classifier received the correct number of votes +from the preceeding states. The output stimulation is based on the 5th setting of the box. First +state being selected would send exactly this stimulation. Second state would send this +stimulation + 1 etc. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Output1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Settings| + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Settings| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting1| +This setting tells the box how many votes it needs before choosing. If the box uses stimulations, +it must receive either the target or non target stimulation to consider a state has been voted. +Additionaly, the box waits each state to be voted the correct number of times to take a decision. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting2| +If the box uses stimulations, this settings tells what stimulation reflects that the state is active. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting3| +If the box uses stimulations, this settings tells what stimulation reflects that the state is inactive. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting3| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting4| +In case no choice can be made (for example, there are more than one state with the highest score), the +voting classifier can choose to reject the vote and send a specific stimulation for this. This is more +likely to happen when the box works on stimulation better than streamed matrix. You can force this box +to choose using the 6th setting. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting4| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting5| +This stimulation is used as a basis for the stimulations to send when a state is selected. First +state being selected would send exactly this stimulation. Second state would send this +stimulation + 1 etc. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting5| + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Setting6| +This setting can force the box to choose a state even if more than one state have the highest score. +In such case, there won't be any rejection. The way the box decides between the ex-aequo candidates +is undefined. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Setting6| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Examples| +This box is used in the <em>P300 speller</em> and the <em>P300 magic card</em> BCIs. Please see those +scenarios in the sample <em>openvibe-scenarios</em>. + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_VotingClassifier_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_VotingClassifier_Miscellaneous| + */ diff --git a/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_CSVFileWriter.dox-part b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_CSVFileWriter.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..3e7d704846b5495951a25c1d1c0b3cbbdc6065a8 --- /dev/null +++ b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_CSVFileWriter.dox-part @@ -0,0 +1,106 @@ +/** + * \page BoxAlgorithm_CSVFileWriter CSV File Writer +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Description| +This box allows to output some of the OpenViBE streams in a text file that is +easy to read by the machine and easy to read by the human. CSV files are text files +with different values separated by a special character such as a colon, a semicolon +or a tabulation. This basic syntax makes them very easy to read for both machine and +human. The purpose of this box is to quicly export some data to other softwares. + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Inputs| + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Input1| +This is input is used to know what data to dump in the considered file. The type of +this input can be modified by the user and the format of the output will be adapted +depending on this type. Supported inputs are : Signal, Spectrum and Stimulations. +Format specific to each of these stream types is detailed in section +\ref Doc_BoxAlgorithm_CSVFileWriter_Miscellaneous. + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Input1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Settings| + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Settings| + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Setting1| +This setting contains the file where to store the data. + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Setting2| +This setting contains the special character to use as a separation for the different +fields. Typical examples are colon, semi colon and tabulations. + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Setting3| +Due to the fact that text files can grow very quickly, it is possible to compress the +file using gzip format. If you want to use compression, just tick this setting. +<b>Note: this is not implemented at the moment</b>. + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Setting3| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Examples| + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_CSVFileWriter_Miscellaneous| +In this section, we detail the typical outputs that you will find in the output +file depending on the type of the input connector. + +For the Signal stream, you will have something like this : +\verbatim +Time (s), Channel 1, Channel 2, ..., Channel n +Time of mesure 1, Mesure 1 of channel 1, Mesure 1 of channel 2, ..., Mesure 1 of channel n +Time of mesure 2, Mesure 2 of channel 1, Mesure 2 of channel 2, ..., Mesure 2 of channel n +... +Time of mesure t, Mesure t of channel 1, Mesure t of channel 2, ..., Mesure t of channel n +\endverbatim + +For the Spectrum stream, you will have something like this : +\verbatim +Time (s), Channel 1, Channel 2, ..., Channel n +Time of mesure 1, Freq band 1 of mes 1 of chan 1, Freq band 1 of mes 1 of chan 2, ..., Freq band 1 of mes 1 of chan n +Time of mesure 1, Freq band 2 of mes 1 of chan 1, Freq band 2 of mes 1 of chan 2, ..., Freq band 2 of mes 1 of chan n +... +Time of mesure 1, Freq band f of mes 1 of chan 1, Freq band f of mes 1 of chan 2, ..., Freq band f of mes 1 of chan n +Time of mesure 2, Freq band 1 of mes 2 of chan 1, Freq band 1 of mes 2 of chan 2, ..., Freq band 1 of mes 2 of chan n +Time of mesure 2, Freq band 2 of mes 2 of chan 1, Freq band 2 of mes 2 of chan 2, ..., Freq band 2 of mes 2 of chan n +... +Time of mesure 2, Freq band f of mes 2 of chan 1, Freq band f of mes 2 of chan 2, ..., Freq band f of mes 2 of chan n +... +... +... +Time of mesure t, Freq band 1 of mes t of chan 1, Freq band 1 of mes t of chan 2, ..., Freq band 1 of mes t of chan n +Time of mesure t, Freq band 2 of mes t of chan 1, Freq band 2 of mes t of chan 2, ..., Freq band 2 of mes t of chan n +... +Time of mesure t, Freq band f of mes t of chan 1, Freq band f of mes t of chan 2, ..., Freq band f of mes t of chan n +\endverbatim + +For the Stimulation stream, you will have something like this : +\verbatim +Time (s), Identifier, Duration +Time of stim 1, Idenfitifer of stim 1, Duration of stim 1 +Time of stim 2, Idenfitifer of stim 2, Duration of stim 2 +... +Time of stim n, Idenfitifer of stim n, Duration of stim n +\endverbatim + * |OVP_DocEnd_BoxAlgorithm_CSVFileWriter_Miscellaneous| + */ diff --git a/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamReader.dox-part b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamReader.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..a4eab9b74031adb4799f88ccc47eda921d79cf93 --- /dev/null +++ b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamReader.dox-part @@ -0,0 +1,56 @@ +/** + * \page BoxAlgorithm_GenericStreamReader Generic stream reader +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Description| +This box is able to read any file saved with the \ref Doc_BoxAlgorithm_GenericStreamWriter box. +It is interesting to notice that such file can contain a variable number of streams. Therefore, +the user is able to add and modify any output he wants on the box. The box does not supposes +anything on the streams contained in the file during authoring in the designer. The streams of +the file are mapped to created output at runtime in an "intelligent way" depending on there types. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Description| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Outputs| +This box can have as many output you want depending on the content of the file. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Output1| +This is the default output. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Output1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Settings| + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Settings| + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Setting1| +This setting points to the file to read. This file may contain a variable number of multiplexed +streams. Those streams will be mapped to corresponding outputs at runtime. The mapping is done in +an "intelligent way" because it reorders the streams contained in the file to match the types of +the outputs. If a stream from the file does not find a matching output, a warning is launched. +If an output does not find a matching stream from the file, a warning is also launched. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Setting1| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Examples| + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamReader_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_GenericStreamReader_Miscellaneous| + */ diff --git a/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamWriter.dox-part b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamWriter.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..80cc97a6467bb1ad6d780ae7839ef5d604249f78 --- /dev/null +++ b/openvibe-plugins/file-io/trunc/src/doc/Doc_BoxAlgorithm_GenericStreamWriter.dox-part @@ -0,0 +1,60 @@ +/** + * \page BoxAlgorithm_GenericStreamWriter Generic stream writer +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Description| +This box is able to dump any OpenViBE stream into a binary file. In the cacse where this box +would have multiple inputs, the streams would be multiplexed in the file. Such file can +be read back with the \ref Doc_BoxAlgorithm_GenericStreamReader + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Inputs| +You can add any input you want to this box depending on the number of streams you want to dump. +In the cacse where this box would have multiple inputs, the streams would be multiplexed in the file. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Input1| +The default input. + +<b>Note: it important to correctly configure the type of the inputs</b>. That information will be +used by the \ref Doc_BoxAlgorithm_GenericStreamReader to map the contained streams to its outputs. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Input1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Settings| + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Settings| + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Setting1| +This setting points to the file to write the streams to. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Setting2| +Thanks to this setting, you can use compression on each input stream. This means that the basic +structure of the file remains uncompressed but that each stream inside this structure is compressed. +<b>Note: this is not implemented at the moment</b>. + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Setting2| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Examples| + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_GenericStreamWriter_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_GenericStreamWriter_Miscellaneous| + */ diff --git a/openvibe-plugins/signal-processing/trunc/src/doc/Doc_BoxAlgorithm_SignalDecimation.dox-part b/openvibe-plugins/signal-processing/trunc/src/doc/Doc_BoxAlgorithm_SignalDecimation.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..e9f2e4f1a7c95af1c085dd8159387072b94cf094 --- /dev/null +++ b/openvibe-plugins/signal-processing/trunc/src/doc/Doc_BoxAlgorithm_SignalDecimation.dox-part @@ -0,0 +1,78 @@ +/** + * \page BoxAlgorithm_SignalDecimation Signal Decimation +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Description| +This box reduces the sampling frequency of an input signal <em>the easy way</em>. +It is different of the existing \ref Doc_BoxAlgorithm_DownsamplingGPL box in the sense +that there is no pre-filtering and that you can not choose an arbitrary sampling +frequency. Thus you will have to pre-filter the input signal with the +\ref Doc_BoxAlgorithm_TemporalFilterGPL box for example. The new sampling frequency +will be an exact divider of the source signal sampling frequency. For example, if your +input sampling frequency is 1000Hz, you are allowed to divide that frequency by 2 or 4 +but you can't divide it by 3. Additionally, the number of samples per chunk must +also be a multiple of the divider coefficient, resulting in the possible need of +an appropriate \ref Doc_BoxAlgorithm_TimeBasedEpoching before decimation. See section +\ref Doc_BoxAlgorithm_SignalDecimation_Examples for a detailed example of what can +be done. + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Inputs| + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Input1| +The input signal. + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Input1| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Outputs| + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Output1| +The decimated signal. + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Output1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Settings| + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Settings| + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Setting1| +The sampling rate divider. At each chunk reception, 1 sample among n of the input signal will be +sent to the output signal. + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Setting1| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Examples| +Suppose you have a signal with a sampling rate of 1000Hz streamed with 32 samples per buffer +that you want to downsample to 100Hz. Downsampling this signal to 100Hz will require that you +low-pass filter the signal to at most 50Hz to avoid bad results. Additionnaly, +This box won't be able to take one sample on ten with a stream containing 32 samples per buffer. +So after the low-pass filtering, you will have to change the epoch sizes using a the +\ref Doc_BoxAlgorithm_TimeBasedEpoching box and configuring it e.g. for epochs of 0.1s every +0.1s for example. Thus you will have 100 samples per buffer and this box will be able to select +ten samples over a hundred at each chunk reception. + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_SignalDecimation_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_SignalDecimation_Miscellaneous| + */ diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation.dox-part b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..2a42bc7c7de11b27753c04904f855391396fd529 --- /dev/null +++ b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation.dox-part @@ -0,0 +1,149 @@ +/** + * \page BoxAlgorithm_P300MagicCardVisualisation P300 Magic Card Visualisation +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Description| +This box can be used with a P300 based paradigm to have a simple game. A collection of cards are presented to +the user. He chooses one card among all and focuses on this card. The application shows each card sequentially. +After a number of repetitions, the card that the user was focusing on is automatically found. + +\image html Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png "The P300 Magic Card Visualisation showing all the cards" +\image html Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png "The P300 Magic Card Visualisation flashing one of the cards" + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Inputs| +This box has three inputs. The most important one is the first one, sequencing the which card to show to the user. +The two other inputs are optional and used for defining the target and the selected card. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Input1| +This input is used for sequencing the card display. It uses specific stimulations to know which +card should be shown (see \ref Doc_BoxAlgorithm_P300MagicCardVisualisation_Setting_5) +The card display is switched off thanks to the \c OVTK_StimulationId_VisualStimulationStop stimultion +(this is automatically triggered by the \ref Doc_BoxAlgorithm_P300SpellerStimulator box). + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Input1| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Input2| +This input is used in order to define the target card the user should focus on. See +\ref Doc_BoxAlgorithm_P300MagicCardVisualisation_Setting_5 to know what stimulation should be used. +The target card will be highlighted with a specific color so the user quickly notices it. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Input2| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Input3| +This input is used in order to define the selected card the user should focus on. See +\ref Doc_BoxAlgorithm_P300MagicCardVisualisation_Setting_5 to know what stimulation should be used. +The selected card will be highlighted with a specific color so the user quickly notices it. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Input3| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Outputs| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Output1| +This output is used to translate incoming stimulations depending if they are target or not. +The actual target is determined with the second input. As soon as the target is known, each flash +can be considered as a target flash or not. This can be later use for selecting evoked response +potentials against other responses. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Output1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Settings| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Settings| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting1| +This is the glade interface to use for the GUI. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting2| +This color defines the default background. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting3| +This color defines the background color for target card. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting3| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting4| +This color defines the background color for selected card. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting4| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting5| +This stimulation is used as a basis for the flashes. For example, flashing the first card consists in sending this +exact stimulation code to the first input. Flashing the second card needs this stimulation code + 1 and so on. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting5| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting6| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting6| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting7| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting7| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting8| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting8| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting9| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting9| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting10| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting10| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting11| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting11| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting12| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting12| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting13| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting13| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting14| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting14| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting15| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting15| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting16| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting16| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting17| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting17| + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Setting18| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Setting18| +__________________________________________________________________ + +Online visualisation settings +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_OnlineVisualizationSettings| +There are no online visualisation settings for this box. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_OnlineVisualizationSettings| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Examples| +This box is used in the <em>P300 magic card</em> BCI. Please see this +scenario in the sample <em>openvibe-scenarios</em>. + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300MagicCardVisualisation_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_P300MagicCardVisualisation_Miscellaneous| + */ diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f275d62db89050ff75d9845d257bffac4df4f0 Binary files /dev/null and b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot1.png differ diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..ec97ba30dfa4bf3fba61849a0356150d3a5071e0 Binary files /dev/null and b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300MagicCardVisualisation_Snapshot2.png differ diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation.dox-part b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..1a99b0c8a785e3060abb657add6ba5e94bba86aa --- /dev/null +++ b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation.dox-part @@ -0,0 +1,174 @@ +/** + * \page BoxAlgorithm_P300SpellerVisualisation P300 Speller Visualisation +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Description| +This box can be used with the \ref Doc_BoxAlgorithm_P300SpellerStimulator box in order to +establish a P300 speller application. The visualisation consists in a matrix of 6 lines and +columns containing 26 characters and 10 numbers. The lines and columns can be flashed sequencially +resulting in an evoked potential in the user's brain activity. This evoked potential can be +detected and used to find which line and which column the user was focused on, thus resulting +in the ability to write text. + +This box relies on a glade interface that contains the actual letters & numbers. This glade +interface can be freely adpated if you need for example more than 6 lines or 6 columns, or +if you need something else than letters & words (e.g. words). + +\image html Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png "The P300 Speller Visualisation in action" + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Inputs| +This box has four inputs. The most important one is the first one, sequencing the flashes. +The three other inputs are optional and used for defining the target and the selected line/columns. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input1| +This input is used for sequencing the flashes. It uses specific stimulations to know which +line/column should be flashed (see \ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_2 +and \ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_3). The flash is switched off thanks +to the \c OVTK_StimulationId_VisualStimulationStop stimultion (this is automatically triggered +by the \ref Doc_BoxAlgorithm_P300SpellerStimulator box). + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input1| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input2| +This input is used in order to define the target row/column the user should focus on. See +\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_2 and +\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_3 to know what stimulation should be used. +The target row/column will be highlighted with a specific color/size so the user quickly notices +the letter to focus on. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input2| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input3| +This input is used in order to define the selected row. See +\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_2 and +\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting_3 to know what stimulation should be used. +The target row/column will be highlighted with a specific color/size so the user quickly notices +the letter that has been selected. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input3| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Input4| +This input is used in order to define the selected column. See +\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting2 and +\ref Doc_BoxAlgorithm_P300SpellerVisualisation_Setting3 to know what stimulation should be used. +The target row/column will be highlighted with a specific color/size so the user quickly notices +the letter that has been selected. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Input4| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Outputs| + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Output1| +This output is used to translate incoming flash stimulations depending if they are target or not. +The actual target is determined with the second input. As soon as the target is known, each flash +can be considered as a target flash or not. This can be later use for selecting evoked response +potentials against other responses. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Output1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Settings| + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Settings| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting1| +This is the glade interface to use for the GUI. This file can be adapted depending on your needs, for example +if you want to replace the letters / numbers by e.g. words or symbols, or if you want to add more lines / columns. +However, the structure of the GUI is important (wee need some specific hierarchies to allow flash/selection coloring +to work). So please, respect this structure. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting2| +This stimulation is used as a basis for the row flashes. For example, flashing the first row consists in sending this +exact stimulation code to the first input. Flashing the second row needs this stimulation code + 1 and so on. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting3| +This stimulation is used as a basis for the column flashes. For example, flashing the first column consists in sending this +exact stimulation code to the first input. Flashing the second column needs this stimulation code + 1 and so on. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting3| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting4| +This color defines the flash background. It is not common in P300 spellers to have a changing background but this +probabaly enhances the response. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting4| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting5| +This color defines the flash foreground (the colors of the letters). + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting5| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting6| +This setting defines the size of the letter when the flash occurs. Consider this value as a scale factor with no specific unit. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting6| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting7| +This color defines the background when there is no flash. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting7| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting8| +This color defines the foreground when there is no flash. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting8| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting9| +This setting defines the size of the letter when there is no flash. Consider this value as a scale factor with no specific unit. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting9| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting10| +This color defines the background of the target letter. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting10| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting11| +This color defines the foreground of the target letter. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting11| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting12| +This setting defines the size of the target letter. Consider this value as a scale factor with no specific unit. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting12| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting13| +This color defines the background of the selected letter. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting13| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting14| +This color defines the foreground of the selected letter. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting14| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Setting15| +This setting defines the size of the selected letter. Consider this value as a scale factor with no specific unit. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Setting15| +__________________________________________________________________ + +Online visualisation settings +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_OnlineVisualizationSettings| +There are no online visualisation settings for this box. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_OnlineVisualizationSettings| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Examples| +This box is used in the <em>P300 speller</em> BCI. Please see this +scenario in the sample <em>openvibe-scenarios</em>. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerVisualisation_Miscellaneous| + * |OVP_DocEnd_BoxAlgorithm_P300SpellerVisualisation_Miscellaneous| + */ diff --git a/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f0d443f94255835666e6ebe6ebb5096208f582 Binary files /dev/null and b/openvibe-plugins/simple-visualisation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerVisualisation_Snapshot.png differ diff --git a/openvibe-plugins/stimulation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerStimulator.dox-part b/openvibe-plugins/stimulation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerStimulator.dox-part new file mode 100644 index 0000000000000000000000000000000000000000..8b06a464d5096bd8f5f47bb38fd3af89d5feb41f --- /dev/null +++ b/openvibe-plugins/stimulation/trunc/src/doc/Doc_BoxAlgorithm_P300SpellerStimulator.dox-part @@ -0,0 +1,180 @@ +/** + * \page BoxAlgorithm_P300SpellerStimulator P300 Speller Stimulator +__________________________________________________________________ + +Detailed description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Description| +This box is used to generate a 2D P300 stimulation timeline. Depending on its parameters, +it generates all the necessary flagging stimulations for an P300 experiment, such as when +a flash starts, when it stops, when the repetitions are finished etc. + +Imagine a P300 speller application. Such application is based on a matrix of letters / numbers. +The lines and columns of this matrix are flashed consecutively a number of time. Then a decision +can be made and the user can relax. Then same process restarts and so one. Such experiment can +be driven by this box. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Description| +__________________________________________________________________ + +Inputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Inputs| + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Inputs| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Input1| +This input is used to start the generation of the pipeline. As soon as the start stimulation +arrives here, the generation process starts. (see setting 1) + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Input1| +__________________________________________________________________ + +Outputs description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Outputs| + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Outputs| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Output1| +This output contains the stimulations used for P300 based experiments. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Output1| +__________________________________________________________________ + +Settings description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Settings| + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Settings| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting1| +This first setting tells which stimulation to use to start the generation process. This stimulation +can be received from a keyboard for example (see \ref Doc_BoxAlgorithm_KeyboardStimulator). + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting1| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting2| +This setting tells what stimulation base to use when flashing rows of the matrix. When row one should +be flashed, this exact stimulation will be sent. When row two should be flashed, this stimulation + 1 +will be sent, and so on. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting2| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting3| +This setting tells what stimulation base to use when flashing columns of the matrix. When column one should +be flashed, this exact stimulation will be sent. When column two should be flashed, this stimulation + 1 +will be sent, and so on. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting3| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting4| +This setting tells how many row the matrix has. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting4| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting5| +This setting tells how many columns the matrix has. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting5| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting6| +This setting tells how many times each row / column should be flashed in a trial. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting6| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting7| +This setting tells how many trials should be generated. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting7| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting8| +This setting tells how long a flash longs. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting8| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting9| +This setting tells how long this stimulator should wait after a flash is finished before sending a new flash. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting9| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting10| +This setting tells how much rest is left to the user between the repetitions. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting10| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting11| +This setting tells how much rest is left to the user between the trials. +Please note that the end of a trial is also the end of a repetition. So the rest duration includes both times. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting11| + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Setting12| +This setting is not used for now. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Setting12| +__________________________________________________________________ + +Examples description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Examples| +This box is used in the <em>P300 speller</em> and the <em>P300 magic card</em> BCIs. Please see those +scenarios in the sample <em>openvibe-scenarios</em>. + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Examples| +__________________________________________________________________ + +Miscellaneous description +__________________________________________________________________ + + * |OVP_DocBegin_BoxAlgorithm_P300SpellerStimulator_Miscellaneous| +<b>Note:</b> Even if this box has been created for flashing matrices, it could be used for flashing 1D things. However, in order +to have more efficient results on matrices, this box flashes one line, then one column, then one line etc. It never +flashes a line and then another line. Thus in the 1D case, you have to know that the same behavior will occur, resulting +on the flashing of the low-part of your 1D set, then high part, then low part etc... + +The sequence generated by this box is typically something like this : +\verbatim +OVTK_StimulationId_ExperimentStart + + OVTK_StimulationId_RestStart + OVTK_StimulationId_RestStop + + OVTK_StimulationId_TrialStart + OVTK_StimulationId_SegmentStart + + OVTK_StimulationId_Label_0B + OVTK_StimulationId_VisualStimulationStart + OVTK_StimulationId_VisualStimulationStop + + OVTK_StimulationId_Label_03 + OVTK_StimulationId_VisualStimulationStart + OVTK_StimulationId_VisualStimulationStop + + ... + ... + ... + + OVTK_StimulationId_Label_04 + OVTK_StimulationId_VisualStimulationStart + OVTK_StimulationId_VisualStimulationStop + + OVTK_StimulationId_SegmentStop + OVTK_StimulationId_SegmentStart + + ... + ... + ... + + OVTK_StimulationId_SegmentStop + + ... + ... + ... + + OVTK_StimulationId_TrialStop + + OVTK_StimulationId_RestStart + OVTK_StimulationId_RestStop + + OVTK_StimulationId_TrialStart + + ... + ... + ... + + OVTK_StimulationId_TrialStop + + ... + ... + ... + +OVTK_StimulationId_ExperimentStop\endverbatim + * |OVP_DocEnd_BoxAlgorithm_P300SpellerStimulator_Miscellaneous| + */