From emergent
Jump to: navigation, search
Crystal Clear app display.png Using emergent


Emergent Logo
Main User Docs

Key concepts for emergent, especially relative to PDP++. See also Changes from PDP++ for a more detailed list of such changes.

  • There are only 3 top-level object types: DataTable, Program, and Network (plus associated 3d Graphical View objects). You should be familiar with what these do, and organize your thinking around them.
  • Always try the context menu on various objects (right mouse button, or Ctrl-mouse on Mac) -- lots of good stuff is available there! There are so many different objects in a given simulation, each with different functions, that instead of trying to have one master menu, each object has its own special menu!
  • The gui is now browser-based. Instead of popping up a million different edit dialogs, you interact by browsing and clicking on objects, with the edit dialog appearing in the central panel. The GUI views of objects (e.g., the NetView) is in the right-hand panel, sporting fancy, full, 3D graphics.
  • Use the mouse-over to get help: just hold the mouse over various items to get helpful hints.



DataTable replaces Environments and Logs from PDP++ v3.2, and also has many other new uses:

  • There are sets of taDataXXX objects for doing XXX = "Gen" (generation), "Proc" (data processing/database ops), and "Anal" (data analysis) on data tables.
  • Use data tables for organizing the structure of training of your network: create lists (of lists) of conditions or specifications of events.
  • Record network data into data tables (using NetMonitor); then use DataProc or DataAnal routines to aggregate and analyze the data. Gone are the rigid "Stat aggregation" mechanisms from PDP++ v3.2.


Programs replace Scripts, Processes and Stats from PDP++ v3.2. They provide a full programming language via the GUI. A Program generates a Css script, which is then executed to actually run the program. Many common operations can be done using Program elements through the GUI, but you can always write Css code directly using a UserScript. The GUI also allows you to lookup functions and variables on objects using a powerful GUI chooser with search abilities.

  • Programs can call other Programs, and the standard "[[SchedProcess]" hierarchy of scheduling processes has been largely replicated with Programs. This makes it easy to see exactly what these Programs are doing, and insert your own specialized functionality wherever you want in the program flow. Gone are the rigid and mysterious "init, loop and final" slots.
  • Programs are fully encapsulated and self-contained, and can (optionally) be passed arguments. Arg management is much improved over the s_args of PDP++ v3.2. Programs can contain their own functions, types, and variables.
  • If you want to implement some substantial new chunk of functionality, just create a new Program, then call it from one of the standard existing Programs at the appropriate place(s).


  • Networks are not much changed from PDP++ v3.2, except that specs are now contained within a Network. This makes it fully encapsulated, such that you can drag and drop or copy and paste Networks from one project to another, and they will be fully functional because all their specs come along with them. Also, all the control parameters that used to be distributed throughout the Process objects (learning modes, cycles to settle, etc) are now all consolidated on the Network object.


  • Views of objects (NetView, GridTableView, GraphTableView) can be combined together in one integrated 3D display, or in separate frames, each with their own tabs. Each View has an associated control panel that shows up in the middle edit panel area -- use this to configure the View to your liking. You can find additional configuration options by clicking on the green frame of the viewed object. This pulls up an edit dialog of the underlying view object, where all the settable parameters are listed.