netview

package
v2.0.0-dev0.0.14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2024 License: BSD-3-Clause Imports: 37 Imported by: 18

README

Docs: GoDoc

Package netview provides the NetView type that displays a neural network using the emer.Layer etc interfaces defined in the emer package.

Documentation

Overview

Package netview provides the NetView interactive 3D network viewer, implemented in the Cogent Core 3D framework.

Index

Constants

View Source
const NaNSub = -1.11e-37

NaNSub is used to replace NaN values for saving -- JSON doesn't handle nan's

Variables

View Source
var LayNameType = types.AddType(&types.Type{Name: "github.com/emer/emergent/v2/netview.LayName", IDName: "lay-name", Doc: "LayName is the Layer name as a Text2D within the NetView", Embeds: []types.Field{{Name: "Text2D"}}, Fields: []types.Field{{Name: "NetView", Doc: "our netview"}}, Instance: &LayName{}})

LayNameType is the types.Type for LayName

View Source
var LayObjType = types.AddType(&types.Type{Name: "github.com/emer/emergent/v2/netview.LayObj", IDName: "lay-obj", Doc: "LayObj is the Layer 3D object within the NetView", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Embeds: []types.Field{{Name: "Solid"}}, Fields: []types.Field{{Name: "LayName", Doc: "name of the layer we represent"}, {Name: "NetView", Doc: "our netview"}}, Instance: &LayObj{}})

LayObjType is the types.Type for LayObj

View Source
var MinUnitHeight = float32(1.0e-6)

MinUnitHeight ensures that there is always at least some dimensionality to the unit cubes -- affects transparency rendering etc

View Source
var NVarCols = 2

NVarCols is the default number of variable columns in the NetView

View Source
var NetViewType = types.AddType(&types.Type{Name: "github.com/emer/emergent/v2/netview.NetView", IDName: "net-view", Doc: "NetView is a Cogent Core Widget that provides a 3D network view using the Cogent Core gi3d\n3D framework.", Methods: []types.Method{{Name: "PlotSelectedUnit", Doc: "PlotSelectedUnit opens a window with a plot of all the data for the\ncurrently-selected unit.\nUseful for replaying detailed trace for units of interest.", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Returns: []string{"Table", "Plot2D"}}, {Name: "Current", Doc: "Current records the current state of the network, including synaptic values,\nand updates the display.  Use this when switching to NetView tab after network\nhas been running while viewing another tab, because the network state\nis typically not recored then.", Directives: []types.Directive{{Tool: "types", Directive: "add"}}}, {Name: "SaveWeights", Doc: "SaveWeights saves the network weights -- when called with views.CallMethod\nit will auto-prompt for filename", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Args: []string{"filename"}}, {Name: "OpenWeights", Doc: "OpenWeights opens the network weights -- when called with views.CallMethod\nit will auto-prompt for filename", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Args: []string{"filename"}}, {Name: "ShowNonDefaultParams", Doc: "ShowNonDefaultParams shows a dialog of all the parameters that\nare not at their default values in the network.  Useful for setting params.", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Returns: []string{"string"}}, {Name: "ShowAllParams", Doc: "ShowAllParams shows a dialog of all the parameters in the network.", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Returns: []string{"string"}}, {Name: "ShowKeyLayerParams", Doc: "ShowKeyLayerParams shows a dialog with a listing for all layers in the network,\nof the most important layer-level params (specific to each algorithm)", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Returns: []string{"string"}}, {Name: "ShowKeyPrjnParams", Doc: "ShowKeyPrjnParams shows a dialog with a listing for all Recv projections in the network,\nof the most important projection-level params (specific to each algorithm)", Directives: []types.Directive{{Tool: "types", Directive: "add"}}, Returns: []string{"string"}}}, Embeds: []types.Field{{Name: "Layout"}}, Fields: []types.Field{{Name: "Net", Doc: "the network that we're viewing"}, {Name: "Var", Doc: "current variable that we're viewing"}, {Name: "Di", Doc: "current data parallel index di, for networks capable of processing input patterns in parallel."}, {Name: "Vars", Doc: "the list of variables to view"}, {Name: "SynVars", Doc: "list of synaptic variables"}, {Name: "SynVarsMap", Doc: "map of synaptic variable names to index"}, {Name: "VarParams", Doc: "parameters for the list of variables to view"}, {Name: "CurVarParams", Doc: "current var params -- only valid during Update of display"}, {Name: "Params", Doc: "parameters controlling how the view is rendered"}, {Name: "ColorMap", Doc: "color map for mapping values to colors -- set by name in Params"}, {Name: "ColorMapVal", Doc: "color map value representing ColorMap"}, {Name: "RecNo", Doc: "record number to display -- use -1 to always track latest, otherwise in range"}, {Name: "LastCtrs", Doc: "last non-empty counters string provided -- re-used if no new one"}, {Name: "Data", Doc: "contains all the network data with history"}, {Name: "DataMu", Doc: "mutex on data access"}}, Instance: &NetView{}})

NetViewType is the types.Type for NetView

View Source
var NilColor = color.RGBA{0x20, 0x20, 0x20, 0x40}
View Source
var SceneType = types.AddType(&types.Type{Name: "github.com/emer/emergent/v2/netview.Scene", IDName: "scene", Doc: "Scene is a Widget for managing the 3D Scene of the NetView", Embeds: []types.Field{{Name: "Scene"}}, Fields: []types.Field{{Name: "NetView"}}, Instance: &Scene{}})

SceneType is the types.Type for Scene

Functions

This section is empty.

Types

type LayData

type LayData struct {

	// the layer name
	LayName string

	// cached number of units
	NUnits int

	// the full data, in that order
	Data []float32

	// receiving projection data -- shared with SendPrjns
	RecvPrjns []*PrjnData

	// sending projection data -- shared with RecvPrjns
	SendPrjns []*PrjnData
}

LayData maintains a record of all the data for a given layer

func (*LayData) AllocSendPrjns

func (ld *LayData) AllocSendPrjns(ly emer.Layer)

AllocSendPrjns allocates Sending projections for given layer. does nothing if already allocated.

func (*LayData) FreePrjns

func (ld *LayData) FreePrjns()

FreePrjns nils prjn data -- for NoSynDat

type LayMesh

type LayMesh struct {
	xyz.MeshBase

	// layer that we render
	Lay emer.Layer

	// current shape that has been constructed -- if same, just update
	Shape etensor.Shape

	// netview that we're in
	View *NetView
}

LayMesh is a xyz.Mesh that represents a layer -- it is dynamically updated using the Update method which only resets the essential Vertex elements. The geometry is literal in the layer size: 0,0,0 lower-left corner and increasing X,Z for the width and height of the layer, in unit (1) increments per unit.. NetView applies an overall scaling to make it fit within the larger view.

func NewLayMesh

func NewLayMesh(sc *xyz.Scene, nv *NetView, lay emer.Layer) *LayMesh

NewLayMesh adds LayMesh mesh to given scene for given layer

func (*LayMesh) RasterSet2DX

func (lm *LayMesh) RasterSet2DX(sc *xyz.Scene, init bool, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) RasterSet2DZ

func (lm *LayMesh) RasterSet2DZ(sc *xyz.Scene, init bool, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) RasterSet4DX

func (lm *LayMesh) RasterSet4DX(sc *xyz.Scene, init bool, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) RasterSet4DZ

func (lm *LayMesh) RasterSet4DZ(sc *xyz.Scene, init bool, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) RasterSize2D

func (lm *LayMesh) RasterSize2D() (nVtx, nIndex int)

func (*LayMesh) RasterSize4D

func (lm *LayMesh) RasterSize4D() (nVtx, nIndex int)

func (*LayMesh) Set

func (lm *LayMesh) Set(sc *xyz.Scene, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) Set2D

func (lm *LayMesh) Set2D(sc *xyz.Scene, init bool, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) Set4D

func (lm *LayMesh) Set4D(sc *xyz.Scene, init bool, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

func (*LayMesh) Size2D

func (lm *LayMesh) Size2D() (nVtx, nIndex int)

func (*LayMesh) Size4D

func (lm *LayMesh) Size4D() (nVtx, nIndex int)

func (*LayMesh) Sizes

func (lm *LayMesh) Sizes() (nVtx, nIndex int, hasColor bool)

func (*LayMesh) Update

func (lm *LayMesh) Update(sc *xyz.Scene, vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry math32.ArrayU32)

type LayName

type LayName struct {
	xyz.Text2D

	// our netview
	NetView *NetView `copier:"-" json:"-" xml:"-" view:"-"`
}

LayName is the Layer name as a Text2D within the NetView

func NewLayName

func NewLayName(parent tree.Node, name ...string) *LayName

NewLayName adds a new LayName with the given name to the given parent: LayName is the Layer name as a Text2D within the NetView

func (*LayName) New

func (t *LayName) New() tree.Node

New returns a new *LayName value

func (*LayName) NodeType

func (t *LayName) NodeType() *types.Type

NodeType returns the *types.Type of LayName

func (*LayName) SetMat

func (t *LayName) SetMat(v xyz.Material) *LayName

SetMat sets the [LayName.Mat]

func (*LayName) SetNetView

func (t *LayName) SetNetView(v *NetView) *LayName

SetNetView sets the [LayName.NetView]: our netview

func (*LayName) SetText

func (t *LayName) SetText(v string) *LayName

SetText sets the [LayName.Text]

type LayObj

type LayObj struct {
	xyz.Solid

	// name of the layer we represent
	LayName string

	// our netview
	NetView *NetView `copier:"-" json:"-" xml:"-" view:"-"`
}

LayObj is the Layer 3D object within the NetView

func NewLayObj

func NewLayObj(parent tree.Node, name ...string) *LayObj

NewLayObj adds a new LayObj with the given name to the given parent: LayObj is the Layer 3D object within the NetView

func (*LayObj) New

func (t *LayObj) New() tree.Node

New returns a new *LayObj value

func (*LayObj) NodeType

func (t *LayObj) NodeType() *types.Type

NodeType returns the *types.Type of LayObj

func (*LayObj) SetLayName

func (t *LayObj) SetLayName(v string) *LayObj

SetLayName sets the [LayObj.LayName]: name of the layer we represent

func (*LayObj) SetMat

func (t *LayObj) SetMat(v xyz.Material) *LayObj

SetMat sets the [LayObj.Mat]

func (*LayObj) SetNetView

func (t *LayObj) SetNetView(v *NetView) *LayObj

SetNetView sets the [LayObj.NetView]: our netview

type NetData

type NetData struct {

	// the network that we're viewing
	Net emer.Network `json:"-"`

	// copied from Params -- do not record synapse level data -- turn this on for very large networks where recording the entire synaptic state would be prohibitive
	NoSynData bool

	// name of the layer with unit for viewing projections (connection / synapse-level values)
	PrjnLay string

	// 1D index of unit within PrjnLay for for viewing projections
	PrjnUnIndex int

	// copied from NetView Params: if non-empty, this is the type projection to show when there are multiple projections from the same layer -- e.g., Inhib, Lateral, Forward, etc
	PrjnType string `edit:"-"`

	// the list of unit variables saved
	UnVars []string

	// index of each variable in the Vars slice
	UnVarIndexes map[string]int

	// the list of synaptic variables saved
	SynVars []string

	// index of synaptic variable in the SynVars slice
	SynVarIndexes map[string]int

	// the circular ring index -- Max here is max number of values to store, Len is number stored, and Index(Len-1) is the most recent one, etc
	Ring ringidx.Index

	// max data parallel data per unit
	MaxData int

	// the layer data -- map keyed by layer name
	LayData map[string]*LayData

	// unit var min values for each Ring.Max * variable
	UnMinPer []float32

	// unit var max values for each Ring.Max * variable
	UnMaxPer []float32

	// min values for unit variables
	UnMinVar []float32

	// max values for unit variables
	UnMaxVar []float32

	// min values for syn variables
	SynMinVar []float32

	// max values for syn variables
	SynMaxVar []float32

	// counter strings
	Counters []string

	// raster counter values
	RasterCtrs []int

	// map of raster counter values to record numbers
	RasterMap map[int]int

	// dummy raster counter when passed a -1 -- increments and wraps around
	RastCtr int
}

NetData maintains a record of all the network data that has been displayed up to a given maximum number of records (updates), using efficient ring index logic with no copying to store in fixed-sized buffers.

func (*NetData) Config

func (nd *NetData) Config()

Config configures the data storage for given network only re-allocates if needed.

func (*NetData) CounterRec

func (nd *NetData) CounterRec(recno int) string

CounterRec returns counter string for given record, which is -1 for current (last) record, or in [0..Len-1] for prior records.

func (*NetData) Init

func (nd *NetData) Init(net emer.Network, max int, noSynData bool, maxData int)

Init initializes the main params and configures the data

func (*NetData) OpenJSON

func (nd *NetData) OpenJSON(filename core.Filename) error

OpenJSON opens colors from a JSON-formatted file.

func (*NetData) RasterCtr

func (nd *NetData) RasterCtr(recno int) (int, bool)

RasterCtr returns the raster counter value at given record number (-1 = current)

func (*NetData) ReadJSON

func (nd *NetData) ReadJSON(r io.Reader) error

ReadJSON reads netdata from JSON format

func (*NetData) RecIndex

func (nd *NetData) RecIndex(recno int) int

RecIndex returns record index for given record number, which is -1 for current (last) record, or in [0..Len-1] for prior records.

func (*NetData) Record

func (nd *NetData) Record(ctrs string, rastCtr, rastMax int)

Record records the current full set of data from the network, and the given counters string (displayed at bottom of window) and raster counter value -- if negative, then an internal wraping-around counter is used.

func (*NetData) RecordLastCtrs

func (nd *NetData) RecordLastCtrs(ctrs string)

RecordLastCtrs records just the last counter string to be the given string overwriting what was there before.

func (*NetData) RecordSyns

func (nd *NetData) RecordSyns()

RecordSyns records synaptic data -- stored separate from unit data and only needs to be called when synaptic values are updated. Should be done when the DWt values have been computed, before updating Wts and zeroing. NetView displays this recorded data when Update is next called.

func (*NetData) RecvUnitValue

func (nd *NetData) RecvUnitValue(laynm string, vnm string, uidx1d int) (float32, bool)

RecvUnitVal returns the value for given layer, variable name, unit index, for receiving projection variable, based on recorded synaptic projection data. Returns false if value unavailable for any reason (including recorded as such as NaN).

func (*NetData) SaveJSON

func (nd *NetData) SaveJSON(filename core.Filename) error

SaveJSON saves colors to a JSON-formatted file.

func (*NetData) SelectedUnitTable

func (nd *NetData) SelectedUnitTable(di int) *etable.Table

SelectedUnitTable returns a table with all of the data for the currently-selected unit, and data parallel index.

func (*NetData) SendUnitValue

func (nd *NetData) SendUnitValue(laynm string, vnm string, uidx1d int) (float32, bool)

SendUnitVal returns the value for given layer, variable name, unit index, for sending projection variable, based on recorded synaptic projection data. Returns false if value unavailable for any reason (including recorded as such as NaN).

func (*NetData) UnitValRaster

func (nd *NetData) UnitValRaster(laynm string, vnm string, uidx1d int, rastCtr int, di int) (float32, bool)

UnitValRaster returns the value for given layer, variable name, unit index, and raster counter number. Returns false if value unavailable for any reason (including recorded as such as NaN).

func (*NetData) UnitValue

func (nd *NetData) UnitValue(laynm string, vnm string, uidx1d int, recno int, di int) (float32, bool)

UnitVal returns the value for given layer, variable name, unit index, data parallel idx di, and record number, which is -1 for current (last) record, or in [0..Len-1] for prior records. Returns false if value unavailable for any reason (including recorded as such as NaN).

func (*NetData) UnitValueIndex

func (nd *NetData) UnitValueIndex(laynm string, vnm string, uidx1d int, ridx int, di int) (float32, bool)

UnitValueIndex returns the value for given layer, variable name, unit index, stored idx, and data parallel index. Returns false if value unavailable for any reason (including recorded as such as NaN).

func (*NetData) UpdateUnVarRange

func (nd *NetData) UpdateUnVarRange()

UpdateUnVarRange updates the range for unit variables, integrating over the entire range of stored values, so it is valid when iterating over history.

func (*NetData) VarRange

func (nd *NetData) VarRange(vnm string) (float32, float32, bool)

VarRange returns the current min, max range for given variable. Returns false if not found or no data.

func (*NetData) WriteJSON

func (nd *NetData) WriteJSON(w io.Writer) error

WriteJSON writes netdata to JSON format

type NetView

type NetView struct {
	core.Layout

	// the network that we're viewing
	Net emer.Network `set:"-"`

	// current variable that we're viewing
	Var string `set:"-"`

	// current data parallel index di, for networks capable of processing input patterns in parallel.
	Di int

	// the list of variables to view
	Vars []string

	// list of synaptic variables
	SynVars []string

	// map of synaptic variable names to index
	SynVarsMap map[string]int

	// parameters for the list of variables to view
	VarParams map[string]*VarParams

	// current var params -- only valid during Update of display
	CurVarParams *VarParams `json:"-" xml:"-" view:"-"`

	// parameters controlling how the view is rendered
	Params Params

	// color map for mapping values to colors -- set by name in Params
	ColorMap *colormap.Map

	// color map value representing ColorMap
	ColorMapVal *views.ColorMapValue

	// record number to display -- use -1 to always track latest, otherwise in range
	RecNo int

	// last non-empty counters string provided -- re-used if no new one
	LastCtrs string

	// contains all the network data with history
	Data NetData

	// mutex on data access
	DataMu sync.RWMutex `view:"-" copier:"-" json:"-" xml:"-"`
}

NetView is a Cogent Core Widget that provides a 3D network view using the Cogent Core gi3d 3D framework.

func NewNetView

func NewNetView(parent tree.Node, name ...string) *NetView

NewNetView adds a new NetView with the given name to the given parent: NetView is a Cogent Core Widget that provides a 3D network view using the Cogent Core gi3d 3D framework.

func (*NetView) Config

func (nv *NetView) Config()

func (*NetView) ConfigLabels

func (nv *NetView) ConfigLabels(labs []string) bool

ConfigLabels ensures that given label xyz.Text2D objects are created and initialized in a top-level group called Labels. Use LabelByName() to get a given label, and LayerByName() to get a Layer group, whose Pose can be copied to put a label in position relative to a layer. Default alignment is Left, Top. Returns true set of labels was changed (mods).

func (*NetView) ConfigNetView

func (nv *NetView) ConfigNetView()

ConfigNetView configures the overall view widget

func (*NetView) ConfigToolbar

func (nv *NetView) ConfigToolbar(tb *core.Toolbar)

func (*NetView) ConfigViewbar

func (nv *NetView) ConfigViewbar(tb *core.Toolbar)

func (*NetView) Counters

func (nv *NetView) Counters() *core.Label

func (*NetView) Current

func (nv *NetView) Current()

Current records the current state of the network, including synaptic values, and updates the display. Use this when switching to NetView tab after network has been running while viewing another tab, because the network state is typically not recored then.

func (*NetView) GoUpdateView

func (nv *NetView) GoUpdateView()

GoUpdateView is the update call to make from another go routine it does the proper blocking to coordinate with GUI updates generated on the main GUI thread.

func (*NetView) HasLayers

func (nv *NetView) HasLayers() bool

HasLayers returns true if network has any layers -- else no display

func (*NetView) LabelByName

func (nv *NetView) LabelByName(lab string) *xyz.Text2D

LabelByName returns given Text2D label (see ConfigLabels). nil if not found.

func (*NetView) LayerByName

func (nv *NetView) LayerByName(lay string) *xyz.Group

LayerByName returns the xyz.Group that represents layer of given name. nil if not found.

func (*NetView) NetLay

func (nv *NetView) NetLay() *core.Layout

func (*NetView) NetVarsList

func (nv *NetView) NetVarsList(net emer.Network, layEven bool) (nvars, synvars []string)

NetVarsList returns the list of layer and prjn variables for given network. layEven ensures that the number of layer variables is an even number if true (used for display but not storage).

func (*NetView) New

func (t *NetView) New() tree.Node

New returns a new *NetView value

func (*NetView) NodeType

func (t *NetView) NodeType() *types.Type

NodeType returns the *types.Type of NetView

func (*NetView) OnInit

func (nv *NetView) OnInit()

func (*NetView) OpenWeights

func (nv *NetView) OpenWeights(filename core.Filename)

OpenWeights opens the network weights -- when called with views.CallMethod it will auto-prompt for filename

func (*NetView) PlotSelectedUnit

func (nv *NetView) PlotSelectedUnit() (*etable.Table, *eplot.Plot2D)

PlotSelectedUnit opens a window with a plot of all the data for the currently-selected unit. Useful for replaying detailed trace for units of interest.

func (*NetView) ReadLock

func (nv *NetView) ReadLock()

ReadLock locks data for reading -- call ReadUnlock when done. Call this surrounding calls to UnitVal.

func (*NetView) ReadUnlock

func (nv *NetView) ReadUnlock()

ReadUnlock unlocks data for reading.

func (*NetView) RecBkwd

func (nv *NetView) RecBkwd() bool

RecBkwd move view record 1 steps backward. Returns true if updated.

func (*NetView) RecFastBkwd

func (nv *NetView) RecFastBkwd() bool

RecFastBkwd move view record N (default 10) steps backward. Returns true if updated.

func (*NetView) RecFastFwd

func (nv *NetView) RecFastFwd() bool

RecFastFwd move view record N (default 10) steps forward. Returns true if updated.

func (*NetView) RecFullBkwd

func (nv *NetView) RecFullBkwd() bool

RecFullBkwd move view record to start of history.

func (*NetView) RecFwd

func (nv *NetView) RecFwd() bool

RecFwd move view record 1 step forward. Returns true if updated.

func (*NetView) RecTrackLatest

func (nv *NetView) RecTrackLatest() bool

RecTrackLatest sets view to track latest record (-1). Returns true if updated.

func (*NetView) ReconfigMeshes

func (nv *NetView) ReconfigMeshes()

ReconfigMeshes reconfigures the layer meshes

func (*NetView) Record

func (nv *NetView) Record(counters string, rastCtr int)

Record records the current state of the network, along with provided counters string, which is displayed at the bottom of the view to show the current state of the counters. The rastCtr is the raster counter value used for the raster plot mode -- use -1 for a default incrementing counter. The NetView displays this recorded data when Update is next called.

func (*NetView) RecordCounters

func (nv *NetView) RecordCounters(counters string)

RecordCounters saves the counters, so they are available for a Current update

func (*NetView) RecordSyns

func (nv *NetView) RecordSyns()

RecordSyns records synaptic data -- stored separate from unit data and only needs to be called when synaptic values are updated. Should be done when the DWt values have been computed, before updating Wts and zeroing. NetView displays this recorded data when Update is next called.

func (*NetView) SaveWeights

func (nv *NetView) SaveWeights(filename core.Filename)

SaveWeights saves the network weights -- when called with views.CallMethod it will auto-prompt for filename

func (*NetView) SceneWidget

func (nv *NetView) SceneWidget() *Scene

func (*NetView) SceneXYZ

func (nv *NetView) SceneXYZ() *xyz.Scene

func (*NetView) SetColorMap

func (t *NetView) SetColorMap(v *colormap.Map) *NetView

SetColorMap sets the [NetView.ColorMap]: color map for mapping values to colors -- set by name in Params

func (*NetView) SetColorMapVal

func (t *NetView) SetColorMapVal(v *views.ColorMapValue) *NetView

SetColorMapVal sets the [NetView.ColorMapVal]: color map value representing ColorMap

func (*NetView) SetCounters

func (nv *NetView) SetCounters(ctrs string)

SetCounters sets the counters widget view display at bottom of netview

func (*NetView) SetCurVarParams

func (t *NetView) SetCurVarParams(v *VarParams) *NetView

SetCurVarParams sets the [NetView.CurVarParams]: current var params -- only valid during Update of display

func (*NetView) SetData

func (t *NetView) SetData(v NetData) *NetView

SetData sets the [NetView.Data]: contains all the network data with history

func (*NetView) SetDataMu

func (t *NetView) SetDataMu(v sync.RWMutex) *NetView

SetDataMu sets the [NetView.DataMu]: mutex on data access

func (*NetView) SetDi

func (t *NetView) SetDi(v int) *NetView

SetDi sets the [NetView.Di]: current data parallel index di, for networks capable of processing input patterns in parallel.

func (*NetView) SetLastCtrs

func (t *NetView) SetLastCtrs(v string) *NetView

SetLastCtrs sets the [NetView.LastCtrs]: last non-empty counters string provided -- re-used if no new one

func (*NetView) SetMaxRecs

func (nv *NetView) SetMaxRecs(max int)

SetMaxRecs sets the maximum number of records that are maintained (default 210) resets the current data in the process

func (*NetView) SetNet

func (nv *NetView) SetNet(net emer.Network)

SetNet sets the network to view and updates view

func (*NetView) SetParams

func (t *NetView) SetParams(v Params) *NetView

SetParams sets the [NetView.Params]: parameters controlling how the view is rendered

func (*NetView) SetRecNo

func (t *NetView) SetRecNo(v int) *NetView

SetRecNo sets the [NetView.RecNo]: record number to display -- use -1 to always track latest, otherwise in range

func (*NetView) SetSynVars

func (t *NetView) SetSynVars(v ...string) *NetView

SetSynVars sets the [NetView.SynVars]: list of synaptic variables

func (*NetView) SetSynVarsMap

func (t *NetView) SetSynVarsMap(v map[string]int) *NetView

SetSynVarsMap sets the [NetView.SynVarsMap]: map of synaptic variable names to index

func (*NetView) SetTooltip

func (t *NetView) SetTooltip(v string) *NetView

SetTooltip sets the [NetView.Tooltip]

func (*NetView) SetVar

func (nv *NetView) SetVar(vr string)

SetVar sets the variable to view and updates the display

func (*NetView) SetVarParams

func (t *NetView) SetVarParams(v map[string]*VarParams) *NetView

SetVarParams sets the [NetView.VarParams]: parameters for the list of variables to view

func (*NetView) SetVars

func (t *NetView) SetVars(v ...string) *NetView

SetVars sets the [NetView.Vars]: the list of variables to view

func (*NetView) ShowAllParams

func (nv *NetView) ShowAllParams() string

ShowAllParams shows a dialog of all the parameters in the network.

func (*NetView) ShowKeyLayerParams

func (nv *NetView) ShowKeyLayerParams() string

ShowKeyLayerParams shows a dialog with a listing for all layers in the network, of the most important layer-level params (specific to each algorithm)

func (*NetView) ShowKeyPrjnParams

func (nv *NetView) ShowKeyPrjnParams() string

ShowKeyPrjnParams shows a dialog with a listing for all Recv projections in the network, of the most important projection-level params (specific to each algorithm)

func (*NetView) ShowNonDefaultParams

func (nv *NetView) ShowNonDefaultParams() string

ShowNonDefaultParams shows a dialog of all the parameters that are not at their default values in the network. Useful for setting params.

func (*NetView) Toolbar

func (nv *NetView) Toolbar() *core.Toolbar

func (*NetView) UnitValColor

func (nv *NetView) UnitValColor(lay emer.Layer, idx1d int, raw float32, hasval bool) (scaled float32, clr color.RGBA)

UnitValColor returns the raw value, scaled value, and color representation for given unit of given layer. scaled is in range -1..1

func (*NetView) UnitValRaster

func (nv *NetView) UnitValRaster(lay emer.Layer, idx []int, rCtr int) (raw, scaled float32, clr color.RGBA, hasval bool)

UnitValRaster returns the raw value, scaled value, and color representation for given unit of given layer, and given raster counter index value (0..RasterMax) scaled is in range -1..1

func (*NetView) UnitValue

func (nv *NetView) UnitValue(lay emer.Layer, idx []int) (raw, scaled float32, clr color.RGBA, hasval bool)

UnitVal returns the raw value, scaled value, and color representation for given unit of given layer. scaled is in range -1..1

func (*NetView) UpdateImpl

func (nv *NetView) UpdateImpl()

UpdateImpl does the guts of updating -- backend for Update or GoUpdate

func (*NetView) UpdateRecNo

func (nv *NetView) UpdateRecNo()

UpdateRecNo updates the record number viewing

func (*NetView) UpdateView

func (nv *NetView) UpdateView()

UpdateView updates the display based on last recorded state of network.

func (*NetView) VarScaleUpdate

func (nv *NetView) VarScaleUpdate(varNm string) bool

VarScaleUpdate updates display of the scaling params for given variable (use nv.Var for current) returns true if any setting changed (update always triggered)

func (*NetView) VarsConfig

func (nv *NetView) VarsConfig()

VarsConfig configures the variables

func (*NetView) VarsLay

func (nv *NetView) VarsLay() *core.Frame

func (*NetView) VarsListUpdate

func (nv *NetView) VarsListUpdate()

VarsListUpdate updates the list of network variables

func (*NetView) VarsUpdate

func (nv *NetView) VarsUpdate()

VarsUpdate updates the selection status of the variables and the view range state too

func (*NetView) ViewConfig

func (nv *NetView) ViewConfig()

ViewConfig configures the 3D view

func (*NetView) ViewDefaults

func (nv *NetView) ViewDefaults()

ViewDefaults are the default 3D view params

func (*NetView) Viewbar

func (nv *NetView) Viewbar() *core.Toolbar

type Params

type Params struct {

	// raster plot parameters
	Raster RasterParams `view:"inline"`

	// do not record synapse level data -- turn this on for very large networks where recording the entire synaptic state would be prohibitive
	NoSynData bool

	// if non-empty, this is the type projection to show when there are multiple projections from the same layer -- e.g., Inhib, Lateral, Forward, etc
	PrjnType string

	// maximum number of records to store to enable rewinding through prior states
	MaxRecs int `min:"1"`

	// number of variable columns
	NVarCols int

	// size of a single unit, where 1 = full width and no space.. .9 default
	UnitSize float32 `min:"0.1" max:"1" step:"0.1" default:"0.9"`

	// size of the layer name labels -- entire network view is unit sized
	LayNmSize float32 `min:"0.01" max:".1" step:"0.01" default:"0.05"`

	// name of color map to use
	ColorMap views.ColorMapName

	// opacity (0-1) of zero values -- greater magnitude values become increasingly opaque on either side of this minimum
	ZeroAlpha float32 `min:"0" max:"1" step:"0.1" default:"0.5"`

	// our netview, for update method
	NetView *NetView `copier:"-" json:"-" xml:"-" view:"-"`

	// the number of records to jump for fast forward/backward
	NFastSteps int
}

Params holds parameters controlling how the view is rendered

func (*Params) Defaults

func (nv *Params) Defaults()

func (*Params) Update

func (nv *Params) Update()

Update satisfies the core.Updater interface and will trigger display update on edits

type PrjnData

type PrjnData struct {

	// name of sending layer
	Send string

	// name of recv layer
	Recv string

	// source projection
	Prjn emer.Prjn

	// synaptic data, by variable in SynVars and number of data points
	SynData []float32
}

PrjnData holds display state for a projection

func (*PrjnData) Alloc

func (pd *PrjnData) Alloc()

Alloc allocates SynData to hold number of variables * nsyn synapses. If already has capacity, nothing happens.

func (*PrjnData) RecordData

func (pd *PrjnData) RecordData(nd *NetData)

RecordData records synaptic data from given prjn. must use sender or recv based depending on natural ordering.

type RasterParams

type RasterParams struct {

	// if true, show a raster plot over time, otherwise units
	On bool

	// if true, the raster counter (time) is plotted across the X axis -- otherwise the Z depth axis
	XAxis bool

	// maximum count for the counter defining the raster plot
	Max int

	// size of a single unit, where 1 = full width and no space.. 1 default
	UnitSize float32 `min:"0.1" max:"1" step:"0.1" default:"1"`

	// height multiplier for units, where 1 = full height.. 0.2 default
	UnitHeight float32 `min:"0.1" max:"1" step:"0.1" default:"0.2"`
}

RasterParams holds parameters controlling the raster plot view

func (*RasterParams) Defaults

func (nv *RasterParams) Defaults()

type Scene

type Scene struct {
	xyzview.Scene

	NetView *NetView
}

Scene is a Widget for managing the 3D Scene of the NetView

func NewScene

func NewScene(parent tree.Node, name ...string) *Scene

NewScene adds a new Scene with the given name to the given parent: Scene is a Widget for managing the 3D Scene of the NetView

func (*Scene) HandleEvents

func (sw *Scene) HandleEvents()

func (*Scene) LayerUnitAtPoint

func (sw *Scene) LayerUnitAtPoint(e events.Event) (lay emer.Layer, lx, ly, unIndex int)

func (*Scene) LongHoverEvent

func (sw *Scene) LongHoverEvent(e events.Event)

func (*Scene) MouseDownEvent

func (sw *Scene) MouseDownEvent(e events.Event)

func (*Scene) New

func (t *Scene) New() tree.Node

New returns a new *Scene value

func (*Scene) NodeType

func (t *Scene) NodeType() *types.Type

NodeType returns the *types.Type of Scene

func (*Scene) OnInit

func (sw *Scene) OnInit()

func (*Scene) SetCurrentManipPoint

func (t *Scene) SetCurrentManipPoint(v *xyzview.ManipPoint) *Scene

SetCurrentManipPoint sets the [Scene.CurrentManipPoint]

func (*Scene) SetCurrentSelected

func (t *Scene) SetCurrentSelected(v xyz.Node) *Scene

SetCurrentSelected sets the [Scene.CurrentSelected]

func (*Scene) SetNetView

func (t *Scene) SetNetView(v *NetView) *Scene

SetNetView sets the [Scene.NetView]

func (*Scene) SetSelectionMode

func (t *Scene) SetSelectionMode(v xyzview.SelectionModes) *Scene

SetSelectionMode sets the [Scene.SelectionMode]

func (*Scene) SetSelectionParams

func (t *Scene) SetSelectionParams(v xyzview.SelectionParams) *Scene

SetSelectionParams sets the [Scene.SelectionParams]

func (*Scene) SetTooltip

func (t *Scene) SetTooltip(v string) *Scene

SetTooltip sets the [Scene.Tooltip]

type VarParams

type VarParams struct {

	// name of the variable
	Var string

	// keep Min - Max centered around 0, and use negative heights for units -- else use full min-max range for height (no negative heights)
	ZeroCtr bool

	// range to display
	Range minmax.Range32 `view:"inline"`

	// if not using fixed range, this is the actual range of data
	MinMax minmax.F32 `view:"inline"`
}

VarParams holds parameters for display of each variable

func (*VarParams) Defaults

func (vp *VarParams) Defaults()

Defaults sets default values if otherwise not set

func (*VarParams) SetProps

func (vp *VarParams) SetProps(pstr string)

SetProps parses Go struct-tag style properties for variable and sets values accordingly for customized defaults

type ViewUpdate

type ViewUpdate struct {

	// the network view
	View *NetView `view:"-"`

	// whether in testing mode -- can be set in advance to drive appropriate updating
	Testing bool `view:"-"`

	// text to display at the bottom of the view
	Text string `view:"-"`

	// toggles update of display on
	On bool

	// if true, do not record network data when the NetView is invisible -- this speeds up running when not visible, but the NetView display will not show the current state when switching back to it
	SkipInvis bool

	// at what time scale to update the display during training?
	Train etime.Times

	// at what time scale to update the display during testing?
	Test etime.Times
}

ViewUpdate manages time scales for updating the NetView

func (*ViewUpdate) Config

func (vu *ViewUpdate) Config(nv *NetView, train, test etime.Times)

Config configures for given NetView and default train, test times

func (*ViewUpdate) GetUpdateTime

func (vu *ViewUpdate) GetUpdateTime(testing bool) etime.Times

GetUpdateTime returns the relevant update time based on testing flag

func (*ViewUpdate) GoUpdate

func (vu *ViewUpdate) GoUpdate()

GoUpdate does an update if view is On, visible and active, including recording new data and driving update of display. This version is only for calling from a separate goroutine, not the main event loop (see also Update).

func (*ViewUpdate) IsCycleUpdating

func (vu *ViewUpdate) IsCycleUpdating() bool

IsCycleUpdating returns true if the view is updating at a cycle level, either from raster or literal cycle level.

func (*ViewUpdate) IsViewingSynapse

func (vu *ViewUpdate) IsViewingSynapse() bool

IsViewingSynapse returns true if netview is actively viewing synapses.

func (*ViewUpdate) RecordSyns

func (vu *ViewUpdate) RecordSyns()

RecordSyns records synaptic data -- stored separate from unit data and only needs to be called when synaptic values are updated. Should be done when the DWt values have been computed, before updating Wts and zeroing. NetView displays this recorded data when Update is next called.

func (*ViewUpdate) Update

func (vu *ViewUpdate) Update()

Update does an update if view is On, visible and active, including recording new data and driving update of display. This version is only for calling from the main event loop (see also GoUpdate).

func (*ViewUpdate) UpdateCycle

func (vu *ViewUpdate) UpdateCycle(cyc int)

UpdateCycle triggers an update at the Cycle (Millisecond) timescale, using given text to display at bottom of view

func (*ViewUpdate) UpdateCycleRaster

func (vu *ViewUpdate) UpdateCycleRaster(cyc int)

UpdateCycleRaster raster version of Cycle update

func (*ViewUpdate) UpdateTime

func (vu *ViewUpdate) UpdateTime(time etime.Times)

UpdateTime triggers an update at given timescale.

func (*ViewUpdate) UpdateWhenStopped

func (vu *ViewUpdate) UpdateWhenStopped()

UpdateWhenStopped does an update when the network updating was stopped either via stepping or hitting the stop button. This has different logic for the raster view vs. regular. This is only for calling from a separate goroutine, not the main event loop.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL