init
@@ -0,0 +1,14 @@
|
||||
Introduction
|
||||
============
|
||||
|
||||
The |Brand| |AuthTool| is an authoring tool dedicated to creating and executing |Brand| scenarios. It is targeted at a broad range of users, including:
|
||||
|
||||
- **researchers** and students of the neuroscience and BCI community
|
||||
- **neurophysiology experts** who need a tool to realize signal-processing and monitoring of EEG activity
|
||||
- **clinicians** looking for a tool to conduct neurofeedback experiments
|
||||
|
||||
It relies on a graphical user interface to provide signal processing tools in an intuitive way, and doesn’t require any programming skills.
|
||||
|
||||
Each of these tools comes as a plugin, which communicates with the application via a generic interface hiding implementation details. As a result, it is easy for a programmer to extend the range of tools provided with the platform. Users may arrange any number of these boxes in a very flexible fashion, considering there is virtually no limit as to the number of boxes that may be included in a processing **scenario**.
|
||||
|
||||
Once a scenario is created, it may be run from Studio, which provides a toolbar for playing, pausing and stepping through a scenario. A number of box algorithms are available for direct **visualization** of results, from simple 2D displays such as Spectral Analysis and Continuous Oscilloscope to 3D paradigms such as 3D Topography. The layout of these displays may be customized as desired at scenario editing time using the **window manager** module of Studio.
|
||||
@@ -0,0 +1,221 @@
|
||||
Interface Overview
|
||||
==================
|
||||
|
||||
.. figure:: images/studio-interface-annotated.png
|
||||
:alt: |Brand| |AuthTool| Interface
|
||||
:align: center
|
||||
|
||||
|Brand| |AuthTool| Interface
|
||||
|
||||
|
||||
The following sections are an overview of the main features of |AuthTool| tool, and make for a quick and easy introduction to its usage. Here are the topics covered in this overview:
|
||||
|
||||
- Top Level **Menu Bar**
|
||||
- **Toolbar**, which provides immediate access to the most common actions (Scenario File Edition, Window Manager, Active Logs Level, Add Comment Box, Edit Scenario Information, Scenario Control, …)
|
||||
- **Available Boxes** tree view
|
||||
|
||||
- **Scenario Settings**
|
||||
- **Scenario I/O Controls**
|
||||
|
||||
- **Status Bar**, which provides performance information when a scenario is being run
|
||||
- **Message Console** which prints Info, Warning or Error messages
|
||||
- **Scenario Authoring** window, where boxes may be arranged together in order to fulfill the task at hand.
|
||||
- |BulletEngCtrlPanel|
|
||||
|
||||
Menu Bar
|
||||
--------
|
||||
|
||||
|
||||
Options available from the menu bar are presently restricted to actions involving handling and exiting the application. Scenarios can be saved to MXS (Mensia XML Scenario) or to XML files (as does OpenViBE). Several scenarios may be edited simultaneously, and the active scenario may be changed by clicking onto the corresponding tab at the top of the scenario editor window. Here is a list of options from the menu bar and their shortcuts if available:
|
||||
|
||||
The File menu handles standard scenario operations such as creation, saving and closing. Note that the application won't quit as long as at least one scenario is running.
|
||||
|
||||
.. figure:: images/menubar-file.png
|
||||
:alt: File Menu
|
||||
:align: right
|
||||
|
||||
|
||||
- New – **Ctrl+n**: open a new scenario in a new tab:
|
||||
- Open – **Ctrl+o**: open a file selection dialog to select an existing scenario file
|
||||
- Recent Scenarios: access recently closed scenarios
|
||||
- Save – **Ctrl+s**: save current scenario
|
||||
- Save As: save the current scenario in another file
|
||||
- Close - **Ctrl+w**: close current scenario tab
|
||||
- Quit – **Alt+F4**: quit |AuthTool|
|
||||
|
||||
|
||||
The Edit menu allows the user to cut/copy/paste selections (in a scenario or across scenarios). These options can also be accessed when right-clicking on a box. User actions are saved during scenario editing and can be retrieved through undo-redo.
|
||||
|
||||
.. figure:: images/menubar-edit.png
|
||||
:alt: Edit Menu
|
||||
:align: right
|
||||
|
||||
|
||||
- Find – **Ctrl+f**: direct to filter box to make a search in the list of boxes
|
||||
- Undo – **Ctrl+z**: cancel the last edition operation
|
||||
- Redo – **Ctrl+y**: redo the operation you just cancelled
|
||||
- Cut – **Ctrl+x**: cut current selection
|
||||
- Copy – **Ctrl+c**: copy current selection
|
||||
- Paste – **Ctrl+v**: paste current selection
|
||||
- Delete – **Del**: delete current selection
|
||||
- Preferences: this item displays the Configuration Manager dialog. It contains a list of all configuration tokens and their values. This list is read only. To know more about the Configuration Manager, refer to The Configuration Manager documentation paragraph.
|
||||
|
||||
The Help menu allows the user to open some various utilities applications.
|
||||
|
||||
.. figure:: images/menubar-help.png
|
||||
:alt: Help Menu
|
||||
:align: right
|
||||
|
||||
- About this scenario – allow to add a scenario description see: Adding metadata
|
||||
- About |Brand| – display Credits for |AuthTool|
|
||||
- Browse documentation – Open box documentation
|
||||
- Register License – Open tool to add a license
|
||||
- Report issue – Open the support website, see: Support
|
||||
- What's new in version 3.0.x.x of |AuthTool|
|
||||
|
||||
Toolbar
|
||||
-------
|
||||
|
||||
.. figure:: images/toolbar-annotated.png
|
||||
:alt: Toolbar
|
||||
:align: center
|
||||
|
||||
NeuorRT |AuthTool| Toolbar
|
||||
|
||||
The first section of the tools bar offers direct access to the scenario handling options that you can find in the menu *File*.
|
||||
|
||||
Next section contains the Undo and Redo buttons.
|
||||
|
||||
After these you have controls for various functionalities of |Brand| |AuthTool|:
|
||||
|
||||
- :ref:`window-manager`
|
||||
- :ref:`log-levels`
|
||||
- :ref:`scenario-comments`
|
||||
- :ref:`scenario-information`
|
||||
- :ref:`scenario-controls`
|
||||
- |BulletEngCtrlPanel|
|
||||
|
||||
|
||||
.. _window-manager:
|
||||
|
||||
Window Manager
|
||||
--------------
|
||||
|
||||
.. image:: images/icon-window-manager.png
|
||||
|
||||
The **Window Manager** button is a toggle button, allowing for displaying and hiding the **window manager**. This tool is displayed in a popup window when the button is pressed. It takes care of arranging visualization boxes in a layout. Such boxes (if any in the current scenario) initially appear under the 'Unaffected display plugins' node of the tree view in the upper left corner. A window containing one tab is also created by default and displayed on the right, as below:
|
||||
|
||||
.. figure:: images/window-manager.png
|
||||
:alt: Window Manager
|
||||
:align: center
|
||||
|
||||
Window manager popup dialog for a scenario with 4 visualization boxes, by default
|
||||
|
||||
Users may create any number of windows containing any number of tabs, and then drag and drop visualization boxes onto such tabs in a tree-like structure. If the user chooses to not use the window manager all visualization boxes will be given their own window, displayed when the scenario is being played. For a more in-depth review of the window manager usage, see the Window Manager Tutorial.
|
||||
|
||||
.. figure:: images/window-manager-4-panes.png
|
||||
:alt: Window Manager with 4 panes
|
||||
:align: center
|
||||
|
||||
Window manager popup dialog for a scenario with 4 organized visualization boxes
|
||||
|
||||
.. _log-levels:
|
||||
|
||||
Log Levels
|
||||
----------
|
||||
|
||||
.. image:: images/icon-log-levels.png
|
||||
|
||||
The second button displays the log levels dialog ( ). It may be used to configure which log messages should be displayed in the console. It contains 8 levels as shown in the following figure:
|
||||
|
||||
.. figure:: images/log-levels.png
|
||||
:alt: Log Levels
|
||||
:align: center
|
||||
|
||||
Log Levels Dialog
|
||||
|
||||
*Warnings* and *Errors* should always be selected. *Information* displays useful messages from signal processing boxes. *Trace* can be used to check step-by-step the processing in the boxes and the kernel. *Benchmark* and *Debug* are very verbose and should not be used with |AuthTool| console (only in log files).
|
||||
|
||||
.. _scenario-comments:
|
||||
|
||||
Scenario Comments
|
||||
-----------------
|
||||
|
||||
.. image:: images/icon-add-comment.png
|
||||
|
||||
This button adds a dedicated comment box to the scenario. These boxes have of course no input and outputs. Double click on them to edit the comment they display. The syntax of the comments uses `pango style <http://www.gtk.org/api/2.6/pango/PangoMarkupFormat.html>`__, the style buttons can help you format your comment.
|
||||
|
||||
.. figure:: images/scenario-comment.png
|
||||
:alt: Scenario Comment
|
||||
:align: center
|
||||
|
||||
Comment, as it appears in a scenario
|
||||
|
||||
.. figure:: images/scenario-comment-editor.png
|
||||
:alt: Scenario Comment Editor
|
||||
:align: center
|
||||
|
||||
Comment Editor Dialog
|
||||
|
||||
.. _scenario-information:
|
||||
|
||||
Scenario Description
|
||||
--------------------
|
||||
|
||||
.. image:: images/icon-scenario-information.png
|
||||
|
||||
This buttons allows editing of some information that will be saved with the scenario (name, authors, date, description, etc.).
|
||||
|
||||
|
||||
.. figure:: images/scenario-information.png
|
||||
:alt: Scenario Description Edit Dialog
|
||||
:align: center
|
||||
|
||||
Scenario Description
|
||||
|
||||
.. _scenario-controls:
|
||||
|
||||
Scenario Controls
|
||||
-----------------
|
||||
|
||||
.. image:: images/icon-scenario-controls.png
|
||||
|
||||
Scenario controls work like a media player would.
|
||||
|
||||
- Stop – **F5**: go back to scenario edition mode
|
||||
- Step – **F6**: play scenario one step of simulation at a time
|
||||
- Play/Pause – **F7**: play scenario in real time or pause it if it is already running
|
||||
- Fast Forward – **F8**: play scenario as fast as possible
|
||||
|
||||
Once a scenario is being played, it is not possible to modify it. Press *Stop* to go back in edition mode. Shortcuts from F5 to F8 can be used only if the focus is on |AuthTool| main window (not on visualization windows for example).
|
||||
|
||||
Finally, the toolbar contains a time counter which displays the simulation time as a scenario is being run. It is reset to 0 as a scenario is stopped.
|
||||
|
||||
Box Algorithms Tree View
|
||||
------------------------
|
||||
|
||||
|
||||
The right-hand part of |AuthTool| window displays a list of existing box algorithms, which are the building blocks of |Brand| scenarios.
|
||||
|
||||
Under the *Box algorithms* tab lies a tree view listing available box algorithms, along with a short description of their respective roles. Box algorithms are the smallest granular elements that may be manipulated by a |AuthTool| user. They act as black boxes which can be connected together by their inputs and outputs. In order to facilitate their selection, they are grouped into categories, which make up the top level nodes of the tree view. Some categories are related to signal processing, others to scenario serialization or visualization purposes. The default tree view shows only stable and fully supported boxes.
|
||||
|
||||
The status of a box varies with the context, and is reflected by the color of the font used in the tree view. The box name and description will use a cyan font if the box is deprecated, and a light grey font if it is unstable. To know more about box status, see section Box status.
|
||||
|
||||
Status Bar
|
||||
----------
|
||||
|
||||
The status bar that lies at the bottom of the window provides performance information. When a scenario is being run, |Brand| keeps track of the time used by each box and of the overall execution time. Overall performance is displayed in a green gauge overlaid with the same information in percent. A system load 100 percent means the system is barely able to handle the computation load induced by the scenario to run in real-time.
|
||||
|
||||
To identify the bottlenecks in a scenario, one can press the button to the right of the gauge as a scenario is being run. This will highlight boxes from green to red, depending on how much time is spent in each box relative to the others.
|
||||
|
||||
Console
|
||||
-------
|
||||
|
||||
|AuthTool| console can be expanded/hidden by a simple click. You can choose the log levels you want to see in this particular window. |AuthTool| console has been developed in order to be sure to see any warning or error messages.
|
||||
|
||||
.. figure:: images/console-annotated.png
|
||||
:alt: |Brand| |AuthTool| Console
|
||||
:align: center
|
||||
|
||||
|Brand| |AuthTool| Console
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
.. _studio-authoring-scenarios:
|
||||
|
||||
Authoring Scenarios
|
||||
===================
|
||||
|
||||
This section covers the working area of |AuthTool|, which is where |Brand| scenarios are assembled by connecting box algorithms together.
|
||||
|
||||
Boxes
|
||||
-----
|
||||
|
||||
Box algorithms are added to the active scenario by drag and dropping them from the tree view to the scenario edition window. They appear as rounded rectangles with their name inside the box, inputs (if any) on top and outputs (if any) at the bottom. These connectors are displayed as color-coded triangles. Colors vary with the connector type, and help users to make sure they connect boxes properly. See *Connector Types* for an overview of the different connector types and hierarchy.
|
||||
|
||||
.. figure:: images/box.png
|
||||
:alt: Generic Stream Reader Box
|
||||
:align: center
|
||||
|
||||
A file reading box algorithm which has 2 outputs (signal and stimulations streams)
|
||||
|
||||
Additionally, if the box has **customizable settings**, they may be set by double clicking on the box (*tip*: when a box has such settings, its name is displayed in bold). The settings are listed in the popup dialog that appears, along with their default values. Settings may be overridden by directly typing in their desired values, or they may be read from a file. In the latter case, one should expand the *Override settings with configuration file* section to check the *File* button and pick a configuration file.
|
||||
|
||||
|
||||
.. figure:: images/box-settings.png
|
||||
:alt: Box Settings
|
||||
:align: center
|
||||
|
||||
Settings of a 'Generic stream reader' box: filename text entry
|
||||
|
||||
Linking Boxes
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The output of a box can be linked to the input of another box if the type of the output is the same type or is a derived type of the input's type. For example, a Signal output can be connected on a Streamed Matrix input as Signal's type derives from Streamed Matrix.
|
||||
|
||||
The various stream types are:
|
||||
|
||||
.. role:: color-stream-unidentified
|
||||
.. role:: color-stream-if-else
|
||||
.. role:: color-stream-ebml
|
||||
.. role:: color-stream-experiment-information
|
||||
.. role:: color-stream-stimulations
|
||||
.. role:: color-stream-streamed-matrix
|
||||
.. role:: color-stream-covariance-matrix
|
||||
.. role:: color-stream-channel-localization
|
||||
.. role:: color-stream-feature-vector
|
||||
.. role:: color-stream-signal
|
||||
.. role:: color-stream-spectrum
|
||||
.. role:: color-stream-time-frequency
|
||||
|
||||
- :color-stream-unidentified:`▼` Unidentified Stream
|
||||
- :color-stream-if-else:`▼` If/Else Condition Controller
|
||||
- :color-stream-ebml:`▼` EBML Stream
|
||||
|
||||
- :color-stream-experiment-information:`▼` Experiment Information
|
||||
- :color-stream-stimulations:`▼` Stimulations
|
||||
- :color-stream-streamed-matrix:`▼` Streamed Matrix
|
||||
|
||||
- :color-stream-covariance-matrix:`▼` Covariance Matrix
|
||||
- :color-stream-channel-localization:`▼` Channel Localization
|
||||
- :color-stream-feature-vector:`▼` Feature Vector
|
||||
- :color-stream-signal:`▼` Signal
|
||||
- :color-stream-spectrum:`▼` Spectrum
|
||||
- :color-stream-time-frequency:`▼` Time/Frequency
|
||||
|
||||
There are different connector types differentiated by their color, see figure above. The type "Unidentified stream" is applied on a connector type that couldn't be identified in the launched version of |AuthTool|. Some boxes that can have different connector types may also have this type of connectors by default. The type *If / Else Condition Controller* is a special type that is useful in the boxes: *If / Else Separation* and *End If / Else Concatenation*. See the documentation of these boxes for more details.
|
||||
|
||||
Box Status
|
||||
~~~~~~~~~~
|
||||
|
||||
|
||||
By default, the status of a box is 'normal', and the box is drawn with a white background. However, some boxes may have a different status depending on the situation. Here are the other possible status of a box:
|
||||
|
||||
**Update**
|
||||
|
||||
.. figure:: images/box-status-update.png
|
||||
:align: right
|
||||
|
||||
When a box is not up to date with the latest version used in a given distribution of |Brand|, it is drawn as this "Matrix to Signal" box. This situation arises when the prototype of a box has changed between the time the scenario it is stored in is saved and the time it is loaded again. Since scenario files contain information about box prototypes, such as the number of connectors, they may need to be updated when the |Brand| distribution used to manipulate scenarios changes. To update such a box, simply delete the box from the scenario then add it again. The new box will use the latest version.
|
||||
|
||||
Tip: after such an update, one should make sure to reconfigure the box settings if needed!
|
||||
|
||||
**Deprecated**
|
||||
|
||||
.. figure:: images/box-status-deprecated.png
|
||||
:align: right
|
||||
|
||||
As |Brand| evolves with time, some boxes are added to the platform and others are deleted. It can also happen that a box is replaced with another one (maybe for performance reasons). However, the 'old' box is not necessarily deleted from the platform, but may be kept for backward compatibility with older versions (ensuring older scenarios may still be run, for example). In that case, the documentation should mention that from that time on, the new box should be preferred over the deprecated one (which may be removed from the platform at any time, and in any case which probably won't be maintained anymore). Such boxes are displayed with an orange background and the 'deprecated' label below the box name.
|
||||
|
||||
**Unstable**
|
||||
|
||||
.. figure:: images/box-status-unstable.png
|
||||
:align: right
|
||||
|
||||
A box which is under development should be flagged as 'unstable', meaning it may have only been partially implemented or tested. Consequently, it may not behave properly in all conditions, or may be updated in a future release. Such a box is drawn with a dark grey background in |AuthTool|, and the 'unstable' label appears below the box name.
|
||||
|
||||
**Missing**
|
||||
|
||||
.. figure:: images/box-status-missing.png
|
||||
:align: right
|
||||
|
||||
A box that was described in a scenario but is not present in the opened version of |AuthTool| is considered as missing and its background is drawn in red color. This means that the launched version of |AuthTool| cannot find the information regarding this box and thus cannot play it.
|
||||
Note that the default tree view shows only stable and fully supported boxes. To use "unstable" boxes set Designer_ShowUnstable to TRUE or tick the corresponding box on top of the tree view. As stated in their documentation pages, unstable boxes can have unexpected behaviors.
|
||||
|
||||
Box Manipulation
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
All box algorithms may be configured in |AuthTool|. However, not all boxes offer the same configuration options. In this overview, we'll focus on functionalities that are common to all boxes. More advanced possibilities are detailed in another tutorial (Tutorial 3: Advanced box configuration).
|
||||
|
||||
To illustrate box editing functionalities, let's start by creating a new scenario, and drop a couple of boxes from the box algorithms tab. Simple boxes such as *Time Signal* and (found under the 'Data Generation' category) will do for this tutorial. Drag and drop these boxes in the scenario working area, then right-click on the *Time Signal* box. A context menu should appear, listing different editing functionalities.
|
||||
|
||||
Box editing functionalities appear in the lower part of the menu:
|
||||
|
||||
- **Rename box (F2)** allows to rename the box. Click this option and enter a new name such as 'Dummy Box' to test this functionality.
|
||||
- **Delete box (Del)** removes this box from the scenario. Note that a box may also be deleted by selecting it, then pressing the 'Delete' key.
|
||||
- **About box** displays a dialog containing a summary of the box details, such as its author, version, the version of |AuthTool| in which the box was added and last updated, the class name, as well as a short and long description of its purpose. Note that the 'short description' field also appears in the second column of the box algorithms tab.
|
||||
|
||||
Another option only gets listed for those boxes that offer configurable settings, such as the *Time Signal* box (this is indicated from its name displayed in bold case). Right click on this box and select:
|
||||
|
||||
- **Configure box**, which displays the Box Settings dialog. Note that this dialog may also be displayed by double clicking on the box itself.
|
||||
|
||||
Scenario Manipulation
|
||||
---------------------
|
||||
|
||||
|
||||
Standard cut/copy/paste functionalities are supported in |AuthTool|. Select a box and right click on it to display a menu from which to select these options.
|
||||
|
||||
Groups of boxes may be edited in the same way. Select several boxes at once by maintaining the **Ctrl** key pressed then clicking on the boxes you want to cut or copy. You may also draw a selection area by left clicking in the scenario editing area then drawing a selection rectangle while keeping the button pressed. **Ctrl+A** selects everything in the scenario.
|
||||
|
||||
Cut/copy your selection by right clicking on it then selecting the corresponding entry, or by pressing **Ctrl+X/Ctrl+C**.
|
||||
|
||||
Paste your selection by right clicking anywhere in the edition area, or pressing **Ctrl+V**. Note that you may also paste selections from one scenario to another.
|
||||
|
||||
Delete your selection by selecting 'Delete boxes' in the contextual menu, or pressing the **Delete** key.
|
||||
|
||||
Finally, the origin of the scenario editing area may be changed by pressing and holding the Shift key and left click then moving the mouse as desired. This allows you to explore your scenario window without using the scrolling bars.
|
||||
|
||||
Scenario Settings
|
||||
-----------------
|
||||
|
||||
Scenarios, much like boxes, can have their own settings. To access the settings of a scenario click on the **Scenario Configuration** tab in the right pane.
|
||||
|
||||
.. figure:: images/scenario-settings.png
|
||||
:alt: Scenario Settings
|
||||
:align: center
|
||||
|
||||
Scenario Configuration Pane
|
||||
|
||||
Adding Settings
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
To add a setting to the current scenario, press the **Configure Settings** button. A new window will appear. In it you are able to modify all settings the currently open scenario has.
|
||||
|
||||
Adding a setting is similar to adding a setting to a box. You can use all available types as well.
|
||||
|
||||
Once you add a setting it will appear in the list. There are several actions you can do on a setting.
|
||||
|
||||
|
||||
.. figure:: images/scenario-settings-annotated.png
|
||||
:alt: Scenario Settings Configuration Dialog
|
||||
:align: center
|
||||
|
||||
Scenario Settings Configuration Dialog
|
||||
|
||||
|
||||
1. Rename setting
|
||||
2. Delete setting
|
||||
3. Move setting up
|
||||
4. Move setting down
|
||||
5. Change default setting's value
|
||||
6. Change setting's type
|
||||
|
||||
When you close the setting configuration dialog box, your new settings will appear in the Scenario Configuration pane.
|
||||
|
||||
Modifying Settings
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can change the setting’s value inside the tab **Scenario Configuration**.
|
||||
|
||||
.. figure:: images/scenario-configuration-annotated.png
|
||||
:alt: Scenario Configuration with Settings
|
||||
:align: center
|
||||
|
||||
Scenario Configuration with Settings
|
||||
|
||||
1. Modify the settings value
|
||||
2. Reset setting to its default value
|
||||
3. Copy the current setting identifier wrapped in ``$var{}`` (explained in next step)
|
||||
|
||||
|
||||
Using Settings
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
Scenario Settings can be used in place of any setting of a box. In order to do so, right-click on the box, then click on configure box option and simply change the setting inside that box to a token named after the Scenario Setting wrapped inside a ``$var{}`` token.
|
||||
|
||||
In our example for DSP:
|
||||
|
||||
|
||||
.. figure:: images/box-settings-variables.png
|
||||
:alt: Box Settings with Variables
|
||||
:align: center
|
||||
|
||||
Using scenario settings
|
||||
|
||||
In order to simplify the process there is a convenience button that copies the whole string for a particular setting (Button labelled 3 in previous paragraph).
|
||||
@@ -0,0 +1,117 @@
|
||||
Metaboxes
|
||||
=========
|
||||
|
||||
In |Brand| |AuthTool| you can create new boxes by assembling them from parts of other boxes, they are called metaboxes. This section describes their usage. Metaboxes are loaded on start-up of the |Brand| |AuthTool|. They are loaded from the directories ``$InstallDir/share/openvibe/metaboxes`` and ``%APPDATA%/mensia/metaboxes``. These metaboxes are written under the formats ``.mxb`` or ``.mbb``.
|
||||
|
||||
A Metabox behaves just like a normal box, that is:
|
||||
|
||||
- It has an arbitrary number of inputs and outputs using the same types as other boxes.
|
||||
- It can have an arbitrary number of settings.
|
||||
- It can be inserted into a scenario.
|
||||
- It can have visualizations.
|
||||
|
||||
Creating Metaboxes
|
||||
------------------
|
||||
|
||||
In order to create a Metabox you first have to create a scenario.
|
||||
|
||||
Example: we want to make a Metabox that will apply a notch filter for 48-52Hz and then apply an arbitrary band-pass filter on the signal.
|
||||
|
||||
Thus, our Metabox consists of:
|
||||
|
||||
- One Signal input
|
||||
- One Signal output
|
||||
- Two temporal filter boxes
|
||||
- Two settings
|
||||
- Lower frequency bound
|
||||
- Upper frequency bound
|
||||
|
||||
Step 1: Adding boxes and settings
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
We create a new empty scenario and add two settings to it, we also drag two temporal filter boxes inside and set them up like so:
|
||||
|
||||
.. figure:: images/metaboxes/creating-01.png
|
||||
:alt: Creating a metabox - step 1
|
||||
:align: center
|
||||
|
||||
Creating a metabox - step 1
|
||||
|
||||
|
||||
First Temporal filter box is renamed Band Pass, the second one is renamed Notch filter (right-click + rename box: Notch Filter).
|
||||
|
||||
We set the notch filter to a band stop filter with cut off frequencies at 48 and 52Hz.
|
||||
|
||||
Step 2: Adding inputs and outputs
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
In order to "expose" inputs and outputs of our metabox we need to add some inputs and outputs to a scenario.
|
||||
|
||||
To do so we use the Scenario I/O tab. To add an input or output simply click the appropriate add button. A setting has only a name and a type. By default, the created type is Streamed Matrix.
|
||||
|
||||
- Add one **input** to the scenario, change its type to **Signal** and rename it to **Input Signal**
|
||||
- Add one **output** to the scenario, change its type to **Signal** and rename it to **Filtered Signal**
|
||||
|
||||
|
||||
.. figure:: images/metaboxes/creating-02.png
|
||||
:alt: Adding inputs and outputs
|
||||
:align: center
|
||||
|
||||
Adding inputs and outputs
|
||||
|
||||
|
||||
In order to associate a scenario input with a box input, right click on the box you wish to send the input to. A new context menu item will be available: **Connect scenario inputs**. In this context menu item will be a list of all box inputs which will again open a list of all scenario inputs. Clicking on the scenario input will link the box input to the scenario input.
|
||||
|
||||
Right click on the **Notch filter** box. In the **connect scenario inputs** submenu you will see the single input of the box. Incidentally it is also called *Input Signal*, under this item there will be another item called *Input Signal* – this is our scenario’s input.
|
||||
|
||||
|
||||
.. figure:: images/metaboxes/creating-03.png
|
||||
:alt: Linking a scenario input
|
||||
:align: center
|
||||
|
||||
Linking a scenario input
|
||||
|
||||
Now do the same for the output. A circular indicator will be displayed to represent the link between the scenario input and the box input.
|
||||
|
||||
.. figure:: images/metaboxes/creating-04.png
|
||||
:alt: Linked inputs and outputs
|
||||
:align: center
|
||||
|
||||
Linked inputs and outputs
|
||||
|
||||
Each scenario input can be linked to exactly one box input. If you wish to use the same input in several boxes, use an identity box.
|
||||
|
||||
Step 3: Adding Metadata
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
The metabox reads its metadata from the scenario information. You can edit it by clicking on the star button in the toolbar.
|
||||
|
||||
The most important attributes are **Name**, **Category** and **Metabox Id**. This is how your box will be identified inside the box-algorithm list.
|
||||
|
||||
The **Metabox Id** serves as a unique identifier for this box. You can either specify it yourself (as a group of two 32bit hex integers) or use the refresh button to generate one.
|
||||
|
||||
Save your box inside the ``%APPDATA%/mensia/metaboxes`` folder.
|
||||
|
||||
|
||||
.. figure:: images/metaboxes/creating-05.png
|
||||
:alt: Change about scenario
|
||||
:align: center
|
||||
|
||||
Change about scenario
|
||||
|
||||
Using a Metabox
|
||||
---------------
|
||||
|
||||
Metaboxes will appear in the sidebar just like the other boxes, except they are highlighted in a green colour.
|
||||
|
||||
You can drag a metabox into the scenario as you would any other box. It will appear with a double border.
|
||||
|
||||
.. figure:: images/metaboxes/using-in-scenario.png
|
||||
:alt: Metabox in scenario
|
||||
:align: center
|
||||
|
||||
Metabox in scenario
|
||||
|
||||
Double clicking on the metabox will reveal all of the settings of the scenario that represents the metabox. You can also right click on a metabox and open it in editor from the context menu *Edit this metabox in the editor*.
|
||||
@@ -0,0 +1,79 @@
|
||||
.. _studio-configuration:
|
||||
|
||||
Configuration Manager
|
||||
=====================
|
||||
|
||||
In this section, we review a component common to the whole |Brand| software platform: the **configuration manager**. We start with this component as we will mention several times in this document how specific behavior can be changed according to this configuration manager.
|
||||
|
||||
The |Brand| Configuration Manager is a software component in charge of configuring |Brand| applications and modules according to the user's wishes. Configuration settings are saved in a configuration file, which is loaded at application startup. This file uses a simple syntax, where configuration tokens are listed and given a value. You can check all the configuration tokens in |AuthTool| (Menu Edit/Preferences).
|
||||
|
||||
Configuration Files
|
||||
-------------------
|
||||
|
||||
|Brand| comes with **a default configuration file** (``share/openvibe/kernel/openvibe.conf``), automatically loaded at startup. This file lists configuration tokens used by the applications.
|
||||
|
||||
Users can edit **a personal configuration file** in order to customize their |Brand| software platform, by overwriting existing token or declaring new ones. In order to do so, create a file named ``openvibe-workspace.conf`` in the folder next to the scenarios you are running. This file will impact all scenarios next to it.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
|
||||
A configuration file basically looks like successive ``token = value`` statements.
|
||||
|
||||
For example, the application can retrieve its root path (|Brand| installation path) from the Path_Root variable. The path is expressed relative to the execution directory bin, so the root path is simply:
|
||||
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
Path_Root = ..
|
||||
|
||||
Leading and tailing spaces are allowed, and are removed automatically:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
Path_Root = ..
|
||||
|
||||
Comments may be stored on their own lines. They begin after the ``#`` character:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
#this is a valid comment
|
||||
Path_Root = ..
|
||||
|
||||
Lines ending with a ``\`` character continue to the next line, the last ``\`` character of a line is automatically removed by the parser. Note that ``\`` is used as an escape character. To write a path, you should use ``/``:
|
||||
|
||||
.. code::
|
||||
|
||||
#this is a line that extends\
|
||||
to the next line
|
||||
Path_Root = ..
|
||||
|
||||
Tokens declared anywhere in the configuration file may be used as values for other tokens. The syntax to be used is: ``${token}``
|
||||
For example, the binaries path may be declared as such:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
Path_Root = ..
|
||||
Path_Bin = ${Path_Root}/bin
|
||||
|
||||
Configuration files can include other configuration files thanks to a simple syntax:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
Include = path/to/my/config/file.conf
|
||||
|
||||
All tokens are read sequentially, and thus can be overwritten during the process.
|
||||
|
||||
Existing Tokens
|
||||
---------------
|
||||
|
||||
Several tokens such as *Path_Root* and *Path_Bin* are defined in the default configuration file, and can be overwritten in user-defined configuration files. The token *Player_ScenarioDirectory* is useful when designing a scenario. This token is changed as the path of the scenario when playing it. This is useful to load a file in the same folder as your current scenario. To have the complete list of these tokens, and their values, you can open the window **Preferences**.
|
||||
|
||||
Defining and Using Custom Tokens
|
||||
--------------------------------
|
||||
|
||||
Defining your own token can be very useful as you can use them afterwards everywhere in |Brand|. For example, you can define a token ``LowPassFrequency = 40``. You can then use it as a setting in several temporal filters (``${LowPassFrequency}``). Changing the token value will automatically change the filtering frequency in every temporal filter at once, which can be very handy: modification is global and switching from one frequency to another is fast and easy.
|
||||
|
||||
We will describe a concrete example that illustrates the use of custom configuration tokens, in paragraph "Appendix A: Using Configuration Tokens to Setup an Experiment Environment".
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Data Visualization
|
||||
==================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
data-visualization/01-index
|
||||
data-visualization/02-concepts
|
||||
data-visualization/03-configuration
|
||||
data-visualization/04-usecases
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
.. _Doc_Mensia_AdvViz:
|
||||
|
||||
Advanced Visualization
|
||||
======================
|
||||
|
||||
General information on the Advanced Visualization Toolset:
|
||||
|
||||
- :ref:`Doc_Mensia_AdvViz_Generalities` : generalities about the toolset.
|
||||
- :ref:`Doc_Mensia_AdvViz_Concepts` : understanding the Toolset design and the different visualization paradigms.
|
||||
- :ref:`Doc_Mensia_AdvViz_Configuration` : how to configure the Advanced Visualization boxes.
|
||||
- :ref:`Doc_Mensia_AdvViz_UseCases` : concrete examples of use, from spectral analysis to ERP display.
|
||||
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Generalities:
|
||||
|
||||
Generalities
|
||||
------------
|
||||
|
||||
To be able to use all the features in the Mensia Advanced Visualization
|
||||
Toolset, please verify that your setup meets the following recommendations.
|
||||
|
||||
OpenGL OpenGL dependency
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The Toolset relies on the `OpenGL <http://www.opengl.org>`_ library
|
||||
for every rendering operations, from signal display to 3D reconstruction. You
|
||||
must ensure that your computer is equipped with an OpenGL-compatible graphic
|
||||
card or chipset. This should be the case on any recent computer.
|
||||
|
||||
You should also ensure that your graphic card drivers are up-to-date. Please
|
||||
refer to the manufacturer website for more information.
|
||||
|
||||
@@ -0,0 +1,263 @@
|
||||
.. _Doc_Mensia_AdvViz_Concepts:
|
||||
|
||||
Concepts
|
||||
========
|
||||
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_Intro:
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
||||
The **Mensia Advanced Visualization Toolset** is a collection of boxes
|
||||
dedicated to the visualization of the result of electrophysiological signal
|
||||
analysis, and are especially suitable for the **real-time analysis of EEG
|
||||
signals**, from raw signal display to 3D source reconstruction.
|
||||
|
||||
It addresses many different use-cases among users. Neurophysiologists can
|
||||
observe accurately in real-time **spatial and temporal patterns** in the brain
|
||||
activity (motor activity, cognitive processes). EEG signal processing
|
||||
specialists can **evaluate and compare** instantly algorithms effects
|
||||
(source separation, denoising techniques). BCI researchers can study how their
|
||||
ERP-based system may be tuned to elicit and detect the best brain response.
|
||||
|
||||
|
||||
.. figure:: images/designer-box-list.png
|
||||
:align: center
|
||||
|
||||
Simple integration in the graphical user interface
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_VisualizationParadigms:
|
||||
|
||||
Visualization paradigms
|
||||
-----------------------
|
||||
|
||||
This Toolset has been designed to be very versatile. The main design concept
|
||||
revolves around the data presentation. You basically want to display matrices
|
||||
of numbers which may have temporal, and/or spatial meanings. The most adapted
|
||||
data presentation may vary from one case to another, according to the type of
|
||||
events or patterns on which you need to get a good contrast.
|
||||
|
||||
Before choosing the right visualization box, ask yourself:
|
||||
|
||||
- How do I want my data to be displayed? curves? levels?
|
||||
- What will be the best way to **enhance the contrast** between the information I want to extract and the rest of the data ?
|
||||
- Is my data stream **continuous** in time? or am I dealing with discontinuous epochs (e.g. ERPs) ?
|
||||
|
||||
To be adapted in most situation, the Mensia Advanced Visualization Toolset has
|
||||
been designed to cover different visualization paradigms. Take a look at all
|
||||
the possibilities and choose what will best fit your needs.
|
||||
|
||||
- :ref:`Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Oscilloscope`
|
||||
- :ref:`Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Bars`
|
||||
- :ref:`Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Bitmap`
|
||||
- :ref:`Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Topo`
|
||||
- :ref:`Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Reco`
|
||||
|
||||
You can also have a look at the :ref:`Doc_Mensia_AdvViz_UseCases` "list of use-cases", showing how each box can be used on concrete, real-life examples.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Oscilloscope:
|
||||
|
||||
The Oscilloscope view
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It is the most basic paradigm, used to display temporal numerical data in the
|
||||
form of **curves** (dots linked by lines). The Oscilloscope views are all
|
||||
expecting **centered** values (i.e. distributed around 0). Hence it is advised
|
||||
to use at least one temporal filter (e.g. band passing between 2 and 40 Hz
|
||||
using a :ref:`Doc_BoxAlgorithm_TemporalFilter` box) before displaying an EEG
|
||||
signal.
|
||||
|
||||
Four boxes use this paradigm:
|
||||
|
||||
- :ref:`Doc_BoxAlgorithm_ContinuousOscilloscope` box: displays continuous data from left to right on a defined horizontal scale (goes back to origin upon reaching the end of the scale), channels are displayed vertically one after another, but spikes may overlap.
|
||||
- :ref:`Doc_BoxAlgorithm_InstantOscilloscope` box: displays each block of data received as it comes, filling all the horizontal space available.
|
||||
- :ref:`Doc_BoxAlgorithm_ContinuousMultiOscilloscope` box: same as the Continuous Oscilloscope, but every input channels are displayed along the same horizontal axis with a different color, additively.
|
||||
- :ref:`Doc_BoxAlgorithm_InstantMultiOscilloscope` box: same as the Instant Oscilloscope, but every input channels are displayed along the same horizontal axis with a different color, additively.
|
||||
|
||||
**Example**: raw EEG signal display.
|
||||
|
||||
.. figure:: /boxes/images/ContinuousOscilloscope_Display.png
|
||||
:align: center
|
||||
|
||||
Continuous Oscilloscope displaying 2 EEG channels
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Bars:
|
||||
|
||||
The Bar view
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Like histograms, this paradigm can be used to display and compare **series of
|
||||
levels**. Levels are displayed one after another from left to right, within a
|
||||
**color gradient**. Channels are displayed vertically, one after another with a
|
||||
fixed interval (thus some "high" levels may overlap). With a high definition
|
||||
(i.e. a rather high frequency display), the result can be viewed as a curve
|
||||
colored below the line.
|
||||
|
||||
Two boxes uses this paradigm:
|
||||
|
||||
- :ref:`Doc_BoxAlgorithm_ContinuousBars` box: displays continuous data from left to right on a defined horizontal scale (goes back to origin upon reaching the end of the scale).
|
||||
- :ref:`Doc_BoxAlgorithm_InstantBars` box: displays each block of data received as it comes, filling all the horizontal space.
|
||||
|
||||
**Example**: spectrum display.
|
||||
|
||||
.. figure:: /boxes/images/InstantBars_Display.png
|
||||
:align: center
|
||||
|
||||
Instant Bars displaying the signal spectrum
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Bitmap:
|
||||
|
||||
The Bitmap view
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
The bitmap paradigm displays matrices of data using a color gradient. The
|
||||
result is a **2D map where each cell is given a color "bit"** . This view
|
||||
using colors can enhance easily the constrast between 2 temporal or spatial
|
||||
patterns, as the difference between "cold" and "hot" colors is quickly caught
|
||||
by the analyst's eye. You can even add an additional dimension by using
|
||||
**stacked bitmaps** : every time a new bitmap is received, it is placed on top
|
||||
or left to the previous one.
|
||||
|
||||
Four boxes uses this paradigm:
|
||||
|
||||
- :ref:`Doc_BoxAlgorithm_ContinuousBitmap` box: displays continuous data from left to right on a defined horizontal scale (goes back to origin upon reaching the end of the scale).
|
||||
- :ref:`Doc_BoxAlgorithm_InstantBitmap` box: displays each block of data received as it comes, filling all the horizontal space.
|
||||
- :ref:`Doc_BoxAlgorithm_StackedBitmapVertical` box: each bitmap is placed on **top** of the previous one.
|
||||
- :ref:`Doc_BoxAlgorithm_StackedBitmapHorizontal` box: each bitmap is placed **left** to the previous one.
|
||||
|
||||
**Example**: Time-frequency map.
|
||||
|
||||
.. figure:: /boxes/images/StackedBitmapHorz_Display.png
|
||||
:align: center
|
||||
|
||||
Stacked Bitmap (Horizontal) displaying the result of a Time-Frequency analysis
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Topo:
|
||||
|
||||
The Topographic view
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This paradigm adds a strong spatial constraint on the input data: each channel
|
||||
must be **labelled with an electrode name** in a defined nomenclature, such as
|
||||
the standard 10-20 system. Please see
|
||||
:ref:`Doc_Mensia_AdvViz_Concepts_ChannelLocalization` for further details.
|
||||
|
||||
Here again the data itself is displayed using a color gradient, mapped to a 2D or 3D model using **spherical spline interpolation**.
|
||||
|
||||
For more details about the spherical spline interpolation, please check *F.
|
||||
Perrin, J. Pernier, O. Bertrand, J.F. Echallier, Spherical splines for scalp
|
||||
potential and current density mapping, Electroencephalography and Clinical
|
||||
Neurophysiology, Volume 72, Issue 2, February 1989, Pages 184-187*. The 2D
|
||||
model is a planar projection of the scalp, covering the scalp roughly from the
|
||||
frontal area to the occipital area (i.e. from Fp1-Fp2 to O9-O10 sites). The
|
||||
projection result takes the shape of a disk with a crescent growth at the back
|
||||
for the occipital region.
|
||||
|
||||
Three boxes uses this paradigm:
|
||||
|
||||
- :ref:`Doc_BoxAlgorithm_2DTopography` box: maps the input (which channels are labelled in the 10-20 system standard) to a planar projection of the scalp.
|
||||
- :ref:`Doc_BoxAlgorithm_3DTopography` box: maps the input (which channels are labelled in the 10-20 system standard) to a projection on a 3D model of the scalp.
|
||||
- :ref:`Doc_BoxAlgorithm_3DCubes` box: an alternative view where each channel is represented by a 3D cube, positionned in space as the electrode would be on the 3D model.
|
||||
|
||||
The activity is rendered by changing the size and color of the cubes.
|
||||
|
||||
**Example**: Displaying the power of a specific frequency band on a 3D head model.
|
||||
|
||||
.. figure:: /boxes/images/3DTopography_Display.png
|
||||
:align: center
|
||||
|
||||
Alpha power mapped on a head model using the 3D topography
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_VisualizationParadigms_Reco:
|
||||
|
||||
The Reconstruction view
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Tomographic reconstruction algorithms offer an inside look, into the brain,
|
||||
from only surface measurements. Several techniques exist, including the
|
||||
algorithms of the popular LORETA family which slice the brain in a stack of
|
||||
little cubes called voxels, and computes the *inverse model*, a model
|
||||
reconstructing the sources of the potentials acquired at the measurement site.
|
||||
|
||||
One box implements the source reconstruction view:
|
||||
|
||||
- :ref:`Doc_BoxAlgorithm_3DTomographicVisualization` box : displays a 3D source reconstruction using 2394 colored/translucent voxels in a 3D head model.
|
||||
|
||||
This box expects 2394 input channels, produced by an inverse model (i.e. a spatial filter with N sensor inputs for 2394 sources outputs). This model must be tailor-made for the precise EEG setup being used (e.g. using sLORETA).
|
||||
|
||||
.. figure:: /boxes/images/3DTomographicVisualization_Display.png
|
||||
:align: center
|
||||
|
||||
3D tomographic reconstruction using the 3D Tomographic Visualization box
|
||||
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Concepts_ChannelLocalization:
|
||||
|
||||
Channel localization
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Every visualization box can use the spatial information conveyed by the
|
||||
electrode naming. The channels can be positionned relatively to each other as
|
||||
long as you provide in the box settings a file containing the cartesian
|
||||
coordinates of the electrodes. Most of the time, EEG manufacturers use the
|
||||
10-20 system as an electrode naming standard. For convenience, we provide
|
||||
within the Toolset a file compiling all the coordinates of the electrodes in
|
||||
the 10-20 system.
|
||||
|
||||
The cartesian coordinates of all the electrodes are computed in the 3D space, where the origin is at the center of [Fpz,Oz] and [T7,T8].
|
||||
|
||||
- the X axis goes from the occipital lobe to the frontal lobe
|
||||
- the Y axis goes from the right temporal lobe to the left temporal lobe
|
||||
- the Z axis goes from the center of the head to the top
|
||||
|
||||
And as for the unit, here are some key points at the maximum of the axis:
|
||||
|
||||
- Fpz (1,0,0)
|
||||
- Oz (-1,0,0)
|
||||
- T7 (0,1,0)
|
||||
- T8 (0,-1,0)
|
||||
- Cz (0,0,1)
|
||||
|
||||
The following figures illustrates the cartesian coordinates of the extended 10-20 system used in the Mensia Advanced Visualization Toolset.
|
||||
|
||||
.. figure:: images/CartesianCoordinates1.png
|
||||
:align: center
|
||||
|
||||
Cartesian coordinates of the 10-20 system, side view.
|
||||
|
||||
.. figure:: images/CartesianCoordinates2.png
|
||||
:align: center
|
||||
|
||||
Cartesian coordinates of the 10-20 system, front view.
|
||||
|
||||
For more information, please see *Oostenveld, R. & Praamstra, P. (2001). The
|
||||
five percent electrode system for high-resolution EEG and ERP measurements.
|
||||
Clinical Neurophysiology, 112:713-719*
|
||||
|
||||
Please note that using the 10-20 system is not mandatory. To use all the Toolset features related to the spatial disposition of the electrodes, you just need to provide a file that maps electrode name with their coordinates in the space described above.
|
||||
|
||||
The format of this file is simple text. You must provide:
|
||||
|
||||
- the electrode names as a list of quoted labels
|
||||
- the coordinate system labels
|
||||
- the electrode coordinates of the electrodes, in the same order as in the electrode names
|
||||
|
||||
For example:
|
||||
|
||||
.. code::
|
||||
|
||||
[
|
||||
["O1" "O2" ... ]
|
||||
["x" "y" "z" ]
|
||||
]
|
||||
[
|
||||
[-0.309017 -0.951057 4.48966e-011 ]
|
||||
]
|
||||
[
|
||||
[0.309017 -0.951057 4.48966e-011 ]
|
||||
]
|
||||
|
||||
For a complete example, please look at the file provided with the Toolset (``../share/mensia/openvibe-plugins/cartesian.txt``)
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
.. _Doc_Mensia_AdvViz_Configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
By design, all the boxes included in the Mensia Advanced Visualization Toolset
|
||||
share a common behavior when it comes to configuring the boxes, in the scenario
|
||||
edition or during its execution. In this section we describe the common
|
||||
configuration parameters you find when using these boxes.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_BoxSettings:
|
||||
|
||||
Box settings
|
||||
------------
|
||||
|
||||
You may encounter different settings, common to all or a subset of boxes,
|
||||
depending on the paradigms.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_ChannelLocalization:
|
||||
|
||||
Channel localisation
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Specify here where to find the file listing the coordinates of every electrodes
|
||||
by their names. Please see
|
||||
:ref:`Doc_Mensia_AdvViz_Concepts_ChannelLocalization` for more details.
|
||||
|
||||
For conveniency, we provide a default file
|
||||
``${AdvancedViz_ChannelLocalisation}``
|
||||
(*../share/mensia/openvibe-plugins/cartesian.txt*) which contains the cartesian
|
||||
coordinates of all electrodes in the extended 10-20 system. This settings is
|
||||
obviously **mandatory for the Topographic views**, but can also be useful for
|
||||
the other paradigms: at runtime, you can re-arrange the channels spatially by
|
||||
their names (from left to right hemisphere, or from front to top). This is
|
||||
useful when dealing with dense EEG (128 or more channels), which can bring a
|
||||
new light, new contrast on a rather opaque data display.
|
||||
|
||||
.. figure:: images/Settings_ChannelLocalisation.png
|
||||
:align: center
|
||||
|
||||
Spatial reorganization on a dense signal display using a Continuous Oscillator
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_Caption:
|
||||
|
||||
Caption
|
||||
~~~~~~~
|
||||
|
||||
If this field is used, this label will be displayed in the window, on top of the rendering area.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_Color:
|
||||
|
||||
Color
|
||||
~~~~~
|
||||
|
||||
The color gradient you want to use to display the data. You can use the color picker to chose the gradient manually, or use one of the presets.
|
||||
|
||||
Several presets exist in form of configuration tokens ``${AdvancedViz_ColorGradient_X}``, where X can be:
|
||||
|
||||
- ``Matlab`` or ``Matlab_Discrete`` (as in `Matlab <http://www.mathworks.fr/products/matlab/>`_ / `BCILAB toolbox <http://sccn.ucsd.edu/wiki/BCILAB>`_)
|
||||
- ``Icon`` or ``Icon_Discrete`` (as in `ICoN <https://sites.google.com/site/marcocongedo/software/icon>`)
|
||||
- ``Elan`` or ``Elan_Discrete`` (as in `Elan <http://elan.lyon.inserm.fr/>`_)
|
||||
- ``Fire`` or ``Fire_Discrete``
|
||||
- ``IceAndFire`` or ``IceAndFire_Discrete``
|
||||
|
||||
The default values ``AdvancedViz_DefaultColorGradient`` or ``AdvancedViz_DefaultColorGradient_Discrete`` are equal to ``Matlab`` and ``Matlab_Discrete``.
|
||||
|
||||
Here is an example of 2D topography rendering using these color gradients:
|
||||
|
||||
.. figure:: images/2DTopography_ColorGradients.png
|
||||
:align: center
|
||||
|
||||
The color gradient presets available, illustrated with the 2D topography
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_BoxSettings_Translucency:
|
||||
|
||||
Translucency
|
||||
~~~~~~~~~~~~
|
||||
|
||||
This setting expects a value between 0 and 1, where 0 is complete transparency and 1 complete opacity.
|
||||
|
||||
The translucency parameter is very useful when dealing with overlapping rendering, i.e. when some parts of the visualizations end up on each other.
|
||||
By adding some translucency the data can still be visible, and it can also smoothen dense readings for more confort.
|
||||
|
||||
.. figure:: images/Settings_Translucency-1-05.png
|
||||
:align: center
|
||||
|
||||
Using the translucency to allow dense yet smooth EEG reading
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_BoxSettings_PositiveData:
|
||||
|
||||
Positive data only
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
By ticking this checkbox, you shift the vertical scale of the visualization in order to have the 0 at the bottom (no negative values will be displayed)
|
||||
|
||||
This setting can be activated when dealing with spectral amplitude or any kind of positive-only "levels".
|
||||
|
||||
.. figure:: images/ContinuousBars_Display.png
|
||||
:align: center
|
||||
|
||||
Displaying a positive level (Global Field Power) using Continuous Bars
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_BoxSettings_Gain:
|
||||
|
||||
Gain
|
||||
~~~~
|
||||
|
||||
If set, all samples in the input stream are multiplied by this scalar value before display.
|
||||
This can be useful when you need to display all at once different type of data on the same relative scale, with a good contrast on every view.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_BoxSettings_TemporalCoherence:
|
||||
|
||||
Temporal Coherence
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Tells the box whether the input stream is expected to be **Time-locked** or
|
||||
**Independent**. In the first case the box should use a Time scale (in
|
||||
seconds, for **continuous** data), and for the second case a Matrix count
|
||||
(number of data block received, for **discontinuous** data).
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_BoxSettings_TimeScale:
|
||||
|
||||
Time scale
|
||||
~~~~~~~~~~
|
||||
|
||||
The time scale (in seconds) drives the number of values to be displayed in
|
||||
continuous or stacked views before going back to the origin. Using a time
|
||||
scale is meaningful only when dealing with an input stream made of continuous
|
||||
epochs, e.g. signal display, time-frequency analysis.
|
||||
|
||||
.. _ Doc_Mensia_AdvViz_Configuration_BoxSettings_MatrixCount:
|
||||
|
||||
Matrix count
|
||||
~~~~~~~~~~~~
|
||||
|
||||
The number of input epochs to display before going back to the origin. For
|
||||
example in stacked bitmaps this setting is the number of bitmaps to be stacked
|
||||
before going back to the bottom of the stack.
|
||||
|
||||
An illustration for this setting would be the visualization of Event-Related
|
||||
Potentials such as P300. In such scenario, we usually select epochs of data
|
||||
uncontinuously, e.g. by extracting 600ms of signal around a target stimulation.
|
||||
Setting the Temporal coherence parameter to *Independent* will make the
|
||||
box display every epochs one after another, without trying to use the epoch
|
||||
timings. For example, set to *Independent* when you want to stack P300
|
||||
target trials on a bitmap view, with a matrix count equal to the number of
|
||||
trials you want to stack.
|
||||
|
||||
.. figure:: images/StackedBitmapVert_ERPDisplay.png
|
||||
:align: center
|
||||
|
||||
Using a Stacked Bitmap (Vertical) to display the 3 first xDAWN components of all 99 Target trials of a P300 session
|
||||
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_RuntimeToolbar:
|
||||
|
||||
Runtime Settings
|
||||
----------------
|
||||
|
||||
This section covers the different settings available at runtime (i.e. when the
|
||||
scenario is currently beeing played). Clicking on the **toolbar** will open-up
|
||||
the runtime visualization settings.
|
||||
|
||||
- **Sort Channels** : rearrange the channels **by their name** (alphabetically
|
||||
or reversed order), or **by their position on the scalp** (left to right or
|
||||
front to back). This last option is possible only if the channel are named
|
||||
according to the 10-20 system, and if you provided a channel localisation
|
||||
file in the box settings.
|
||||
|
||||
- **Select Channels** : Select in a list the channels you want to see in the
|
||||
visualization window. Use the ``Ctrl`` or ``Shift`` key to add channels to
|
||||
your selection, ``Ctrl+a`` to select all channels.
|
||||
|
||||
- **Show scales** : show or hide all the scales around the visualization
|
||||
widget; allows nice snapshots. This setting is **global**, meaning that it
|
||||
affects all the other advanced visualization windows currently running in
|
||||
your scenario. Doing so preserves the widgets alignment when displaying
|
||||
synchronized data. This setting can be turned on or off also by a **double
|
||||
left-click** in the visualization windows itself.
|
||||
|
||||
- **Positive data** : this setting is a runtime duplicate of the box setting
|
||||
*Positive data only*. If checked, the vertical axis is shifted so
|
||||
that 0 is at the bottom. Negative values wont be displayed.
|
||||
|
||||
Depending on the temporal coherence selected in the box settings, you may find:
|
||||
|
||||
- **Time scale** : this setting is a runtime duplicate of the box setting *Time scale*.
|
||||
|
||||
- **Matrix count** : this setting is a runtime duplicate of the box setting *Matrix count*.
|
||||
|
||||
When the visualization box implements an **Instant** paradigm for **streamed
|
||||
matrices or signal input** data, a new setting is available:
|
||||
|
||||
- **Epoch replay** : replays the last epoch received.
|
||||
|
||||
Topographies also expose the ERP replay in adequat conditions. This feature is
|
||||
**global**, meaning that the replay is performed simultaneously on every
|
||||
compatible boxes. This allows for example on-demand replays of ERPs,
|
||||
simultaneously on a signal display and a topography.
|
||||
|
||||
.. figure:: images/3DTopography_ERPReplay.png
|
||||
:align: center
|
||||
|
||||
Using the ERP replay feature on a 3D topography to catch the spatial course of the potential
|
||||
|
||||
.. _Doc_Mensia_AdvViz_Configuration_RuntimeControls:
|
||||
|
||||
Runtime Controls
|
||||
----------------
|
||||
|
||||
All the visualization boxes share common controls at runtime, for a user-friendly, natural interaction.
|
||||
Using the mouse, one can:
|
||||
|
||||
- Maintain **right click** and move the mouse up or down to **zoom in or out on the data scale**
|
||||
- Maintain **left click** and move the mouse to **rotate** a 3D model
|
||||
- Maintain **middle click** and move the mouse to **zoom in or out on a 3D model**
|
||||
- **Double left click** in the vizualisation window to remove all the scales from the frame
|
||||
|
||||
All these controls are **global** , meaning that if you change the scale in one visualization window, it will change the scale in every visualization windows accordingly.
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
.. _Doc_Mensia_AdvViz_UseCases:
|
||||
|
||||
Use-cases
|
||||
=========
|
||||
|
||||
We describe in this section of the documentation several use-cases, typical and
|
||||
concrete examples of EEG analysis that are enlighted by the **Mensia Advanced
|
||||
Visualization Toolset**.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis:
|
||||
|
||||
EEG Signal analysis
|
||||
-------------------
|
||||
|
||||
This detailed example uses the basic OpenViBE signal processing boxes to
|
||||
perform elementary real-time analysis, and the Mensia Advanced Visualization
|
||||
Toolset to display the results:
|
||||
|
||||
- Raw and filtered EEG
|
||||
- Spectrum, time-frequency map
|
||||
- 2D and 3D topographies
|
||||
|
||||
You can find this scenario in the provided sample set, the scenario file name
|
||||
is ``UseCase-1-EEG-signal-analysis.mxs``.
|
||||
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis_Intro:
|
||||
|
||||
Introduction
|
||||
~~~~~~~~~~~~
|
||||
|
||||
This use-case is a simple yet concrete example of real-time EEG analysis
|
||||
usually performed with OpenViBE. The scenario covers the use of oscilloscope,
|
||||
bitmaps, bars and topographic views to display signal, spectrum, and band
|
||||
power.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis_Scenario:
|
||||
|
||||
The scenario
|
||||
~~~~~~~~~~~~
|
||||
|
||||
The signal used is a **motor imagery** session, where the participant performed
|
||||
right and left hand motor imagery trials. For more details, please refer to
|
||||
the official documentation of the OpenViBE motor-imagery bci scenarios,
|
||||
provided with the official release of the software. We chose these data for
|
||||
demonstration purpose only as it is a file provided with the official release
|
||||
of openvibe, and should be available for you anyway.
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis_Scenario_Filtering:
|
||||
|
||||
Signal filtering
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
We first remove artifacts using temporal filters, especially the common 50Hz
|
||||
noise coming from the electrical installation. The EEG amplifier used for the
|
||||
record we read here is a Mindmedia NeXuS 32b, with one reference channel put on
|
||||
Nz (nose). The *Reference Channel* box applies this spatial filter to further
|
||||
remove noises.
|
||||
|
||||
We then use a :ref:`Doc_BoxAlgorithm_ContinuousOscilloscope` to display the
|
||||
filtered signal.
|
||||
|
||||
.. figure:: images/UseCase1_1.png
|
||||
:align: center
|
||||
|
||||
Denoising the signal before display
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis_Scenario_Spectrum:
|
||||
|
||||
Spectral analysis
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
A first pipeline computes two surface Laplacian filters around C3 and C4, the
|
||||
center of the two motor cortices. We then compute the spectrum using FFT, up
|
||||
to 32 Hz, and display it using :ref:`Doc_BoxAlgorithm_InstantBars` (spectrum
|
||||
levels) and :ref:`Doc_BoxAlgorithm_StackedBitmapHorizontal` (time-frequency
|
||||
map).
|
||||
|
||||
.. figure:: images/UseCase1_2.png
|
||||
:align: center
|
||||
|
||||
Spectral analysis over filtered data
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis_Scenario_Topo:
|
||||
|
||||
Topographic display
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
We compute in a parallel pipeline the alpha band power, averaged over several
|
||||
epochs, and visualize it over the scalp through
|
||||
:ref:`Doc_BoxAlgorithm_2DTopography` and :ref:`Doc_BoxAlgorithm_3DTopography`.
|
||||
|
||||
.. figure:: images/UseCase1_3.png
|
||||
:align: center
|
||||
|
||||
Topographic display of the alpha band power over the scalp
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_SignalAnalysis_Result:
|
||||
|
||||
Result
|
||||
~~~~~~
|
||||
|
||||
Here is the online visualization when we play this scenario on the provided
|
||||
data.
|
||||
|
||||
.. figure:: images/UseCase1_6.png
|
||||
:align: center
|
||||
|
||||
Signal display
|
||||
|
||||
.. figure:: images/UseCase1_4.png
|
||||
:align: center
|
||||
|
||||
Spectrum visualization
|
||||
|
||||
.. figure:: images/UseCase1_5.png
|
||||
:align: center
|
||||
|
||||
2D and 3D Topographies
|
||||
|
||||
.. _Doc_Mensia_AdvViz_UseCases_ERPAnalysis:
|
||||
|
||||
Event-Related Potentials analysis
|
||||
---------------------------------
|
||||
|
||||
This use-case is focused on the ERP extraction and visualization, applied to
|
||||
P300 speller data. The Mensia Advanced Visualization boxes allows concurrent
|
||||
and comparative displays (e.g. target versus non-target potentials), and
|
||||
synchronized replay capabilities
|
||||
|
||||
You can find this scenario in the provided sample set, the scenario file name
|
||||
is ``UseCase-2-ERP-analysis.mxs``.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 176 KiB |
|
After Width: | Height: | Size: 456 KiB |
|
After Width: | Height: | Size: 139 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 197 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,14 @@
|
||||
|Brand| |AuthTool|
|
||||
==================
|
||||
|
||||
The |Brand| |AuthTool| is an authoring tool dedicated to creating and executing |AuthTool| scenarios.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
01-introduction
|
||||
02-interface
|
||||
03-scenario-authoring
|
||||
04-metaboxes
|
||||
05-configuration
|
||||
06-data-visualization
|
||||
@@ -0,0 +1,25 @@
|
||||
OpenViBE Documentation
|
||||
======================
|
||||
|
||||
OpenViBE Desginer Documentation
|
||||
-------------------------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
designer/index-designer
|
||||
|
||||
Available Boxes
|
||||
---------------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
boxes/index-boxes
|
||||
|
||||
Data Formats Documentation
|
||||
--------------------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
data-formats/index-data-formats
|
||||