IMPORTANT: this version involves major changes to comment directives throughout the code -- if you are doing a Build From Source then it is ESSENTIAL to start from a completely clean build -- remove your build directory and do a fresh configure (doing a "clean" inside xcode does not work, for example) -- easiest way is:
./reconfigure <build_dir> clean
- Major cleanup of ControlPanel and ParamSet code, and important new functionality to support a ParamSet_Group of ParamSet objects to be used as an alternative to the "ConfigTable" pattern established in LeabraFlex project. The key idea is to allow users to activate and save different sets of parameters as alternative configurations to run. These can be used within single Programs as well, e.g., for a program that renders a complex environment -- very handy for managing sensible collections of parameters. ParamSet's allow direct access to the relevant variables, and obviate need for something like a "StdGlobalsInit" program to read all the data table values into variables that can be used. There is now a Master / Clone relationship between ParamSet's within a group, such that all changes to the first ParamSet (the Master) are automatically made to all the remaining Clones within the Group, making it easier to update and maintain a consistent set of parameters over time. See LeabraFlex for more documentation and that project template for a working example.
- Parameters or variables that are in a control panel or param set are now highlighted in the Editor property panels, and have a context menu option that will take you directly to the control panel / param set that it is in.
- Each parameter / variable can have different states, representing how actively they are being explored (EXPLORE, STABLE, LOCKED, INACTIVE, SEARCH). EXPLORE params automatically update the parameter "live" and are recorded in a ClusterRun run (along with SEARCH).
- There are two top-level groups of ParamSets: active_params and archived_params -- active are organized by groups and subgroups and should be used for all the configurations, while you can press the
Archivebutton on any ParamSet or ControlPanel to add a copy of it to the archived params, which is kept in a single flat chronological order (newest at the top). Archived params are "offline" -- not shown as options for adding params into, etc
- Diff Compare completely re-written -- much more robust and reliably works on entire Project files -- and generates Patches that can be shared via the Patch Library -- this is a very effective way to automatically update a given project based on changes made in other projects!
- Layer relative positioning of layers using pos_rel field -- automatically repositions as layers change size, etc -- and works for both 3D and 2D displays -- strongly recommended to use, and activated by default with ABOVE positioning for new layers in network. You can drop one layer on the other to quickly set relative positions between the two layers. (Also added drag-n-drop based connecting to layers).
- Lots of under-the-hood optimization and cleanup, resulting in significantly faster loading times, and smaller save files.
- Double-click in a Visualizer display to zoom to that location.
- Program updates:
- variables (ProgVar) that point to objects now have an object_scope field that can be set to a Group or any other object that "scopes" (contains all members of) the objects that are allowed to be chosen for this variable. Very convenient e.g., for new ParamSet options to scope to containing Group, and also likely to be useful for DataTable pointers as there can typically be many such tables in a project, and finding the right one can be difficult sometimes.
- moved the variables that point to the objects in objs out of the main vars list and into a separate objs_vars list — much cleaner — can keep the objs_vars list collapsed typically, and generally don’t need to think about them.
- changed default of OBJS_UPDT_GUI to ON instead of OFF, and added SetGuiUpdt function in Program_Group to change state of existing project en-masse -- in general this is often more trouble than it is worth, causing weird, hard-to-diagnose behavior. If you have a program that is running much slower with this ON, then turn it OFF, but otherwise, probably safer to have it ON.
- Connection dwt variable now has #AUTO_SCALE option to automatically turn on NetView auto scaling -- makes it immediately possible to see typically small weight change values.
- GridView finally has column-specific auto-scaling option.
- GraphView -- when you click the fixed min / max buttons it uses the current min /max in effect for either the main or alt Y axis (instead of the min/max for that particular data column) -- this makes it very quick to establish a common min/max across a set of related columns -- just setup the first one and then click down the rest to copy that one.
- Enumerated types ("combo box selectors") have up/down arrows for fast selection without a menu -- efficient for small sets of options such as the state of ParamSet items.
- Updated LeabraFlex template so that interactive runs from MasterTrain save log and weight files with appropriate tags -- very convenient for interactive runs and comparing with prior runs etc -- don't always need to run cluster run! To update existing projects use the
LeabraFlex_v807_to_v810_loggingPatch Library patch.
- Child spec fields are now read-only if they aren't overriding the parent spec and they remember their values so clicking the override checkbox sets the value to what it was before unchecking override checkbox.
- In "Chooser" dialogs you can narrow search to a specific column by using the column name or column number (zero based) -- e.g. name:trial or 0:trial, type:table or 1:table
Notable Bugs Fixed
See the changelog list above for full listing..
- All known cases where the Navigator tree view showed duplicate entries
- Matrix access using bare : colon notation to get the full range of items within a dimension was actually returning n-1 items!
- Crashes when deleting Layers and Layer groups -- there is actually a Qt GUI toolkit bug causing this, which is not yet fixed, but we were able to mitigate it -- can still happen but much less likely.. Only affects Mac.