Emergent Changelog

What's new in Emergent 8.5.0 Build 11320

Jan 9, 2018
  • MAJOR CHANGES:
  • Lesion -- support for lesioning of different levels of the network has been improved significantly -- there were likely bugs in previous versions.
  • State Separation -- The computational State (and functions to operate on it) are now fully separated from the Main gui / type-access enabled objects -- this enables GPU to run on the same code base, and also resulted in significant speedups for threaded CPU performance as well. IMPORTANT user-visible effects of this change:
  • cannot change which spec a given object is using after the network has been built -- instead use ParamSets and update parameters of existing specs -- see stroop.proj in CCN Text for an example of this.
  • Unit access routines have changed.
  • MINOR CHANGES:
  • Net State Display -- The current value of variables such as epoch, trial, sse, trial_name, etc are now displayed above the network view rather than an in the network view itself. The "Net Text" checkbox in the Net View control (middle panel) still controls whether the values are displayed. And now you can easily choose the variables you want displayed -- use the "Net State Values" tab in the Net View control panel to choose the variables you want displayed and to set the width of the field.
  • Network Monitor -- The Network now has a dedicated Monitor object. Any built-in or computed variables added to this monitor are displayable above the Net View display along with the standard network variables.
  • The Constraint Satisfaction (Cs) and Self Organizing (So) specific algorithms have not yet been ported over to the new State Separation framework, and are thus not currently available. Use the 7.1 LTS support for running these projects in the meantime.
  • Mac updated to use HomeBrew for installing most dependencies, and using latest Qt LTS version (5.9.3), but with WebKit from https://github.com/annulen/webkit instead of the default WebEngine due to a bug on crashing with the latter. This means you need to use webkit arg to configure script when building -- see Build Mac.
  • Misc gui changes:
  • Edit Dialogs use smaller fixed-width fields for entering float and int numbers -- default width configurable in expert Preferences.
  • Duplicating multiple items now keeps them in order
  • Selecting different tabs in the Editor no longer scrolls the Navigator to show that selection (items are still selected in the navigator)
  • Leabra changes:
  • A new form of adaptation has been introduced, replacing the previous version from AdEx -- this new version is based on sodium-activated potassium (K_Na) channels that have multiple time constants and are argued to be the main form of adaptation present in cortex.
  • The rate-code equivalent of spiking activation (act_eq) is now computed by averaging spiking intervals, producing a much more accurate online measure.
  • wt_bal weight balance dynamics have been updated with a new parameter that excludes the lowest weights -- works better.
  • Noisy XX1 rate-code activation function now uses a computed function instead of a lookup table -- and new vm_act_thr param removes small oscillations when activation goes back down after unit has been active.
  • Various tau time constants tested and comments updated with cases when they can be lengthened to deal with oscillations -- in particular LeabraLayerSpec inhib.fb_tau can be lengthened to 3.0 instead of 1.4 if there are oscillations with stronger inhibition cases.
  • SIGNIFICANT BUG FIXES:
  • Major speedup in gui while Programs are running: a Qt timer call was eating huge amounts of time -- switched to much faster timer call.
  • Keyboard shortcuts changed by the user were not getting saved across sessions, now fixed.

New in Emergent 7.0.1 Build 7464 (Sep 3, 2014)

  • Changes:
  • Can click on units in NetView using red arrow, when viewing variables other than weights, and get the variable value in the caption.
  • Saving now includes saving of panel "Pin State" -- use Pin/Unpin options from context menu on middle panel tabs to change this state.
  • Object Diff/Compare is now accessible from the Tools menu.
  • Better naming of duplicated objects (e.g. duplicating MyProgram creates a copy called MyProgram_copy).
  • Addition of 'Step' icon to application toolbar -- same as hitting the last Step button again -- only works if you have done Step previously
  • The application toolbar now includes icons and labels for all actions. The default is to show the icon and the text. In preferences you can change to text only or icon only.
  • Graph now plots * for out-of-range values instead of just not plotting anything at all.
  • Set Color Scheme and Set Color Scheme -- All Views now avail as menu items on the 3D view panel menu -- context menu on the tabs -- easy way to update the background color -- new default color scheme in 7.0.1 is black text on white background, but existing projects load with whatever they were saved with..
  • Bug Fixes:
  • Setting a breakpoint after pausing a program would present a warning and re-init the program
  • Initializing values in a data table column would result in a crash if you previously initialized a String type column
  • Setting values in a GridView was crashing -- turns out it was using a temp matrix -- probably caused other crashes too.

New in Emergent 7.0.0 Build 7374 (Jul 8, 2014)

  • Major Changes:
  • Major optimization efforts, resulting in up to about 75% speedup in some models! Technical docs in Vectorizing
  • Connection is no longer used for memory allocation in BaseCons (i.e., RecvCons and SendCons) -- instead, each connection variable, all of which must be a float type, is allocated in its own separate vector. This speeds up access. Also, the unit on the other side of the connection is no longer specified by a pointer -- instead an index into the full flat list of units is used -- this same index can be used to directly access other data including the temporary net input array. Any Program access of weights will need to be updated -- see Unit for details.
  • Use of SSE or SIMD (single instruction multiple data) vectorizing instructions built into all x86 chips -- leverages Agner Fog's vectorclass.h http://www.agner.org/optimize -- used for netin and some basic weight change operations in Leabra.
  • core vector math routines in taMath_float / taMath_double optimized by adding faster branch when no ElView is in place, and some SSE on very core vec_ routines.
  • optimized Matrix indexing routines -- you now need to specify FastElxd where x = dimensionality (1..6 or so) -- much faster for 2d, 3d etc than the generic routine.
  • optimized wraparound logic in taImageProc routines
  • Handy new StartupWizard in the startup root window -- presents most common actions of making a new project, loading a recent one, or loading an arbitrary project.
  • SVG (scalable vector graphics) output of NetView, GraphView, and GridView displays -- custom-written rendering function produces much better looking output than previous postscript rendering (which worked off of the very low-level scene graph data), with appropriate grouping to make subsequent editing etc very straightforward. This represents a dramatic improvement for producing publication-quality figures. Just select the SVG format from the Snapshot tool in the 3D Viewer.
  • New annotation graphics available for all 3D view displays T3Annotation -- there is a + menu on the right side of the 3D viewers, where you can manually add lines (w/ arrows), rectangles, text, or 3D objects, optionally positioning using the native units of the underlying display (e.g., the graphed data values in the GraphView, columns and rows in the GridView, or coordinates of units in the NetView). These are saved with the view. They can be positioned with the usual draggers, and operated upon en masse by choosing "edit all", then selecting and choosing operations from the context menu (translation, scaling, setting properties, etc). They replace the NetViewObjs which were specific to the network view and much more limited.
  • DistMatrixTable in taDataAnal uses the new annotations to make a nicely labeled graphical distance matrix, optionally with grouping of repeated labels -- a major improvement in usability of this important form of analysis.
  • The GraphView has a better way of dealing with matrix columns in a DataTable -- you now can pick a cell from the matrix to use, or enter a -1 to see all the cells (color coded according to the current color scale). This allows e.g., 3d matrix data to be plotted as a 3d plot, by selecting cell 0 for the x axis, cell 1 for the y axis, and cell 2 for the z axis. The old matrix grid plot can be selected by setting the graph type to MATRIX.
  • Bar graphs now use a solid 3d bar -- much better visually
  • Can now select arbitrary number of things to plot -- set NPlots value to change number avail -- increased to 16 by default.
  • Various font size and other spacing and layout parameters are now avail in the control panels for GraphView and GridView. For the 3d view tabs, you can select the "1st View Properties.." item from the context menu to get the full set of parameters for a view in a usual edit dialog format (a few are still hidden because there isn't room). You can access all other views from the new EditView button in the Panel Properties dialog. Also GridView click values now toggles between values.
  • Major improvements to Programs:
  • Program breakpoints now have a gui (the break_points list right under main .programs line in Project) that allows easy management for enabling and disabling breakpoints across all the programs, and there is a context menu option for global enable and disable across groups of programs. Also, breakpoints should set and clear with 100% reliability now -- several issues fixed.
  • The Program Editor panel is much improved for those used to a standard text-editor environment: you can just type directly into the editor (hit Ctrl+a (goto start), Ctrl+e (goto end), Ctrl+k (kill existing), F2, or, if the line is blank, just start typing to engage editing) and add to or modify the program completely textually -- everything will automatically be converted into the appropriate ProgEl program elements. This builds upon the previous ProgCode system -- new code is entered into a ProgCode, which then parses and converts it into the appropriate program element. There is an expert Preferences setting that allows you to hide the mini-program edit dialog at top of editor area by default, if you prefer to only operate in editor mode.
  • Loops and other container elements have been streamlined by hiding their explicit "code" list from the view.
  • The combined If-Else has been replaced with separate If, Else, and ElseIf elements -- if you want to add an else case to an if, you now have to do that as a separate step -- the advantage is that the display is cleaner without the true_code and false_code lists.
  • Any object with a name in any tree browser can be edited inline as well -- makes it easy to name new objects created by hitting Enter/Return in the browser.
  • New Program Examples project under Demos which contains a comprehensive set of code examples that you can run and copy/paste/modify in your own projects -- great way to learn the programming system. Also the AX Tutorial was completely updated and is (once again) a great way to learn about how to use many of the major features of the software.
  • No more ordering constraints on functions in a program -- any can call any other, regardless of order in list
  • the css Console window now has a lock / unlock toggle to dynamically switch between using it to monitor for error messages (where it is locked below the project window) vs. using it for larger viewing / interacting cases (any attempt to manually position or resize automatically goes into unlock mode, and it will remember the size when you toggle back and forth).
  • paths to objects that show up in the css Console are now clickable to take you right to the object in question -- makes it easier to go back and find what caused an error.
  • New program run status displayed in main application toolbar at top of window -- if a program is running or has stopped, it will show you where and why -- click for a full backtrace (GlobalTrace)
  • Lots of fixes to ClusterRun:
  • can now specify CRR: in a path to point to the cluster run results (CRR) directory, where e.g., weights files are saved -- when the project is running on the local workstation, this is mapped to the local svn cluster run repository -- when it is running on the cluster, it is the results directory where the the model is running -- allows one specification for where to find these files to work in either place. Also available: CRM: for models subdirectory (where the project is stored) and CR: for the parent cluster run directory for both results and models. ClusterRun path is also now automatically included in the file chooser dialog list of path shortcuts on left hand side.
  • now auto-updates after executing an action (Run, Kill, GetData, etc) -- you don't have to sit there and hit the Update button all the time! Also, the current svn revision is always shown in the button area at the bottom of the edit panel, so you don't need to keep looking at the css console for that information.
  • can select SET instead of SRCH for parameters -- simpler for manual parameter searching.
  • can copy files from other users or other project names -- easier for collaboration or trying out different variants w/ diff project names.
  • ClusterRun and ControlPanel (previously called SelectEdit) now use a "normal" edit panel with all the gui controls, as compared with the clunkier display that rendered mostly text and then the edit controls only for the currently-selected row. Also prevented excessive updating of the panel -- doesn't update while a program is running (except for variables and methods on programs) -- there is a running_updt flag to override this.
  • New SubversionBrowser, available from the Tools menu (for svn repositories defined in Preferences, and for emergent repository itself), and in the toolbar -- one click to checkin changes to the current project, or to open the browser in the current directory. Browser has all the basic functionality you'd expect, in a nice 3-pane structure with revision history, repository listing, and working directory listing.
  • Mac and Windows versions updated to Qt 5.2 -- provides better support for Mac Retina displays and fixes the keyboard focus bug on Mac.
  • New TA_BASEFUNS macros for the C++ classes, which greatly reduce the build dependencies, and the compile time. Important for any existing plugins: (see Plugins v7.0) -- you must add: TA_BASEFUNS_CTORS_DEFN(MyTypeName); to your .cpp files for any types in the .h files that have TA_BASEFUNS* in them, along with several other changes detailed in Plugins v7.0.
  • DataTable import/export
  • New - Import and export using JSON
  • Import of files using csv or whitespace now ignore extra spaces
  • Emergent Server_Protocol
  • The client now accepts commands in JSON format and the results are returned in JSON format
  • The implementation is column oriented (the native api is row oriented) so you can add/create new columns with this API
  • New Data menu - The data processing and analysis functionality previously hidden in the project tree has been moved to the application menubar. You will see a new menu labeled "Data" with 4 submenus. These processes allow you to modify and analyze data in data tables, create new tables based on data in existing tables, etc. All of these operations can also be done with program code.
  • the Find: tool at the bottom of every browser is now much faster and more robust -- also parses multi-word searches like google -- only finds items that fit the conjunction of all the terms. This can now be easily used for full browser searches, and complements the dialog-based find mechanism. Also, type in UpperCase letters and your search will automatically be case sensitive -- all lowercase is case insensitive.
  • Minor Changes:
  • String now has a split function that returns a String_Array, which can be iterated over using foreach -- also foreach will now iterate directly over chars in a string.
  • Array objects can now be converted into corresponding Matrix objects automatically, by using a cast operator: e.g., str_mat = String_Matrix("abc".split());
  • Can select the type of a new variable (and choose local/global) when prompted for it while programming in the Program Editor.
  • Object chooser dialog now allows you to create new items, if one you want is not avail (e.g., new specs, data tables, networks, etc)
  • Can now just press enter for e.g., LocalVars in a project, and it will add the first variable -- this is true for all such objects that have a "default child" list where sub-items automatically appear -- previously it was necessary to click a button to make the first item (after which point the Enter or Ctrl+I or Ctrl+O shortcuts would then work once you could put the cursor in the list of sub-items).
  • DataVarProg -- can now map between an enum and a Matrix data column -- uses a "localist" code of writing a 1 in the cell corresponding to the enum value.
  • In Network -- LayerPos_GridLayout_2d and 3d functions -- automatically arranges layers in an orderly grid, for both 2d and 3d views. Very handy for large models.
  • specs now have a SetParam function that can be used to set a given parameter for all specs in a group, including children.
  • VEBody and associated virtual environment code now has much better support for bodies defined relative to other bodies -- much better for constructing complex objects with multiple parts -- they all can be moved, rotated, etc just by moving the main "anchor" body.
  • Also fixed weird lighting discrepancies for VECamera -- cameras now see exactly what you see in view for lighting -- will require some fixes to existing projects that had things setup backward to accommodate previous bug.
  • Added support for shadows in virtual environment rendering -- see new params on VEWorld object.
  • LeabraLayerSpec has important new FF_FB inhibition type -- directly computes approximate feedforward and feedback inhibition based on average netin and average activity in layer or unit_group, respectively. Should be much closer to inhibitory interneuron inhibition, and gives much more natural "more is more" activation dynamics, where greater net input to the layer results in greater activation in general. Also eliminates pesky tie breaking issues. Extensive tests show that it performs as well or better than existing KWTA_AVG_INHIB on many challenging problems. Also this computed inhibition can now be combined with connection-spec based inhibition.
  • For Leabra programs, added LeabraNetwork::Compute_PhaseStats() function to be used instead of the Compute_TrialStats() function (along with the _Test version of that function) -- calls Compute_MinusStats() in the minus phase and Compute_PlusStats() in the plus phase, which allows for example the target values for SSE and other errors to be provided only in the plus phase -- previously these had to be present in the minus phase to count correctly.
  • New Keyboard shortcuts:
  • To control frames of the project window. With a single key combination you can have any combination of the browser (left pane), panels (center pane) and graphics (right pane). On Macintosh command-1 gives the browser the full window, command-2 panels get the full window, command-3 browser and panels share, command-4 graphics gets the entire window, command-5 browser and graphics, command-6 panels and graphics, command-7 all 3 frames. Works on all platforms with key equivalent to Macintosh command key.
  • To control 3D View. The arrow keys control rotation and while holding the shift key the arrow keys control rotation of the view. Zoom-In with the '+' key and Zoom-Out with the '-' key.
  • New class DynEnumTableCol generates enums corresponding to the values in a DataTable column. Any changes to the column (sorting, deleting, etc) causes regeneration of the enums. If you were previously using DynEnumType in conjunction with a DataTable column you probably want to update to this new type.
  • Functions in DynEnumType to convert enums to numbers in Matrix or Array objects -- handy for converting entire DataTables en-masse.
  • New color (taColor) attribute added to projections, available from projection edit panel.
  • DataVarProg now has an option to get or set all variables (boolean all_matches) that match the names of data table columns. This means you don't need to specify each variable you want to get or set.
  • DataVarRead and DataVarWrite are new programming elements that read or write one variable only at a time but don't require that the column name and variable name match.
  • The SelectEdit object has been renamed to ControlPanel to better reflect its purpose and the menu items are now of the form Add...ToControlPanel.
  • Option in Preferences to turn off the pager in the css console.
  • Tree browsers are now "spring loaded", hovering over an item during drag-n-drop will expand the item and moving off will collapse the item. This option and the spring delay time are settable in preferences.
  • Bug Fixes:
  • ClusterRun no longer so touchy and crash-prone when all params not yet set
  • ProgCode in Programs no longer causes sporadic crashes when it converts into specific ProgEl
  • When changing the value of a Spec in a ControlPanel or in a Program, sometimes the change would not propagate to all the child specs of that spec -- this is now fixed once and for all by propagating the UpdateAfterEdit call all the way up to the largest containing object of where a change occurred.
  • fixed crashes in taCanvas
  • fixed crashes in taImageProc region spec filtering code on Windows platform (affected the v1rf and objrec projects from the CCN textbook)
  • fixed important bug in css that was losing track of which program was running, which affected error reporting -- should now have much more reliable reporting of which program and where an error occurred in.
  • Ctrl-M was only duplicating the first of multiple items selected in the browser.
  • Some windows, e.g. Find, could only be closed by clicking the close box. Now they can be closed with the 'Close Window' menu or the keyboard shortcut.
  • On a mac, the laptop trackpad under Qt5 was hypersensitive -- now fixed -- turns out it was getting touch events -- turned those off.
  • Extended selection using cursor keys was missing the last item selected
  • Undo was not working for "Edit Dialogs" (e.g. a data table opened into its own window)
  • Around 200 bug tickets were addressed for this release -- too many issues to document them all here!

New in Emergent 6.3.2 Build 6447 (Aug 29, 2013)

  • ACT-R is much more fully-functional -- still has a few more things to be done, but it now supports the visual and motor modules, and more of its overall behavior has been tested and validated against the actr6 lisp implementation.
  • You can drag-and-drop the columns and rows of a DataTable to reorder them.
  • There are many new options on the DataTable context menus and the Column-level menus for commonly-used functions.
  • DataTables now have (hidden) list of row numbers that are used in all access to the data, which enables much more efficient filtering, sorting, etc -- only this row number list needs to be sorted, for example, not all the raw data itself. All access of the data at all levels (even down to the low-level Matrix data that is used for storing each column worth of data) uses these row numbers to access the data, so you cannot tell that they are there, and all existing code works exactly the same as it did before (only faster!).
  • There are however some important new functions that this now supports:
  • Deleting (including Filtering) rows from a table only deletes from the row list, effectively hiding the rows rather than immediately deleting them.
  • You can therefore restore the rows (or undo any other row-level operation, including Sorting) with the menu item "DataProc/Show All Rows". This function resets the row list to match the original raw data.
  • To permanently remove any hidden raw data, select "Flatten" -- this also reorganizes the raw data to match the current row list order, making the raw data and the row list isomorphic.
  • You can keep the original table by making a copy first (or calling FlattenTo to flatten to a different table).
  • Saving a project does not flatten the table -- the full raw data is saved along with the row list, so it is just as you left it. If you have a large table that has been significantly filtered, or a lot of adding and deleting has taken place, it can be more efficient to Flatten that table before saving.
  • When a Data Table is the source of input to a network, the view you see is the view the network sees. If you have hidden rows they will not be input to the network. Likewise all calculations operate only on the visible rows of a table. Again, the presence of this hidden row list is invisible, and everything works as before, except for the ShowAllRows and Flatten functions.
  • Data Table filtering:
  • Two dialogs has been added to make filtering more user friendly.
  • Filter based on values of a single column by selecting the "Filter" menu item from the columns context menu.
  • Filter based on multiple columns by selecting the "Filter" menu item from the "DataProc" menu.
  • You can write your own expression to filter rows by selecting the "Filter Custom" menu item and entering an expression.
  • The DataTable method Filter has been renamed to FilterByScript
  • High Dimensional Analysis GUI:
  • Dialogs have been added to make high dimensional analysis (e.g. Cluster Analysis and Principal Component Analysis) more accessible
  • Select a data table matrix column and select an analysis from the context menu
  • Minor Changes:
  • View settings (e.g. panel and window size, data table column widths) are now saved by default. This is a project level setting and a checkbox has been added to the project properties panel to enable/disable this behavior.
  • A "Save As Only" property has been added to projects (good for demos and tutorials). If you set this property to true (checkbox on the project property panel) "Save" is disabled but "Save As" remains enabled. This property defaults to false.
  • Sort Ascending and Sort Descending added to column context menu. For multiple column sorting use DataProc/Sort that allows specifying up to 6 columns of sort hierarchy
  • Go directly from a line of code in the left browser to editing in the center panel from context menu item "Edit Program El"
  • Keyboard navigation of the lookup dialogs has been optimized -- saves a few keystrokes.
  • Bug Fixes:
  • The color scale chooser works again.(1583)
  • Find command was crashing during "member" searches.(1559)
  • Various other bug fixes and a few memory leaks patched -- improved overall stability.

New in Emergent 6.2.0-6110 (Feb 18, 2013)

  • Major Changes:
  • Complete overhaul of the entire codebase, and the maketa system for getting type information, breaking each of our previously-massive files into separate files for each class object. Also a massive renaming, especially of the gui classes, so that name follows function much more closely -- see Gui Overview. This makes project files saved in 6.2 not fully readable in prior versions -- the files will load, but some gui view information will not be loaded. The net result for the developer is that the typical recompile times will be relatively short, even though the full recompile time is actually quite a bit longer. And it is now deterministic to find where code is, and what it depends upon -- should make it much easier for people to access and understand the code. Also, the maketa parser was upgraded significantly to deal with a much broader swath of C++ code, including sub-classes within a class, and many more features of templates.
  • Any existing Plugins will need to be updated for this version -- see Plugins_v6.2 for all the details on what you need to do.
  • TwoD NetView mode -- lays out everything in one big flat panel -- can be easier to see everything at once in a big complicated network.
  • Minor Changes:
  • Matrix now supports copying based on the slicing and other ways of specifying a subset of matrix elements -- this is incredibly powerful for composing larger patterns out of smaller matrix pattern pieces, and for replicating patterns in various ways. See docs under Matrix for full details.
  • Renamed all the ta_geometry classes to more standard names like taVector3f, taVector2i etc instead of things like FloatTDCoord and TwoDGeom -- these old names are still avail for backward compatibility, but please use the new names going forward. Also added a taQuaternion for more powerful rotation calculations.
  • VEBody and VEStatic can now be positioned, etc relative to other bodies -- often much easier than absolute coordinates.
  • Bug Fixes:
  • Lots of fixes to Virtual Environment system: Much clearer naming of methods, e.g., Init instead of "SetValsToODE", better sync'ing with ODE and a CurToODE method for explicitly updating ODE from changes to current values. Support for Euler angles to specify rotation, and use of a taQuaternion class that provides direct access to all manner of handy 3D rotation functionality -- VEBody objs have an init_quat and a cur_quat that has this quaternion reflecting current state. Also handling of the long_axis of capsules and cylinders is now vastly improved -- dragging works as expected, updates are immediately reflected, and internally these are always in the ODE-consistent LONG_Z state.
  • LeabraLayerSpec unit-group shared inhibition flag gp_i (and associated gp_g) settings were not being properly migrated to the new unit_gp_inhib (same with layer_gp_inhib, which is even more rarely used) -- wasn't setting the spec unique flag so changes were being lost -- now fixed. Double-check any projects that might have used this (probably this would have been found already) to make sure this param was not lost.

New in Emergent 6.1.0-5751 (Nov 13, 2012)

  • Major Changes:
  • Hopefully the last major revision (version 3.2) of the Leabra PBWM algorithm for simulating Prefrontal Cortex and Basal Ganglia Working Memory -- now more fully in alignment with the known biology while retaining the fundamental SRN-like functionality of version 3 (and most of the other features of v3).
  • Minor Changes:
  • Projects keep track of their own directories and switch to them automatically when the project window is selected, or when a program is run within a project -- this should ensure that accessory files are still found correctly when multiple projects from different directories are in use. Use taBase::GetProjDir() on any object to get the project directory for that object (searches upward to find Project, gets it from there -- only works on objects that have owners -- most do).
  • Renamed new hippocampus algorithm ThetaPhase instead of QuadPhase -- old projects should load fine, but won't be compatible with older versions.
  • Added act_mid variable on LeabraUnit -- records PBWM gating activations or ThetaPhase mid-minus phase activities
  • Fixed weird "tiling" artifact when down-scaling images in RetinaProc visual processing code. Also all taImageProc code is now fully alpha-channel compliant.
  • Main Menu works on Unity desktop environment, and main menu appears without having to first click on emergent window at startup.
  • Leabra default learning algorithm is now CT_LEABRA_XCAL -- consistent with textbook: http://ccnbook.colorado.edu
  • Bug Fixes:
  • Plugin compiling with configure --suffix install now all works properly
  • use of arrow keys when viewing weights in NetView now fixed -- also fixed Layer::UnitLogPos function to work properly for virtual unit groups
  • Bottom Find search widget in Tree view's (e.g., left browser or Program Editor) no longer crashes if you have an active find and then modify the tree (add, delete objects)

New in Emergent 6.0.1-5577 (Sep 1, 2012)

  • Fixes brain view bug 1500

New in Emergent 5.3.10 (Jul 30, 2012)

  • Major New Features:
  • Added in 5.3.3: powerful css list comprehension functionality, including significant Matrix css functionality for manipulating Matrix objects in css, using Slicing and other syntax as used in MATLAB and Python, including the convenient foreach loop. The semantics and syntax are quite similar to those of Python overall. See the previous links for more details.
  • can now specify an arbitrary suffix to a build (e.g., in configure script or args to CMake), and it will carry that through for the install, so you can have multiple different versions of emergent installed -- each different suffix now has separate preferences and plugins, so it is now possible to really keep things separate.
  • plugins now detect when they are out of date and prompt for remaking at startup if so.
  • Windows platform now can use the gui css console -- go to Options and select Gui type -- much better than the prior console (which remains for error messages from other components of emergent that can't write directly to the console). Required massive replacement of stream-based output with String-based, which is much more flexible and general-purpose.
  • Much improved Diff Compare dialog -- shows entire diff with all the context (and less clutter), so you can better tell where the diffs are, and the dialog is now non-blocking so you can also use the normal gui to investigate differences, etc (View button will take you directly to any given item in the diff list).
  • Minor New Features:
  • Added Global Trace and Local Trace buttons to Programs (see Program Debugging) -- provides a back trace of the flow of programs up to the point where they were last stopped (by user Stop or an Error or Step). Helpful for debugging.
  • debug_level and my_mask variable pointers on PrintExpr and PrintVar Program elements, allowing for more finely-tuned control over what is printed when.
  • end any expression with a semicolon (;) in the ProgCode entry for programming in Programs, and it will convert that into a free-form CssExpr that allows any kind of valid css expression -- this is useful for things like declaring temporary variables outside the scope of program control, and certain Matrix css expressions that are otherwise not handled by other kinds of Program Elements.
  • improved mouse-over in css Script panel for viewing curent state of variables -- now shows full state of object (e.g., matrix contents etc).
  • LeabraFlexProgs -- new cur_config enum chooser using function that can generate DynEnum dynamic enumerated values from a column in a DataTable.
  • can drag and drop an object onto a Program and it will prompt to add a variable to that object to either args or vars -- often easier than doing the same thing within a program.
  • Other:
  • NETIN_PER_PRJN flag in Network -- can compute net input on a per-projection basis, which is important for various specialized cases. Inhibitory vs. excitatory input is now computed using this mechanism.
  • New gelin activation function in Leabra -- has better temporal integration dynamics and improves learning generally.
  • learn flag on LeabraConSpec -- can toggle learning on and off.
  • error dialog "cancel for next minute" function now improved to use interval between errors and time in the waitproc instead of the minute timeout -- works well at detecting beaks between errors.
  • blue select color now always in effect even if not in focus -- helps to see what is selected everywhere, esp useful during Find ops..
  • Find has match case option
  • There is now a "find" box at the bottom of every browser for quick find behavior without the Find dialog -- each kind has various tradeoffs so you can choose your favorite.
  • Projects now have an auto_name flag, set on by default, which updates the name based on what is called when saved -- useful for choosing items when multiple projects are active (often they have the same name if derived from a similar history)
  • moving of network layers and groups can now be undone -- handy because sometimes it doesn't turn out well and you need to try again..
  • can drag-n-drop to move tabs in the right 3D view
  • Bugs Fixed:
  • Program buttons were not getting updated if you switched away from them and then back.
  • fixed potential crashing in Undo system
  • fixed some css-related crashes.
  • eliminated duplicate paste on middle-mouse-button paste on linux

New in Emergent 5.3.10 Beta (Jun 26, 2012)

  • Fixes broken MIN, MAX, ABS css functions -- critical fix.

New in Emergent 5.3.7 Beta (Apr 28, 2012)

  • Major New Features:
  • Added in 5.3.3: powerful css list comprehension functionality, including significant Matrix css functionality for manipulating Matrix objects in css, using Slicing and other syntax as used in MATLAB and Python, including the convenient foreach loop. The semantics and syntax are quite similar to those of Python overall. See the previous links for more details.
  • can now specify an arbitrary suffix to a build (e.g., in configure script or args to CMake), and it will carry that through for the install, so you can have multiple different versions of emergent installed -- each different suffix now has separate preferences and plugins, so it is now possible to really keep things separate.
  • plugins now detect when they are out of date and prompt for remaking at startup if so.
  • Windows platform now can use the gui css console -- go to Options and select Gui type -- much better than the prior console (which remains for error messages from other components of emergent that can't write directly to the console). Required massive replacement of stream-based output with String-based, which is much more flexible and general-purpose.
  • Much improved Diff Compare dialog -- shows entire diff with all the context (and less clutter), so you can better tell where the diffs are, and the dialog is now non-blocking so you can also use the normal gui to investigate differences, etc (View button will take you directly to any given item in the diff list).
  • Minor New Features:
  • can drag and drop an object onto a Program and it will prompt to add a variable to that object to either args or vars -- often easier than doing the same thing within a program.
  • NETIN_PER_PRJN flag in Network -- can compute net input on a per-projection basis, which is important for various specialized cases. Inhibitory vs. excitatory input is now computed using this mechanism.
  • New gelin activation function in Leabra -- has better temporal integration dynamics and improves learning generally.
  • debug_level and my_mask variable pointers on PrintExpr and PrintVar Program elements, allowing for more finely-tuned control over what is printed when.
  • end any expression with a semicolon (;) in the ProgCode entry for programming in Programs, and it will convert that into a free-form CssExpr that allows any kind of valid css expression -- this is useful for things like declaring temporary variables outside the scope of program control, and certain Matrix css expressions that are otherwise not handled by other kinds of Program Elements.
  • improved mouse-over in css Script panel for viewing curent state of variables -- now shows full state of object (e.g., matrix contents etc).
  • LeabraFlexProgs -- new cur_config enum chooser using function that can generate DynEnum dynamic enumerated values from a column in a DataTable.
  • learn flag on LeabraConSpec -- can toggle learning on and off.
  • error dialog "cancel for next minute" function now improved to use interval between errors and time in the waitproc instead of the minute timeout -- works well at detecting beaks between errors.
  • blue select color now always in effect even if not in focus -- helps to see what is selected everywhere, esp useful during Find ops..
  • Find has match case option
  • Projects now have an auto_name flag, set on by default, which updates the name based on what is called when saved -- useful for choosing items when multiple projects are active (often they have the same name if derived from a similar history)
  • Bugs Fixed:
  • Program buttons were not getting updated if you switched away from them and then back.
  • fixed potential crashing in Undo system
  • fixed some css-related crashes.
  • eliminated duplicate paste on middle-mouse-button paste on linux