Difference between revisions of "Plugins:pokesplot2"

From Bcontrol
m
m (PokesPlot Preferences Pane)
Line 34: Line 34:
  
 
==PokesPlot Preferences Pane==
 
==PokesPlot Preferences Pane==
 
+
[[image:pokesplot_preferences_pane.jpg|center]]
  
 
==PokesPlot Expression Evaluation==
 
==PokesPlot Expression Evaluation==

Revision as of 21:54, 7 May 2010

Introduction

PokesPlot is a plugin used to graphically display state, poke, scheduled wave and neural spike information for any instant and to perform basic analysis. PokesPlot2 is an upgrade from the previous version of pokesplot, completely rewritten. It incorporates a number of new features including display of scheduled waves, use of wildcards to retrieve information about multiple states, a window displaying the states/pokes/waves present under the cursor at any given coordinate on the PokesPlot axes, the ability to programmatically align all elements on the pokesplot axes at any desired time, and various fixes concerning the display of all elements on the axes. Pokesplot2 is completely compatible with existing data files and settings files.

Architecture And Working

In order to understand the working of pokesplot2, you might want to become familiar with the parsed_events, latest_parsed_events, and parsed_events_history variables. These variables are instantiated by Dispatcher.

PokesPlot2 operates in one of two modes:

  1. Displaying data as it is accumulated while the protocol is running: In this mode, pokesplot2 analyzes the latest_parsed_events structure for every update cycle of the protocol. Data about the entry and exit times of each state, poke, and scheduled wave is displayed on the pokesplot axes as it is retrieved from the Real-Time Linux State Machine Server. Spikes are not displayed in this mode, as retrieval of spiking data requires additional offline processing.
  2. Displaying historical experiment data from an existing data file: Historical experiment data can be displayed using pokesplot2 using either dispatcher or neurobrowser. When using dispatcher, simply load the desired data file from the saveload plugin. Historical data will be displayed and saved GUI element settings will be restored for all GUI elements once the data file is loaded. In order to load data from Neurobrowser, select the session you wish to display data for and hit the 'Send Data to PokesPlot' button. If spiking data is available, it will be shown on the PokesPlot axes as vertical lines, black by default.

A note about scheduled waves: At the time of this writing (May 5, 2010), only the sustain period of scheduled waves is available in the parsed_events structure. It is not possible to obtain the instants of the preamble and refractory periods of each scheduled wave with the current parsed_events structure. However, it will be possible to display the preamble and refractory periods by modifying the code only slightly if the parsed_events structure is modified at a later stage.

States and pokes are displayed as patch objects, whereas scheduled waves and spikes are displayed as line objects.

Pokesplot2 flow diag1.jpg

Typical Usage

Step 1: Inherit from the pokesplot2 plugin:

obj = class(struct, mfilename, pokesplot2, <other plugins>);

Step 2: Call

PokesPlotSection(obj, 'init')

in your protocol's 'init' section. This will initialize the PokesPlotSection GUI and the PokesPlot Preferences Pane, and restore saved GUI element settings if available.

Step 3: Prepare the function files state_colors.m and wave_colors.m. Optionally, you may also want to prepare poke_colors.m and spike_color.m. The files should evaluate to a structure having the following format:

state_color_struct = struct('statename1', <normalized RGB triplet>, 'statename2', <normalized RGB triplet>, ...)
wave_color_struct = struct('wavename1', <normalized RGB triplet>, 'wavename2', <normalized RGB triplet>, ...)
poke_color_struct = struct('C', <normalized RGB triplet>, 'L', <normalized RGB triplet>, 'R', <normalized RGB triplet>)
spike_color = <normalized RGB triplet>

Step 4: Call

PokesPlotSection(obj, 'update')

in your protocol's 'update' section. This will allow PokesPlot to continuously update its display as the protocol runs ahead.


PokesPlotSection Figure Window

Pokesplot2 gui.jpg

PokesPlot Preferences Pane

Pokesplot preferences pane.jpg

PokesPlot Expression Evaluation

Examples

Plugin Files

Known Bugs

Changelog

Author