Version 1.2

Version 1.2.8, released 12 Apr 2005

    • Introduced new feature: intra-trial tagged sections. A "tagged section" is a contigous range of segments within a trial to which a brief descriptive tag is assigned. The idea here is to provide a means of partitioning a longer trial into a set of "mini-trials" each of which serves a different purpose, eg., testing a unit's response to a patch target moving in one of 8 different directions. A trial can have as many tagged sections as it has segments -- ie, each segment can be a tagged section. However, no two tagged sections in a trial can overlap or have the same name, and section tags are limited to 17 characters or less. Maestro's Trial Editor has been modified to let user create, remove, and rename tagged sections in a trial. A single-row grid above the segment table -- the "partitions grid" -- serves as a column header for the table, and as the means for editing a trial's tagged sections. To create a section, hold the Shift key down while left-clicking on two cells in the grid. After the first click, the cell is highlighted in blue. After the second click, the selected range of cells is merged into one cell representing the tagged section. An inplace edit control appears, allowing you to change the tag name provided for the new section. To rename an existing tagged section, simply double-click on the corresponding cell to invoke the inplace editor and type in the new name. To remove the tagged section, right-click on the cell and select the appropriate command from the popup context menu. If a trial contains any tagged sections, the tag name and segment range spanned by each section are stored in the trial data file using a new record type. Analysis software can use this information to parse the individual sections from the trial data.

    • Modified readcxdata() to report any tagged sections in a Maestro trial data file.

    • Modified implementation of the XYScope target Opt Ctr w/ Noisy Dots. A new parameter on the Target Editor, in the Dots control group, specifies the "dot direction update interval" in milliseconds. The individual target dot directions are re-randomized each time this update interval expires, rather than on every XYScope frame update. Of course, for predictable results, the update interval should be an integral multiple of the frame period in use.


Version 1.2.7, released 17 Mar 2005 (rev 29 Mar)

    • Modified internals of the Data Traces display to improve its "effective sampling rate", R. As before, R may be limited by internal memory considerations or by pixellation of the display -- the new design improves the worst-case value of R by a factor of 5. In addition, the current value of R is now reported in the panel's title bar, in Hz.

    • The Statistics tab on the Trial mode control panel now displays #attempted (i.e., not "ignored" IAW the Ignore threshold) for each trial in the current trial set, rather than the total number of trial presentations.

    • In Test mode, on the Analog I/O tab page, voltage can now be displayed in volts, millivolts, OR as a raw DAC value. Note that, if the system is using a 16-bit AO board, the AO voltages will range between +/-32767.

    • In previous versions, a newly created trial object had its Channel Configuration set to "NONE". If the user forgot to change this, the trial would collect no analog data whatsoever. Now, the predefined "default" channel configuration is assigned to each new trial created.

    • Added a second reward "statistic" in the Fix/Reward tab of the Trial and Continuous mode control panels. Near the top of the page, after the pushbutton labelled Reward Stats, one readonly edit box displays the number of rewards delivered as before. The second edit box, however, displays the "cumulative reward" in milliseconds -- i.e., the sum of the pulse lengths of all rewards delivered (since the last reset). This second statistic is only informative in those rigs which use the "variable reward pulse" device to control reward delivery. Both statistics are reset by pressing the Reward Stats button.

    • Modified the scheme for integrating Maestro operation with an external acquisition system (ie, the Plexon). For Trial mode: Always send the "start" (ASCII 0x2) and "stop" (ASCII 0x3) characters; these must bracket all character data written to the character writer device for a single trial. The "start" character is immediately followed by the null-terminated name of the trial, then the null-terminated data file name. However, if the trial is not to be saved in the first place, send the "noFile" (ASCII 0x7) character, followed by a NULL character; the trial protocol name should still be sent (in previous version Maestro might send the wrong trial name). After the trial has ended, if the animal lost fixation, send a "lostfix" (ASCII 0xE) character. If the trial aborted for any reason other than a fixation break, send the "abort" (ASCII 0xF) character. If data file was saved successfully, send the "dataSaved" (ASCII 0x6) character. Finally, the dedicated DOUT<11> pulse -- which is connected to the XS2 input on the Plexon MAP -- is now triggered at the very beginning and very end of the trial, rather than bracketing the recorded portion. For Continuous mode: As before, deliver the "start" char followed by null-terminated data file name before the recording starts. Again, as before, pulses are delivered on DOUT<11> when recording starts and ends. If an error occurred, the "abort" character is written. If the data file is successfully saved, the "dataSaved" character is written. Finally, the "stop" character is written ALWAYS.

    • Added menu item Copy selection to... in the File menu. This command allows the user to copy selected objects in the currently open document to a second document. A Windows common file dialog pops up so the user can browse the file system to select the destination document. All objects currently selected in the object tree view, along with any dependencies (eg., a participating target in a trial), are copied into the destination document. Object names are preserved, unless the copied object has a sibling of the same name in the destination document. If a trial is copied, its parent trial set is copied as well; likewise for targets in a user-defined target set. No predefined objects are copied.

    • Now supports trials up to 30 seconds long (instead of 10) and containing up to 30 segments (instead of 20). Trial trajectories are still precomputed and stored in large buffers, so this version uses over 6MB more RAM than the previous version. The large buffers are now all allocated at startup. [07apr2005] Modified XWork to handle the longer trials that can now be generated by Maestro.


Version 1.2.6, released 26 Jan 2005

    • Modified and extended the implementation of the Mid-trial Reward feature in Trial mode. In previous versions, the interval between rewards and the reward pulse length were taken from widgets on the mode control panel's Fix/Reward tab. This was essentially a hack to avoid having to introduce another trial code. Now, the mid-trial reward interval and pulse length are specifically defined within the trial itself. On the trial definition form, in the Special Features section, are three new widgets related to mid-trial rewards. A pushbutton chooses between two different modes: periodic, in which mid-trial rewards are delivered at regular intervals as long as fixation requirements are met; and atSegEnd, in which a reward is delivered at the end of each segment that is enabled for mid-trial rewards. Numeric edit controls specify, in milliseconds, the reward interval for periodic mode and the reward pulse length. Finally, note that there's the potential problem of delivering a mid-trial reward near the end of the trial, conflicting with the normal end-of-trial reward. Maestro does NOT protect against this situation, except that in atSegEnd mode, a mid-trial reward will never be delivered at the end of the trial's last segment. Users are responsible for designing their trials appropriately. Note: The addition of new trial header parameters means that Maestro experiment documents (.cxe) saved with this version of the program cannot be opened by earlier versions! Be sure to update Maestro on your own desktop if you've installed it there!

    • Revised implementation of the dualFix operation, which is now called switchFix. The purpose of this feature is to encourage the subject to switch from one fixation target to another between the end of the so-called special segment and the end of the trial, without knowing apriori which target (FIX1 or FIX2) is initially "selected". During the special segment and all segments thereafter, fixation is enforced except during saccades. Furthermore, fixation requirements are satisfied so long as the subject's eye is within the fixation window of either target. Thus, switchFix allows the animal to freely switch between FIX1 and FIX2 from the beginning of the special segment till trial's end. Typically, a mid-trial reward will be enabled for delivery at the end of the special segment to reward the animal for getting to this point in the task. However, to reap the (usually larger) end-of-trial reward, the animal must have switched its fixation to the other target by the end of the trial. The trial data file will be saved if the trial is completed, regardless of whether the animal performed the switch or not. Flag bits in the flags field of the data file's header record can be checked to determine what happened during the trial.

    • Miscellaneous: a) Reward pulse length can now be set as low as 1ms. Users should verify that such a short pulse to the reward solenoid actually delivers any measurable liquid! b) Fixed bug in low-level implementation of XYScope target Opt Ctr w/Noisy Dots. The bug only occurred for a rightward (theta = 0deg in polar coords) pattern velocity when the per-frame displacement was greater than 200 device pixels.


Version 1.2.5, released 15 Nov 2004 (rev 04 Jan 2005)

    • Introduced a new XYScope target type, Opt Ctr w/Coherence. This target is implemented like Optimized Center, but it introduces the notion of "percent coherence". If the target has N% coherence, then on every frame update, every target dot has a N% chance of moving coherently -- ie, in accordance with the pattern velocity vector for that frame -- and a (100-N)% chance of being randomly repositioned within the target window. The total number of dots painted each frame is always the same. However, at the faster update rates (2-4ms), there may appear to be more dots. Initial tests with the new target indicate that an frame period of ~8ms gives better results. This target is based upon a 1988 J.Neurosci. paper by Newsome & Pare.

    • Introduced another Trial mode operation akin to the saccade-triggered skipOnSacc and selByFix operations. The dualFix operation is selected by toggling the appropriate pushbutton in the Special Features panel within the trial definition form. Like selByFix, it requires the user designate two fixation targets, FIX1 and FIX2, for the special segment and all subsequent segments. However, it is not triggered by the first saccade within that segment. Instead, it broadens the fixation requirements for that segment: fixation is satisfied so long as the eye is within the fixation window of either target, and fixation checking is suspended during any saccade within that segment. Thus, the animal can saccade back and forth between the two targets during the special segment. The target closest to the eye at segment's end is considered "selected" only for the purposes of reward delivery: if FIX1 was selected, the reward length #1 is used for the reward pulse; else reward length #2 is used. The "deselected" target is never turned off.

    • Fixed bug in the Mid-trial Reward feature in Trial mode.


Version 1.2.4, released 27 Sep 2004

    • Introduced a new tab, labelled Statistics, on the Trial mode control panel. This holds a simple read-only table that lists the names of the individual trials in the currently running (or last finished) trial sequence, the # of times each trial has been presented, and the # of times each trial has been successfully completed without loss of fixation.

    • Modified data trace display to draw up to two thin vertical lines at selected time points in a trial. The locations of these display markers are determined by new trial parameters. On the trial definition form are two new spin controls for selecting one or two Display Mark segments. If set to a valid segment number, then a vertical line will be drawn at the start of that segment in the data trace display. This feature was intended to help users focus their attention on a specific portion of the trial's timeline. The display markers do not apply in Continuous mode.... This feature required a change in the Maestro experiment document. For documents existing prior to this version, the display mark segments #1 and #2 are both set to -1 (ie, "no marker") by default.

    • Introduced per-user registry entries that store the "most recently used" (MRU) directories for the Maestro log file, Trial mode data files, and Continuous mode data files. At startup, these MRU directory paths are retrieved from the registry to initialize the relevant path controls in the Message Log control bar and the Protocol dialog pages in the Trial and Continuous mode control panels. At shutdown, the current directories appearing in these controls are saved to the registry.


Version 1.2.3, released 07 Jul 2004

Introduced the "ignore" threshold feature in Trial mode as a means of distinguishing trials that the animal simply ignored from those that the animal genuinely attempted. Controls on the Trial mode control panel were rearranged somewhat to make room for several additional widgets related to this feature. The user enters the Ignore threshold time in milliseconds in the relevant numeric edit control. If a trial was aborted because the animal lost fixation, then the trial was "ignored" by the animal IF the trial's elapsed time was less than or equal to this threshold; else, it was "attempted". A threshold of 0 ms will treat all trials as "attempted"; this is the default, since it duplicates how Maestro worked prior to this change. The Attempted trial counter displays the number of genuinely "attempted" trials since the last time the counter was reset, while the new #Trials counter displays the total number of trials presented. The difference between these two counters should be the number of trials that were "ignored".


Version 1.2.2, released 03 May 2004 (rev 02 Jun)

    • The notoriously unhelpful Help menu was made only marginally more helpful. The static dialog box that pops up in response to the Help|About command now includes the current program version number and the HTTP address for this online user's guide. A new command, Help|Go to User's Guide, executes a shell command to open the user's guide home page using the system's default web browser. Note that the command will only work if the system has been properly configured with an available default browser.

    • A new "auto-stop" feature in Trial mode. The Protocol tab on the Trial mode control panel now includes an Auto-Stop control group that lets the user stop a trial sequence after a specified number of trials or trial blocks are successfully completed (exception: in the Ordered sequencer modes, the sequencer merely counts trial blocks presented, regardless of whether or not all trials in a block were completed successfully). A set of three mutually exclusive radio buttons either disables the feature or selects which count (#trials or #trial blocks), and two numeric edit controls specify the count values. Note that the #trial blocks criterion is applicable only in the Ordered and Randomized sequencer modes, since trial blocks are counted only in these modes. If the #blocks criterion is applied in any other modes, then it is assumed that a trial block consists of a single trial.

    • Miscellaneous "tweaks" and bug fixes:

        1. Added hot keys for switching operational modes: F9 = Idle mode, F10 = Trial mode, F11 = Continuous mode, and F12 = Test mode.

        2. Changed behavior of the numeric edit controls that specify the rotation values for the Target Position and Target Velocity transforms on the Other Params tab of the Trial mode control panel. We assume the following convention: Rotation angle is expressed in degrees counterclockwise from the rightward-pointing positive x-axis, which corresponds to zero degrees. All rotation angles may be expressed in the unit circle [0..360). Users may enter larger angles, or negative angles. However, when the entry is validated, it will always be mapped into the unit circle. Thus, for example, -45deg will be remapped to 315.

        3. Modified appearance of the tabs in the tab window that contains the different forms for editing a selected Maestro object. The selected tab is highlighted by using a different color in the text background and by using a bold font. An icon now appears on each tab to indicate the type of object edited on that tab page. Since the tab window does not support scrolling the tabs when their cumulative width exceeds the window's width, we made a number of changes to keep tab size to a minimum. Finally, the tabs were reordered so that the most frequently used forms are leftmost: Trial, Target, Run, Channels, and Perturbations.

        4. Changed the application icon.

        5. Minor change to eliminate use of absolute pathnames in the VSG 2/4 configuration file fbvsg.bar, making the Maestro installation that much more "relocatable".

        6. Modified operation of the Other Params tab of the Trial mode control panel so that the following controls are enabled when the sequencer is paused (in previous version, these were unnecessarily disabled, since the parameters do not affect the next trial selected in an ongoing sequence): Target Pos Scale and Rotate, Target Vel Scale and Rotate, and the Channel Configuration Override.

        7. Fixed some minor bugs in the animation of framebuffer video targets during a trial.


Version 1.2.1, released 10 Mar 2004

    • Added a "pause" feature in Trial mode. This allows the user to pause trial sequencing without resetting the sequencer. When the new Pause button is pressed on the Trial mode control panel, the trial in progress runs to completion, the button is relabeled Resume, and the trial sequencer is put in the paused state. While paused, the user can modify settings on the Fix/Reward and Video Display tabs, but not on the Protocol or Other Params tabs. Pressing the Resume button resumes trial sequencing from where it left off. While paused, the user can always choose to stop or abort the trial sequence.

    • V-only velocity stabilization was not working for a target on the XYScope, although the eye-target plot window indicated that the stabilization was in effect. FIXED.

    • Trial sequencer mode at startup now defaults to Randomized instead of Current Trial NOFIX.

    • State of docking controls bars did not get saved correctly if the user exited Maestro via the File|Exit menu command, because the command handler actually shut down cxdriver before saving the control bar state. FIXED.

    • Added controls for specifying a global Start Pos H,V in the Other Params tab of the Trial mode control panel. In previous versions, each participating target in the trial implicitly started at (0,0) deg. To have all targets start at another location, the user can simply enter the desired coordinates in these numeric edit controls. When Maestro starts up, the global starting position is always (0,0), so this new feature will not effect existing protocols. Of course, the initial starting position can be overridden for any participating target by setting its position absolutely (ABS vs. REL) in the first segment of the trial. On the flip side, if you want to take advantage of this new feature for any or all targets in a trial, make sure that the target position is set relatively in ALL segments! Also be aware that the global starting position does not get rotated and scaled in accordance with the target position transform specified on the Other Params tab. For example, if the global starting position is set to (x0,y0), the global Target Position Scale factor is 2, the Target Position Rotation is 0.0, and a target's position is set to (h0, 0.0) RELATIVE in segment 0, then that target will start the trial at (2*h0 + x0, y0). This feature has no effect on the Chair target -- which cannot handle instanteous position changes -- and stationary targets like REDLED1/2.

    • XYScope targets now move in Trial mode even when they're turned off. This change was required to implement the global Start Pos parameter. Otherwise, it would not work for XYScope targets that happened to be OFF in the first segment of a trial. This change also makes the behavior of XYScope targets in Trial mode consistent with the behavior of targets on other platforms, such as Fiber1 and Fiber2, which have always moved when turned off. It is a subtle change, however. Users should review their trial sets for any XYScope targets with nonzero motion parameters during a segment when the target is OFF. In this new version of Maestro, the trajectories of such targets will be different!

    • Miscellaneous "tweaks" and bug fixes:

        1. Numeric edit controls now accept entries like .5 and -.5. Users no longer have to enter a zero before the decimal point.

        2. When a single leaf object (a target, trial, stimulus run, channel configuration, or pertubation) in the Maestro document object tree is copied, the definition of the new object is immediately loaded into the appropriate form in the tab window to the right of the tree.

        3. Simplified scrolling on the Trial Form. In previous versions, the all-important segment table grid on this form sported scroll bars whenever the grid was not large enough to display all of its contents. Of course, the grid (including either or both of its scroll bars) could be partially obscured if the parent Trial Form was not large enough. The form itself will have one or both scroll bars visible in this case, only adding to the confusion. In an attempt to improve the user's experience with this form, we dynamically resize the grid control to ensure that it never has scroll bars. The user can then simply use the form's scroll bars as needed to scroll into view any portion of the segment grid that might be hidden in the current viewing situation.

        4. The tabs on the Trial Form now appear at the top rather than the bottom of the form.


Version 1.2.0, released 30 Dec 2003

    • Ordering of objects in the document tree. In previous versions of Maestro, the children under any given node in the object tree view were sorted alphabetically. As a consequence, the displayed order of trials in a given trial set did NOT reflect the order in which the trials would be run in the Ordered sequencer mode. This was an obvious problem, so alphabetical sorting was eliminated altogether. Now the order of objects in the tree reflect their actual order in the experiment document. Furthermore, you can use drag-and-drop to change the order of "sibling" objects under any node in the document tree.

    • Velocity stabilization during a trial. Maestro allows the user to stabilize the target designated as Fix1 on the eye during a single selected segment of the trial. In previous versions, both the horizontal and vertical components were stabilized. Starting with this version, the user can choose to stabilize only the H, only the V, or both components. A new pushbutton in the Special Features section of the Trial Form lets the user toggle among the three alternatives: H and V, H ONLY, or V ONLY.... The Snap to Eye? function works as usual.

    • Introduced another "modification mode" for editing trials: Modify Across Matching Trials in Set. Any change in a header parameter or a segment table parameter in the loaded trial is propagated across "matching" trials in the same trial set. That is, if the parameter P was changed from P0->P1, every trial for which the parameter P=P0 is likewise updated. Structural changes in the segment table grid (add/remove target, add/remove segment, etc) are only propagated for trials that have the same number of targets and segments as the loaded trial had PRIOR to the change. Similarly, structural changes in the perturbation list grid (add/remove/clear) are only propagated for trials that have the same number of perturbations as the loaded trial had PRIOR to the change.

    • Added keyboard accelerators for changing the modification mode on the Trial Form: Alt+0 = normal, Alt+1 = modify all segments of loaded trial, Alt+2 = modify matching segments of loaded trial, Alt+3 = modify across all trials in set, and Alt+4 = modify across matching trials in set. NOTE, however, that these accelerators do not work if the Trial Form window does not have the focus.

    • Marker pulses can now be delivered on ten different outputs of the event timer board: DO<10..1> instead of just DO<6..1>.

    • Integration of Maestro with the new Plexon system in rig room A. In both Trial and Continuous modes Maestro now provides some information for synchronizing with an external acquisition system like the Plexon.

        1. To do so, we introduce a new digital "latched" device on the timer's digital output bus, a "character writer" (dev address = 0x7) which will internally queue a series of 8-bit ASCII characters written to the device by Maestro (via data bits DO<7..0>) and retransmit them to external equipment with a simple "transmit-and-wait-for-not-busy" handshake protocol.

        2. Prior to starting a trial, Maestro writes a 'start' character code to the character writer device, followed by the null-terminated trial name and the null-terminated data file name. When recording starts (which may not be at the start of the trial), Maestro issues a record marker pulse on DO<11>, which is reserved solely for this purpose. Another pulse is issued when the recording ends. Why? By timestamping these pulses both in Maestro and on the Plexon, an offline analysis program will be able to convert between the two asynchronous acquisition timelines. Finally, a 'stop' character code is issued after the trial data file has been successfully saved; if it is not saved for whatever reason, an 'abort' character code is issued instead.

        3. A similar sequence brackets the recording of a data file in Continuous mode. The only difference: Before recording commences, the 'start' character is followed only by the data file name string, since there is no trial name to be reported.

    • Modification of the Opt Ctr w/ Noisy Dots target: The XYScope controller firmware now uses a second dedicated random-number generator to choose the random, per-frame offset directions for each dot in the target. This makes it feasible to reconstruct the set of directions for each dot during each frame of this target's motion. The initial seed for this dedicated random-number generator is the same as the one that seeds the main random-number generator used to create the random-dot patterns, etc. In the trial data file, a new field in the file header, dwXYSeed, stores the value of the seed to enable reconstruction of the set of directions for each dot during the trial.

    • The Maestro installation directory is no longer "hard-coded". Until this version, all program and configuration files had to be placed in the directory "d:\bin". Now, the installation files can be put in any directory, as long as the path name to that directory is stored in the following Windows registry entry: HKEY_LOCAL_MACHINE\SOFTWARE\HHMI-LisbergerLab\Maestro\Home. However, note that the framebuffer video configuration file (fbvsg.bar) must be modified because it includes full pathnames to VSG files (fbvsg.out and the .lut files) that are loaded at runtime. We hope to correct this shortcoming in a future version.

    • New feature in Test mode: writing the 16-bit DO word repeatedly to the timer board. A new push button appears on the Event Timer DIO tab of the Test mode control panel, labelled Repeat Write. Pressing this button engages a "repetitive write" function: approximately once a second, Maestro will clear the timer device's DO port, then write the current DO word to the port as reflected in the appropriate column of the timer DIO channel grid. Pressing the button again -- it's now labelled Exit Repeat -- will disengage the function. Resetting the timer or starting a loopback test will also disable the feature. The feature was added to provide a crude means of testing the timer's DI and DO ports.

    • BUG FIXES...

        1. Fixed the inplace edit control used to enter analog output values in the Analog I/O panel during Test mode. In previous versions it did not extinguish properly and was formatted incorrectly.

        2. If an inplace operation on the cell of a grid control (such as the segment table on the Trial Form) is ended by certain navigation keys (TAB, CTRL-arrow), a new inplace operation is automatically initiated on a nearby cell. Since the grids are generally on forms, it is possible that the parent form could obscure that nearby cell, confusing the user. Now, the form is scrolled so that the new cell is NOT obscured.

        3. The Data Traces window failed on trials the length of which was not divisible by 2. FIXED.

        4. In Continuous mode, the "computed" position/velocity of targets designated as Fix1 and Fix2 was actually reflecting the measured position as obtained from channels HTPOS, VTPOS, etc. FIXED.

        5. Discovered that, when the high-resolution spike waveform is also recorded during Continuous mode, the FIFO on the analog input device was not properly cleared when the recording stopped (it still contained some samples of the spike waveform channel). As a result, upon resuming data acquisition, the normal 16 analog channels were collected "out-of-frame" (ie, what Maestro "thought" was a sample from channel 0 was actually a sample from a different channel, etc.), which led to a lot of strange behaviors. FIXED. This bug was very serious, but fortunately it had not affected anyone because no one had yet used Maestro to record the high-resolution spike waveform!