Documentation ¶
Index ¶
- Variables
- func AddDefaultGUICallbacks(manager *looper.Manager, gui *GUI)
- func PositionNetworkLayersAutomatically(net emer.Network, numSettlingIterations int)
- type GUI
- func (gui *GUI) AddActRFGridTabs(arfs *actrf.RFs)
- func (gui *GUI) AddLooperCtrl(loops *looper.Manager, modes []etime.Modes)
- func (gui *GUI) AddNetView(tabName string) *netview.NetView
- func (gui *GUI) AddPlots(title string, lg *elog.Logs)
- func (gui *GUI) AddToolbarItem(item ToolbarItem)
- func (gui *GUI) ConfigRasterGrid(lay *gi.Layout, laynm string, rast *etensor.Float32) *etview.TensorGrid
- func (gui *GUI) FinalizeGUI(closePrompt bool)
- func (gui *GUI) Grid(name string) *etview.TensorGrid
- func (gui *GUI) InitNetData(net emer.Network, nrecs int)
- func (gui *GUI) MakeWindow(sim interface{}, appname, title, about string)
- func (gui *GUI) NetDataRecord()
- func (gui *GUI) Plot(mode etime.Modes, time etime.Times) *eplot.Plot2D
- func (gui *GUI) PlotScope(scope etime.ScopeKey) *eplot.Plot2D
- func (gui *GUI) SaveActRFGrid(tg *etview.TensorGrid, name string)
- func (gui *GUI) SaveNetData(extra string)
- func (gui *GUI) SetGrid(name string, tg *etview.TensorGrid)
- func (gui *GUI) SetPlot(scope etime.ScopeKey, plt *eplot.Plot2D)
- func (gui *GUI) Stopped()
- func (gui *GUI) UpdateCyclePlot(mode etime.Modes, cycle int) *eplot.Plot2D
- func (gui *GUI) UpdateNetView()
- func (gui *GUI) UpdateNetViewCycle(time etime.Times, cyc int)
- func (gui *GUI) UpdatePlot(mode etime.Modes, time etime.Times) *eplot.Plot2D
- func (gui *GUI) UpdatePlotScope(scope etime.ScopeKey) *eplot.Plot2D
- func (gui *GUI) UpdateWindow()
- func (gui *GUI) ViewActRFs(atf *actrf.RFs)
- type ToolGhosting
- type ToolbarItem
- type UserInterface
Constants ¶
This section is empty.
Variables ¶
var KiT_ToolGhosting = kit.Enums.AddEnum(ToolGhostingN, kit.BitFlag, nil)
Functions ¶
func AddDefaultGUICallbacks ¶ added in v1.2.4
func PositionNetworkLayersAutomatically ¶ added in v1.2.4
PositionNetworkLayersAutomatically tries to find a configuration for the network layers where they're close together, but not overlapping. It tries to put connected layers closer together, input layers near the bottom, and target layers near the top. It uses a random walk algorithm that randomly permutes the network and only keeps permutations if they improve the network's overall configuration score. numSettlingIterations is the number of random moves it tries for each layer. Larger values will generally get better results but compute time grows linearly.
Types ¶
type GUI ¶
type GUI struct { NetViewText string `desc:"text to display at bottom of the NetView -- has relevant network state"` CycleUpdateInterval int `desc:"how many cycles between updates of cycle-level plots"` Active bool `view:"-" desc:"true if the GUI is configured and running"` IsRunning bool `view:"-" desc:"true if sim is running"` StopNow bool `view:"-" desc:"flag to stop running"` Plots map[etime.ScopeKey]*eplot.Plot2D `desc:"plots by scope"` Grids map[string]*etview.TensorGrid `desc:"tensor grid views by name -- used e.g., for Rasters or ActRFs -- use Grid(name) to access"` NetView *netview.NetView `view:"-" desc:"the network viewer"` NetData *netview.NetData `view:"-" desc:"net data for recording in nogui mode, if !nil"` ToolBar *gi.ToolBar `view:"-" desc:"the master toolbar"` StructView *giv.StructView `view:"-" desc:"displays Sim fields on left"` TabView *gi.TabView `view:"-" desc:"tabs for different view elements: plots, rasters"` Win *gi.Window `view:"-" desc:"main GUI gui.Window"` ViewPort *gi.Viewport2D `view:"-" desc:"main viewport for Window"` }
GUI manages all standard elements of a simulation Graphical User Interface
func (*GUI) AddActRFGridTabs ¶ added in v1.1.56
AddActRFGridTabs adds tabs for each of the ActRFs.
func (*GUI) AddLooperCtrl ¶ added in v1.2.1
AddLooperCtrl adds toolbar control for looper.Stack with Run, Step controls.
func (*GUI) AddNetView ¶ added in v1.2.1
AddNetView adds NetView in tab with given name
func (*GUI) AddPlots ¶
AddPlots adds plots based on the unique tables we have, currently assumes they should always be plotted
func (*GUI) AddToolbarItem ¶
func (gui *GUI) AddToolbarItem(item ToolbarItem)
AddToolbarItem adds a toolbar item but also checks when it be active in the UI
func (*GUI) ConfigRasterGrid ¶
func (gui *GUI) ConfigRasterGrid(lay *gi.Layout, laynm string, rast *etensor.Float32) *etview.TensorGrid
ConfigRasterGrid configures a raster grid for given layer name. Uses Raster_laynm and given Tensor that has the raster data.
func (*GUI) FinalizeGUI ¶
FinalizeGUI wraps the end functionality of the GUI
func (*GUI) Grid ¶ added in v1.1.56
func (gui *GUI) Grid(name string) *etview.TensorGrid
Grid gets tensor grid view of given name, creating if not yet made
func (*GUI) InitNetData ¶ added in v1.1.56
InitNetData initializes the NetData object to record NetView data when the GUI is not active (located in egui package because of the NetViewText that is also recorded)
func (*GUI) MakeWindow ¶
MakeWindow specifies default window settings that are largely used in all windwos
func (*GUI) NetDataRecord ¶ added in v1.1.56
func (gui *GUI) NetDataRecord()
NetDataRecord records current netview data if InitNetData has been called and NetData exists.
func (*GUI) SaveActRFGrid ¶ added in v1.1.56
func (gui *GUI) SaveActRFGrid(tg *etview.TensorGrid, name string)
SaveActRFGrid stores the given TensorGrid in Grids under given name, and configures the grid view for ActRF viewing.
func (*GUI) SaveNetData ¶ added in v1.1.56
SaveNetData saves NetData NetView data (if !nil) to a file named by the network name plus _extra name plus ".netdata.gz"
func (*GUI) SetGrid ¶ added in v1.1.56
func (gui *GUI) SetGrid(name string, tg *etview.TensorGrid)
SetGrid sets tensor grid view to given name
func (*GUI) Stopped ¶
func (gui *GUI) Stopped()
Stopped is called when a run method stops running -- updates the IsRunning flag and toolbar
func (*GUI) UpdateCyclePlot ¶
UpdateCyclePlot updates cycle plot for given mode. only updates every CycleUpdateInterval
func (*GUI) UpdateNetView ¶
func (gui *GUI) UpdateNetView()
UpdateNetView updates the gui visualization of the network. Set the NetViewText field prior to updating
func (*GUI) UpdateNetViewCycle ¶ added in v1.2.1
UpdateNetViewCycle updates the gui visualization of the network at given time scale relative to given cycle. For all times longer than cycle intervals (ThetaCycle and above), it returns. Set the NetViewText field prior to updating
func (*GUI) UpdatePlot ¶
UpdatePlot updates plot for given mode, time scope
func (*GUI) UpdatePlotScope ¶
UpdatePlotScope updates plot at given scope
func (*GUI) UpdateWindow ¶
func (gui *GUI) UpdateWindow()
UpdateWindow renders the viewport associated with the main window
func (*GUI) ViewActRFs ¶ added in v1.1.56
ViewActRFs displays act rfs into tensor Grid views previously configured
type ToolGhosting ¶
type ToolGhosting int32
ToolGhosting the mode enum
const ( ActiveStopped ToolGhosting = iota ActiveRunning ActiveAlways ToolGhostingN )
The evaluation modes for when a tool bar can be clicked
func (ToolGhosting) MarshalJSON ¶
func (ev ToolGhosting) MarshalJSON() ([]byte, error)
func (*ToolGhosting) UnmarshalJSON ¶
func (ev *ToolGhosting) UnmarshalJSON(b []byte) error
type ToolbarItem ¶
type ToolbarItem struct { Label string Icon string Tooltip string Active ToolGhosting Func func() }
ToolbarItem holds the configuration values for a toolbar item
type UserInterface ¶ added in v1.2.4
type UserInterface struct { Looper *looper.Manager `desc:"The loop structure informs what buttons should be put in the GUI, and when logging should occur."` Network emer.Network `desc:"The Network model can be rendered in the GUI, and is used for logging."` Logs *elog.Logs `desc:"A pointer to a Logs object is needed if logging is to be configured."` Stats *estats.Stats `desc:"Stats may be filled out during logging."` GUI *GUI `desc:"More directly handles graphical elements."` AppName string `desc:"Displayed in GUI."` AppAbout string `desc:"Displayed in GUI."` AppTitle string `desc:"Displayed in GUI."` StructForView interface{} `desc:"This might be Sim or any other object you want to display to the user in the GUI."` // Callbacks InitCallback func() `desc:"If set, the GUI will contain an initialization button to call it."` AddNetworkLoggingCallback func(userInterface *UserInterface) `` /* 197-byte string literal not displayed */ // contains filtered or unexported fields }
UserInterface tries to make it easier to set up the user interface for a model. It can automatically add logging and configure a GUI all based on the configuration parameters it contains. It can run the model either with a GUI or on the command line.
func (*UserInterface) AddDefaultLogging ¶ added in v1.2.4
func (ui *UserInterface) AddDefaultLogging()
AddDefaultLogging adds log items and looper callbacks for logging. You will need to supply a AddNetworkLoggingCallback function that actually adds the log items. I recommend you use axon.AddCommonLogItemsForOutputLayers if you are using an axon network. This function is external because it needs to import axon. Hopefully you find that it adds the logging you need, or you can craft your own function like this:
ui.Logs.AddItem(&elog.Item{ Name: "MyLogName", Type: etensor.FLOAT32, Plot: elog.DTrue, Write: elog.WriteMap{etime.Scope(etime.Train, etime.Trial): func(ctx *elog.Context) { ctx.SetFloat32(myLoggingFunction()) }}})
func (*UserInterface) AddServerButton ¶ added in v1.2.4
func (ui *UserInterface) AddServerButton(serverRunFunc func())
AddServerButton adds a button to start a server based on some callback. This function is only necessary if you want the network to exist in a separate thread, and you want the agent to provide a server that serves intelligent actions. It adds a button to start the server.
func (*UserInterface) CreateAndRunGui ¶ added in v1.2.4
func (ui *UserInterface) CreateAndRunGui()
CreateAndRunGui creates a GUI, with which the user can control the application. It will loop forever.
func (*UserInterface) CreateAndRunGuiWithAdditionalConfig ¶ added in v1.2.4
func (ui *UserInterface) CreateAndRunGuiWithAdditionalConfig(config func())
CreateAndRunGuiWithAdditionalConfig allows you to specify additional configuration that occurs before the GUI runs.
func (*UserInterface) RunWithoutGui ¶ added in v1.2.4
func (ui *UserInterface) RunWithoutGui()
RunWithoutGui runs the model without any GUI.