Latest on the software

From Bcontrol
Revision as of 03:28, 16 March 2009 by CarlosBrody (talk | contribs) (SessionModel)

Please sign changes to this page, so people know who to contact if they have a question.

To sign your edit, put in four tildes, like this: ~~~~

There is project management software for bcontrol. Please use that site to report bugs, ask for enhancements, etc. This site is to be used for documentation, while the project management software, trac, should be used for all other aspects of the code development.

We haven't been at all diligent about adding documentation here for new features. I'll try to start, but it may be some time until features added further in the past are documented here.
Sebastien 21:17, 1 September 2008 (EDT)


  • SoloParamHandle/end.m
Defined 'end' for SoloParamHandles. SO if value(foo) = [3 2 4], foo(end)=4;
Before this fix, foo(end) would return 3, because end would check the length of foo, which is a 1x1 SoloParamHandle and then you would end up with foo(1).
Jerlich 02:59, 7 August 2007 (EDT)
  • load_ / save_ solo(ui)paramvalues
Added support for fetching the location of the protocol settings and data via the Settings object.
Jerlich 02:59, 7 August 2007 (EDT)
  • load_solouiparams
Added an 'Interactive' option, much like the one in save_solouiparams, which will load the most recent settings for a rat without any user interaction.
Jerlich 04:37, 29 June 2007 (EDT)
  • SoloFunctionAddAllVars
This is a wrapper for SoloFunctionAddVars, which gives another function permissions on all SoloParams owned by the calling function.
Jerlich 14:33, 25 June 2007 (EDT)
  • sp_who.m
Find who owns and has access to SoloParamHandles.
Given a SoloParamHandle, sp_who prints to command line who owns it and who has access to it.
Can also be given search parameters: e.g., sp_who('name', 'gee') will report on all SoloParamHandles whose name contains the string 'gee'. For allowable search paramteres, do "help get_sphandle".
CarlosBrody 11:15, 1 June 2007 (EDT)


Sebastien 20:51, 1 September 2008 (EDT)
Sebastien 20:51, 1 September 2008 (EDT)
CarlosBrody 19:10, 1 September 2007 (EDT)
CarlosBrody 01:22, 20 August 2007 (EDT)
Sebastien 10:16, 31 July 2007 (EDT)
  • Newstartup cleaned up and adjusted for backward compatibility
Sebastien 10:16, 31 July 2007 (EDT)
  • Script Hooks
Use the AUX_SCRIPTS group of settings in Settings/Settings_Custom.conf to specify any scripts you have written and want to run when Run (or End) is pressed in Dispatcher or RunRats - for example, for video recording.
Sebastien 09:27, 31 July 2007 (EDT)
The Calibration_WaterDelivery protocol should be selected from the Dispatcher protocol menu to calibrate water delivery and store calibration information locally.
Sebastien 09:27, 31 July 2007 (EDT)
  • Settings
Interface for global BControl settings.
Startup Guide#First-Run_Configuration for tips on modifying settings.
BControl Settings Interface for tips on employing the global settings system in (protocol, plugin, etc.) code.
Sebastien 09:27, 31 July 2007 (EDT)
  • PokesplotDemo protocol
A very simple dispatcher protocol, basically just demonstrates the pokesplot plugin. Protocols/@PokesplotDemo/
CarlosBrody 13:59, 1 June 2007 (EDT)


  • Manual Test Skipping. The setting [RUNRATS;skip_manual_test;1] will result in the RunRats manual test being skipped. (Useful for laptops, etc.)
Sebastien 20:51, 1 September 2008 (EDT)


Added a plugin that makes sending data to a MySQL database really easy.
Jerlich December 2007
Added a plugin that makes a GUI to define a soft poke stay (requiring the animal to keep its nose in a poke while allowing exits of less than some grace period), and allows incorporating that soft poke stay into the state machine code with a single call that adds all the relevant states.
CarlosBrody 00:23, 10 December 2007 (EST)
Added a plugin that makes a GUI to define a punishment (sounds, timeouts, etc), and allows incorporating that punishment into the state machine code with a single call that adds all the relevant states.
CarlosBrody 20:39, 11 November 2007 (EST)
Added a simple plugin that makes a text box into which day-by-day comments are easily entered and stored.
CarlosBrody 01:07, 10 November 2007 (EST)
Added 'set' and 'get' methods, so that modifying parameters of @soundui sounds can be easily done from the command line or from a running program, not just the GUI.
CarlosBrody 23:06, 2 September 2007 (EDT)
Added "streaks" code-- getting increasingly more water for longer streaks of consecutive correct trials.
Jerlich 31 August 2007 (EDT)
New plugin to add GUI elements for a random variable, from a chosen distribution type.
CarlosBrody 00:01, 29 August 2007 (EDT)
All good: Displaying on physical rigs, displaying data from physical rigs, and save/load functionality all work fine.
CarlosBrody 00:43, 12 August 2007 (EDT)
Added flag to use the RT SoundServer's capability to loop sounds indefinitely, until explicitly stopped. See this plugin's documentation. Indefinite repeat is not supported in the software state machine emulator
CarlosBrody 17:43, 11 August 2007 (EDT)
Added autosave functionality, to make it easy to automatically save every few trials and thus prevent data from getting lost if something crashes. See 'autosave_data' in the saveload documentation.
CarlosBrody 17:34, 11 August 2007 (EDT)
New plugin to more easily add sounds to protocols.
Jerlich 14:17, 17 July 2007 (EDT)
Modified the plugin to support the new directory structure for settings and data, which includes the experimenter name.
Jerlich 14:32, 25 June 2007 (EDT)
Documented this plugin, both on wiki and in Matlab help file.
CarlosBrody 20:51, 23 June 2007 (EDT)
Documented this plugin, both on wiki and in Matlab help file.
CarlosBrody 19:26, 23 June 2007 (EDT)
Software should be fully documented. For help, see the "SessionModel" wiki page.
Shraddha Pai 19:24, 18 June 2007 (EDT)
Added complete documentation to the antibias plugin. For help, "help @antibias/AntibiasSection." This plugin does not take any information in through SoloParamHandles, it is all parameters in on the function calls made to it, and returns out.
CarlosBrody 14:14, 2 June 2007 (EDT)


  • Helper Vars now work-- a very handy way to add SoloParamHandles (saved with Data and Settings) to a protocol without having to rewrite the protocol.
CarlosBrody 00:48, 1 December 2008 (EST)

  • Comments in SessionModel. Using comment lines in the text strings of SessionModel now works. To use them, set the new button at the bottom of the SessionModel window, just below the "Stage-specific Component" label to "new-style parsing". This means that separate lines in the Stage Algorithm, Completion String, and End-Of-Day logic are now recognized as separate lines. Line whose first non-whitespace character is "%" are treated as comments and ignored. To complete a statement across separate lines, use ellipses "...".
CarlosBrody 23:28, 15 March 2009 (EDT)

RTLSM Linux-side code and @RTLSM (Matlab object) methods

  • A patched fsm.c file is available from the Brody lab that results in _Out events occurring even when scheduled waves are untriggered before the end of their sustain period. Without this patch, if scheduled waves are untriggered by state transition (to a state whose outputs include e.g. {'SchedWaveTrig','-schedwavename'}) before the end of their sustain periods, no _Out event would be visible in the output from GetEvents. This is not critical. This adjustment is mirrored in the emulator code (SoftSMMarkII), where it is standard and requires no patch.
Sebastien 20:51, 1 September 2008 (EDT)
  • Getting the RTLinux-side source code
Calin's repository appears to be awol. To get the source code of 15-Aug-07, click here
CarlosBrody 16:52, 15 August 2007 (EDT)

Currently (25 Jan 2007) Calin is maintaining the Linux-side code and runs the repository for it. To obtain the latest code, follow the instructions here.

  • GetTimeEventsAndState.m
This function is not for the user-level, but is intended internally for Dispatcher (and, if desired, the old RPBox.m) to run their update calls faster.
@RTLSM/GetTimeEventsAndState.m returns, from a single call to the Linux RTLSM kernel, the following four things: (1) current Time, according to the RTLSM; (2) current State the RTLSM is in; (3) current RTLSM Event counter; (4) matrix of latest Events. This combo call replaces the four separate calls that used to be made, one for each of those things. Since each call to the RTLSM kernel takes about 40 ms, useing the old 4 calls took 160 ms; the combo reduces that by 120 ms. The returns are in RTLSM numeric format, not in the disassembled format that Dispatcher reports to users.
CarlosBrody 13:11, 15 June 2007 (EDT)
  • ForceState.m
When ForceState.m tries to force the FSM to a state that doesn't exist, the FSM returns an error. (This makes sense). This error was handled by RTLSM as an error and it would crash dispatcher. I changed the function to throw a warning instead of an error. So the user will still see the error returned by the FSM server, but the code will continue to run on the matlab end. [Is this desirable or should this be changed in dispatcher?]
Jerlich 14:47, 15 June 2007 (EDT)

RTLSM Matlab-side: StateMachineAssembler and disassembler


bdata is a wrapper function for accessing a mysql database that contains bcontrol data.
Jerlich December 2007


  • Scheduled waves will generate _Out events when untriggered during the sustain period now. This mirrors the same change to the realtime server code, fsm.c.
Sebastien 20:51, 1 September 2008 (EDT)


Sebastien 20:51, 1 September 2008 (EDT)
  • contact_experimenter, a function in Utility/Zut, will send you an email by checking an address table. This is only available to the Brody Lab. :P
Sebastien 20:51, 1 September 2008 (EDT)
  • General settings subsystem
BControl Settings Interface#SettingsObject
A simple class for reading and storing settings files.
Sebastien 09:27, 31 July 2007 (EDT)
lunghaotai, 5 December 2007 (EDT)