Version 1.3

Version 1.3.4, released 02 Nov 2005

Introduced a new trial parameter, XYScope dot seed, in the General group box on the Trial Editor. This parameter lets you override the Video Display tab settings that control the XYScope random-dot pattern seed on a trial-by-trial basis. The default value is -1, which does not override the display settings. If it is 0, then the dot pattern seed will be randomly generated for each presentation of the trial; if positive, then its value is the fixed seed used on every presentation of the trial. Note: This feature addition required a format change in the Maestro experiment document. Documents saved under this version cannot be read by older versions of Maestro.


Version 1.3.3, released 20 Sep 2005

    • Slight modification to the decision algorithm for Staircase trial sequencing: Failure to respond to a staircase trial is no longer treated the same as an incorrect response; instead, the trial is repeated.

    • Velocity stabilization ("open loop") is now permitted for all XYScope target types except Opt Center w/Finite Dotlife, Opt Ctr w/ Noisy Dots, and Optical Flow Field. In addition, both window and pattern trajectories of the XYScope target are adjusted; in previous versions, only the window trajectory was adjusted.

    • The Pos Offset H,V parameters on the Stimulus Run Editor are now implemented for the Fiber1 and Fiber2 stimulus channels; they are not relevant to any of the other supported stimulus channel types. The offsets are applied at the beginning of the stimulus run only, not at the beginning of each duty period.

    • Bug fixed: If a particular shadow file move operation failed, the shadow file queue would not "restart", and all further writes across a mapped network drive occurred on the primary GUI thread.


Version 1.3.2, released 18 Aug 2005 (rev 25 Aug)

    • Modifications to the uniform noise perturbation. Added the "seed" parameter to its definition. If the seed is 0, then Maestro generates a new seed each time the perturbation is used in a trial. Otherwise, the (fixed) seed value is used always... Implemented a new algorithm for generating the uniformly distributed noise, borrowing from Numerical Recipes. The algorithmic details will be included in the user's guide. These changes were necessary to make it possible for readcxdata() to reproduce perturbation waveforms after the fact.

    • Implemented a new perturbation object type: gaussian noise. This has the same parameters as the uniform noise perturbation, but offers a Gaussian distribution with zero mean and unit variance. Again, we borrow an algorithm from Numerical Recipes.

    • One can now modulate the target window direction or the target pattern direction with a perturbation waveform during a trial. Simply add the desired perturbation to the trial's perturbation table and choose winDir or patDir as the Affected component. If P(t) is the value of the unit amplitude perturbation at trial time t, then selecting winDir [patDir] will rotate the nominal target window [pattern] velocity vector at time t by G*P(t) degrees, where G is the relevant Gain value specified in the trial's perturbation table.

    • Readcxdata() modified to process perturbation-related trial codes in a Maestro data file and compute the expected trajectories of any perturbed targets. The program can only do so for data files generated by this or later Maestro versions.

    • Dedicated channel AI<11> to represent the vertical eye position (VEPOS2) of the special-purpose "second" eye (locus Eye2 on the Eye-Target Position panel). AI<14> is already dedicated to HGPOS2.

    • When writing data files to a mapped network drive (capability reintroduced in v1.3.1), users occasionally experienced an unpleasantly long "freeze" because it took a long time to move the shadow file to its remote location (sometimes 10sec or more!). To address this problem, Maestro now queues shadow file operations and dispatches them in a background thread. The queue can grow as large as 100 "jobs" in size, after which Maestro disables the queue. Hopefully, this fix will help Maestro weather the occasional network delays without freezing between trials...

    • [rev 8/25/05] Bugs fixed: a) On the segment table in the Trial Editor, turning ON the Check response? flag in one segment turned it on for all segments; after which the flag could not be turned OFF in any segment. b) Maestro crashed immediately upon attempting to start a trial sequence in Staircase mode. c) The N-up, M-down decision algorithm during Staircase sequencing did not appear to be working correctly. d) Again during Staircase sequencing, Maestro counted the failure to depress the "correct" pushbutton as a "correct" response.


Version 1.3.1, released 17 Jun 2005 (rev 11 Jul)

    • Introduced a new feature in Continuous mode: a "cursor tracking" target. A designated target in the active target list will "follow" the mouse cursor whenever it is inside the Eye-Target Position panel (with fixation ON). To initiate tracking, add the desired target to the active list in the Active Targets dialog page, turn it on, and set its Usage designation to Track. Make sure the Track symbol is enabled in the Eye-Target Position panel. Then, as you move the cursor across this panel, the chosen target should roughly follow the cursor. The Track target's position is updated every ~100 ms at best. Any target that can appear in the active list may be designated as the cursor tracking target.... Revised 7/11/05: Track target now updated every ~20ms at best.

    • Added a keyboard shortcut for toggling fixation on/off in Continuous mode: simply press Ctrl-space. I may change this shortcut in a future version, since I just discovered that pressing the spacebar alone will "click" whatever pushbutton has the keyboard focus.

    • Added support for writing data files to a mapped network drive. This feature broke when I upgraded the RTX SDK to version 5.1.1; RTX no longer supports file I/O across a remote drive. To get around this limitation, Maestro instructs its RTX-based hardware controller, cxdriver, to write the data to a "shadow file" on the local disk. After cxdriver closes the file, Maestro can move the local shadow file to its intended destination on the mapped network drive. Shadow files are put in the directory $home\shadow\$user\$date, where $home is the Maestro installation directory on the local disk, $user is the login name of the current user, and $date is the date when Maestro started up. If Maestro is unable to move a shadow file at any time, that file is left in the shadow directory so the user can recover it. If no such error occurs, Maestro will attempt to remove the shadow directory $home\shadow\$user when it exits.

    • Minor changes to the appearance of the Spike Histograms panel: Minimum height of the histograms can now be as low as 10Hz (was 50); height in pixels is still fixed at 100. A small tick mark now appears along the baseline of each histogram. This marks the end of the prolog and the beginning of the actual tagged section.

    • Miscellaneous bug fixes: a) Fixed possible multithreaded bug in Continuous mode that could cause Maestro to get out of synch with its hardware controller. b) Fixed bug that caused Maestro to crash when double-clicking on a Target cell in the Trial Editor's perturbations table. c) When #Cycles to Auto-Stop is set to 0 in a stimulus run's definition, that stimulus run should cycle indefinitely in Continuous mode; instead, the run stopped after a single duty cycle... Fixed.

    • For Plexon integration: After Maestro delivers a reward, it writes a "reward delivered" character code (ASCII 0x05) to the character writer device, followed by the adjustable reward pulse length in ms as a null-terminated string.


Version 1.3.0, released 05 May 2005

    • Introduced another data display panel, the Spike Histograms panel. Its purpose is to display spike time histograms -- based on events detected on the event timer's DI0 channel only! -- for any intra-trial tagged sections. The panel is active only in Trial mode, and only when the trial set sequenced includes trials containing tagged sections. At the beginning of a trial sequence, Maestro examines all trials in the set in search of any tagged sections and sets up the Spike Histograms panel accordingly. During sequencing, Maestro consumes event timestamp data (1ms resolution) and builds up histogram data for each tagged section found. Each time a trial completes successfully, the panel is updated, so the user sees the histograms evolve over time; event data from unsuccessful trials are ignored. The section histograms are displayed in a single vertical column, so it is best to make the panel long and narrow. Pseudo scroll buttons in the upper right-hand corner allow the user to scroll the display up and down if there are too many histograms to display in the available space. Each section histogram includes a 50ms "prolog" and a 150ms "epilog". The height of each histogram is fixed at 100 pixels, and the bin size is adjusted as necessary so that the longest section histogram fits in the width of the panel. All histograms are normalized to the max firing rate (in Hz) observed over all sections. The current max firing rate and bin size are reported in a text line at the top of the display.

    • In support of the new intra-trial tagged sections feature, developed a Matlab M-function that processes a set of Maestro trial data files and generates histogram data for any tagged sections culled from those files. The function is called buildsectionhist(), and it relies on the MEX function readcxdata() to read in and parse the data files.

    • In Trial mode, the Data Traces display can now be made to show only one portion of a trial. To do so, load the trial into the Trial Editor and set the segments bounding the Display Interval. Given segment indices 0 <= segA <= segB, the display interval [t0..t1] will encompass the segment range [segA..segB]. If either segment index is -1, then the entire trial will be displayed. Note that this feature REPLACES the Display Mark Segs feature, in which a vertical white line on the Data Traces display marked the beginning of each valid mark segment.

    • Technical modifications to how operational state is maintained in Continuous mode, in an attempt to ensure that Maestro and its driver-level process do not get "out of synch".

    • The Weight spin control on the Trial Editor now has an editable buddy window -- so the user can enter the trial weight as any integer in [0..255], or use the accompanying spin control to increment or decrement the weight via a mouse click.