Changes 5.0.0

From emergent
Jump to: navigation, search

Back to ChangeLog


Important Migration Steps

  • existing projects must be updated due to a change in the FindColName function args (fairly rare usage probably):
    • do Find From Here.. on the project object (context menu in left tree browser), and enter FindColName
    • if there was a 3rd argument to the function call, to obtain the index of the column, then you need to do a separate call to FindColNameIdx which returns the index.
  • for any Leabra PBWM or PVLV models, you should re-run the wizard to update to the latest version of that code, which works significantly better on many test projects. if you have a complex model that the wizard might not grok, then you will at least have to change the type of the PVr con spec to actually be a PVrConSpec type instead of PVConSpec (which was a bug in earlier version) -- just drill down under specs/PFC_BG_Cons/LearnCons/PVi/PVr (or search for PVr under the network obj) and do ChangeMyType to PVrConSpec, then do Build on the network.
  • for Virtual Environment projects, the VEJoint motor and stop flags have been moved to the motor and stop fields instead of being global, so you will need to update those manually for any existing projects.
  • projects using Leabra TwoDValLayerSpec's: these have been re-written to store the x,y values in a separate Matrix data structure on the Layer itself, instead of using the first row of units -- this greatly simplifies the use of these layers with topographic connectivity schemes. You will recv an err message on Init about the layer needing to be a TwoDValLeabraLayer -- for each such layer, do Object/ChangeMyType and select that type. You must first do RemoveUnits on the Network -- you will be prompted about this -- if you don't do that it will take FOREVER. Also, don't forget to change the un_geom.y to be 1 less given that the extra row is no longer being used. The apply inputs programs will work as before, but any script access of the data will need to be updated to use the layer->GetTwoDVal function (or SetTwoDVal) -- strongly recommend making this a separate MethodCall so you can fill in the args with prompts, to get the enum's right.
  • New minimal requirements if building from source: Qt 4.5.2, Quarter 1.0.1a (from Coin3d), No longer needed: SoQt, simage.

New Features

Major Features

  • Undo and Redo in the GUI! works pretty much just like you'd expect from other software, including a new parameter for undo_depth (100 is default -- uses diff's so memory usage is minimal).
  • Parallel Threading support -- uses multiple processors in parallel to compute faster (in principle): see Thread Params for more information -- unless you happen to have the new Nehalem i7 chips, earlier generations of processors are not likely to result in much speedup -- about 15-20%. However, with the dedicated memory managers in the i7's, you can get ~2x for 2 cores, ~3x for 4 cores, and not too much above that (3.5 or so for 6 cores).
  • Leabra code completely rewritten to be fully sender-based, which results in a 30-70% performance boost, and is essential for the above-noted threading speedups on the i7 processors. Backprop is naturally receiver-based and already gets the above speedups on i7's.
  • css optimized in several ways, resulting in a 2x speedup.
  • Doc objects now have Qt WebKit web browser functionality, with optimizations to support shared wiki-based docs within projects, making it easier to share a common set of documents across a set of related projects, and for collaborative projects more generally. You can also read the news or check email or facebook entirely within emergent, if that turns you on. Important: there is a known bug in the Qt WebKit cookies that causes problems for editing wiki pages: if your "Save page" or "Show preview" seems to hang, just hit the X to stop it, and then click the button a second time. It should then go through (may need to do a Go click to get it to actually show up).
  • New Help Browser for help information, which provides an integrated interface to both wiki and auto-generated help information from the source code. The wiki information is rendered in the native web browser. Help buttons are now avail on every edit dialog, in the context menu for every member of an object, and for token pointers ('?' button) -- please get in the habit of using this and also editing the help text while there to improve things for everyone! The auto-generated "reference information" from the source code is now much more comprehensive and easier to use -- based on the doxygen format that is widely used (e.g., Qt, Coin). The help browser can also show you the source code for all functions available to you in the software.
  • added gui and other support for Layer_Groups -- these are very useful for managing networks with multiple functional subregions, e.g., large-scale brain models with multiple brain areas represented.
  • The 3D View now can save 6 different views (buttons on bottom) -- very convenient for large networks or views with multiple elements. Use context menu or hold down button to save or name the view -- click otherwise takes you to the view. The most frequently used network variables are also now selectable for viewing in the upper left of the display, and it also automatically selects "interact" mode when you select a connection-level item that requires selecting a unit.
  • Can click to view or set values in the Grid View -- useful for drawing new training patterns. In the grid view control panel, the Click Vals button determines if clicking will set values, and the values that will be set depend on the button used, and can be set here too.

Minor Features

  • Multi-selected objects now have many more useful context menu options, e.g., set multiple selected layers to use the same layer or unit spec, or set multiple selected program variables to all be in the control panel or not, etc.. Selecting multiple items and then clicking delete now deletes all of them.
  • taMisc::FullArgStringToFile -- saves startup args to a file -- now included in standard LeabraStartup script -- very handy for going back and finding out what args were passed to a given simulation run.
  • Network Monitors can now monitor values in UserData by using "user_data.<key>" (for simple values) or "user_data.key.xxx" (for complex subobjects) -- note that the specified UserData must already exist when you initialize the Monitor, otherwise an error occurs
  • --nowin startup argument causes GUI to be initialized but no windows open (as in --nogui) -- allows for offscreen rendering in the virtual environment when running background batch jobs.
  • DataTables now have a more powerful and bug-free data import/export menu, including support for importing fixed width text using the FixedWidthSpec object.
  • Program elements have VERBOSE flag which prints out useful info when that program element runs -- very helpful for debugging.
  • Virtual Environment now has built-in support for simple servo motor control on joints, and also some sophisticated virtual muscles based on detailed physiological models (within the general equilibrium point control framework).
  • The web browser can now play flash movies. This is designed for screencasts that demonstrate how to use emergent which can be played from within emergent itself using the browser that you see in the root view when you open it. A few of these screencasts have already been created. See Tutorials.
  • Splitters on all windows can be double-clicked to toggle collapse/expand of corresponding panel -- very convenient for quickly focusing in on a given task (e.g., programming when you don't need 3d viewer)

Major Bug Fixes

  • the Virtual Environment (ODE) system was not properly using the long_axis parameter for cylinders and capsules -- even though they looked right in the graphical display, the underlying physics was wrong (they were always oriented along the Z axis), which explains a lot of weird collision behavior.. also, it was not properly updating various shape parameters when you changed them, even after Init (SetValsToODE). Now it is a bit more dynamic, with the gui updating immediately and the Init button setting everything, and it also includes a Reset button for a *full* guaranteed reset, which is useful after numerical errors crop up, etc. Various other minor bugs fixed.

Regression Bug Fixes

  • in Windows, the ScalarValueLayer had stopped working -- this has been fixed
  • Fixed linking against Termcap on Fedora by applying Florian Lengyel's patch. (autotools -> cmake regression)