Data Traces

This panel graphs the actual analog and digital data collected by Maestro during an experiment. The panel's appearance is intimately connected to the channel configuration object, which defines the y-axis range of the graph and selects which channels are actually displayed, along with their baseline offset, scale factor, and trace color. Up to 10 different data traces can be displayed on the same "time" scale. The analog data and so-called "computed" channels are plotted as discrete-sampled waveforms, while the digital event data channels are treated as pulse trains -- the occurrence of an event is marked by the presence of a short vertical line at the time of the event.

The graph fills the entire client area of the Data Traces panel, with the exception of narrow margins on the left and right sides. Time increases from left to right, and the y-axis increases from bottom to top. No horizontal axis is displayed. In the middle of the left and right margins, a simple white y-axis is shown with 9 equally spaced tick marks. For each trace, a small solid arrow is drawn in the margin to mark the trace's baseline level; the arrow's color matches the trace color. For a continuous data trace, a right-pointing arrow appears in the left margin; for pulse trains, a left-pointing arrow is drawn in the right margin. There are no axis or tick mark labels.

Two display modes

In Continuous and Test modes, the Data Traces panel behaves like a "raster oscilloscope". The graph width is fixed at 5 seconds, and the graph is updated approximately once a second. A thin green vertical line, spanning the entire height of the graph, marks the "current time", i.e., where the last sample was drawn for each displayed trace. When the current time exceeds the graph width, the drawn traces merely wrap back around to the left side of the graph. You can change the channel configuration at any time; upon doing so the trace display is cleared and restarted using the new channel configuration. You can also edit the current channel configuration; in this case, as long as you do not change the set of channels displayed, Maestro will update the graph's appearance without restarting the traces from scratch. Obviously, this mode of operation is well-suited to Continuous and Test modes, in which Maestro monitors the data channels for an indefinite period of time.

In Trial mode, each trial is a fixed duration that is known a priori. Furthermore, it is very useful to be able to look at the data traces of a completed trial for a short while before they get erased by the next trial's data. For these reasons, the Data Traces panel operates in a "delayed display" mode during trial sequencing. In this mode there are actually two sets of displayed traces -- one for the last trial presented and one for the trial in progress. The panel displays the data trace set for the last trial (the "displayed" trace set), while Maestro builds the trace set for the current trial in the background (the "delayed" trace set). When the current trial finishes, the "delayed" trace set becomes the new "displayed" set, and the old "displayed" set is cleared to make ready for the next trial's data. The name of the trial is written near the top left corner of the trace display (not shown in the screenshot). The graph width is normally set to display the entire trial's worth of data. However, if the trial defines valid Display Interval segments m <= n, then the graph is configured to display only that portion of the trial encompassing segments m through n.

Aliasing of continuous waveforms and binning of pulse trains

To keep its memory footprint fixed and relatively small, the Data Traces panel's internal trace buffer has a fixed size of 10000 samples. The trace buffer is partitioned into distinct sections for each displayed trace; thus, the more traces displayed, the fewer samples that can be stored for each individual trace -- as little as 1000 samples per trace when the maximum number of traces are drawn. Whenever the width of the graph (in number of samples) is greater than the per-trace buffer size, Maestro must subsample the raw data streams delivered by its hardware controller. For analog traces, all raw data samples falling within a single "bin" of the internal trace buffer are averaged to get the subsampled value. Analog data streams with high-frequency content will be aliased, and very short-duration transients will be smoothed out. For a pulse train trace, the internal trace buffer stores the number of pulses that occurred in each bin; the height of the vertical line drawn for a bin is proportional to the number of pulses in that bin (this is evident in the screenshot). The resolution in the time of occurence of an individual pulse is limited to the bin size. The effective sampling rate due to this memory limit is 10000 / (W·D·N), where W is the display width in number of sample intervals, D is the sample interval in seconds, and N is the number of traces displayed. It should be noted that the panel's effective sampling rate is more often determined by pixellation of the display than by the internal memory limitations. The sampling rate due to pixellation is M / (W·D), where M is the display width in pixels. As a reminder to the user, Maestro reports the current "effective sampling rate" of the trace display in the title bar.