agate

package
v1.1.31 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2021 License: BSD-3-Clause Imports: 11 Imported by: 0

README

AGate: Attentional & adaptive Gating of Action and Thought for Executive function

Documentation

Index

Constants

This section is empty.

Variables

View Source
var KiT_MaintLayer = kit.Types.AddType(&MaintLayer{}, leabra.LayerProps)
View Source
var KiT_Network = kit.Types.AddType(&Network{}, NetworkProps)
View Source
var KiT_OutLayer = kit.Types.AddType(&OutLayer{}, leabra.LayerProps)
View Source
var NetworkProps = deep.NetworkProps
View Source
var (
	// NeuronVarsAll is the agate collection of all neuron-level vars (deep, glong, pcore)
	NeuronVarsAll []string
)

Functions

func AddPFC

func AddPFC(nt *leabra.Network, name string, nPoolsY, nPoolsX, nNeurY, nNeurX int, pulvLay bool) (super, ct, maint, out, pulv emer.Layer)

AddPFC adds a PFC system including SuperLayer, CT with CTCtxtPrjn, MaintLayer, and OutLayer which is gated by BG. Name is set to "PFC" if empty. Other layers have appropriate suffixes. Optionally creates a TRC Pulvinar for Super. Standard Deep CTCtxtPrjn PoolOneToOne Super -> CT projection, and 1to1 projections Super -> Maint and Maint -> Out class PFCFixed are created by default. CT is placed Behind Super, then Out and Maint, and Pulvinar behind CT if created.

func AddPFCPy

func AddPFCPy(nt *leabra.Network, name string, nPoolsY, nPoolsX, nNeurY, nNeurX int, pulvLay bool) []emer.Layer

AddPFCPy adds a PFC system including SuperLayer, CT with CTCtxtPrjn, MaintLayer, and OutLayer which is gated by BG. Name is set to "PFC" if empty. Other layers have appropriate suffixes. Optionally creates a TRC Pulvinar for Super. Standard Deep CTCtxtPrjn PoolOneToOne Super -> CT projection, and 1to1 projections Super -> Maint and Maint -> Out class PFCFixed are created by default. CT is placed Behind Super, then Out and Maint, and Pulvinar behind CT if created. Py is Python version, returns layers as a slice

Types

type MaintLayer

type MaintLayer struct {
	glong.Layer
	PulseClear PulseClearParams      `desc:"parameters for the synchronous pulse of activation / inhibition that clears NMDA maintenance."`
	InterInhib interinhib.InterInhib `desc:"inhibition from output layer"`
}

///////////////////////////////////////////////////////////////////////// MaintLayer is a layer with NMDA channels that supports active maintenance in frontal cortex, via NMDA channels (in an NMDAMaintPrjn).

func AddMaintLayer

func AddMaintLayer(nt *leabra.Network, name string, nPoolsY, nPoolsX, nNeurY, nNeurX int) *MaintLayer

AddMaintLayer adds a MaintLayer using 4D shape with pools, and lateral NMDAMaint PoolOneToOne connectivity.

func (*MaintLayer) Defaults

func (ly *MaintLayer) Defaults()

func (*MaintLayer) InhibFmGeAct

func (ly *MaintLayer) InhibFmGeAct(ltime *leabra.Time)

InhibFmGeAct computes inhibition Gi from Ge and Act averages within relevant Pools

func (*MaintLayer) InterInhibMaxAct

func (ly *MaintLayer) InterInhibMaxAct(ltime *leabra.Time) float32

InterInhibMaxAct returns the AlphaMax activation for source layers

func (*MaintLayer) PulseClearNMDA

func (ly *MaintLayer) PulseClearNMDA()

PulseClearNMDA simulates a synchronous pulse of activation that clears the NMDA and puts the layer into a refractory state by activating the GABAB currents.

type Network

type Network struct {
	deep.Network
}

agate.Network has methods for configuring specialized AGate network components for Attentional & adaptive Gating of Action and Thought for Executive function.

func (*Network) AddBG

func (nt *Network) AddBG(prefix string, nPoolsY, nPoolsX, nNeurY, nNeurX int, space float32) (mtxGo, mtxNo, cin, gpeOut, gpeIn, gpeTA, stnp, stns, gpi, vthal leabra.LeabraLayer)

AddBG adds MtxGo, No, CIN, GPeOut, GPeIn, GPeTA, STNp, STNs, GPi, and VThal layers, with given optional prefix. Assumes that a 4D structure will be used, with Pools representing separable gating domains. Only Matrix has more than 1 unit per Pool by default. Appropriate PoolOneToOne connections are made between layers, using standard styles. space is the spacing between layers (2 typical)

func (*Network) AddPFC

func (nt *Network) AddPFC(name string, nPoolsY, nPoolsX, nNeurY, nNeurX int, pulvLay bool) (super, ct, maint, out, pulv emer.Layer)

AddPFC adds a PFC system including SuperLayer, CT with CTCtxtPrjn, MaintLayer, and OutLayer which is gated by BG. Name is set to "PFC" if empty. Other layers have appropriate suffixes. Optionally creates a TRC Pulvinar for Super. CT is placed Behind Super, then Out and Maint, and Pulvinar behind CT if created.

func (*Network) ConnectToMatrix

func (nt *Network) ConnectToMatrix(send, recv emer.Layer, pat prjn.Pattern) emer.Prjn

ConnectToMatrix adds a MatrixTracePrjn from given sending layer to a matrix layer

func (*Network) Defaults

func (nt *Network) Defaults()

Defaults sets all the default parameters for all layers and projections

func (*Network) SynVarNames

func (nt *Network) SynVarNames() []string

SynVarNames returns the names of all the variables on the synapses in this network.

func (*Network) UnitVarNames

func (nt *Network) UnitVarNames() []string

UnitVarNames returns a list of variable names available on the units in this layer

func (*Network) UnitVarProps

func (nt *Network) UnitVarProps() map[string]string

UnitVarProps returns properties for variables

func (*Network) UpdateParams

func (nt *Network) UpdateParams()

UpdateParams updates all the derived parameters if any have changed, for all layers and projections

type OutLayer

type OutLayer struct {
	MaintLayer
	Out OutParams `desc:"Parameters for output layer function"`
}

OutLayer is a frontal cortex output layer (L5 PM), which typically is interconnected with Ventral Thalamus (VM / VA etc) for output gating, and also NMDAPrjn maintenance.

func AddOutLayer

func AddOutLayer(nt *leabra.Network, name string, nPoolsY, nPoolsX, nNeurY, nNeurX int) *OutLayer

AddOutLayer adds a OutLayer using 4D shape with pools, and lateral PoolOneToOne connectivity.

func (*OutLayer) ClearLays

func (ly *OutLayer) ClearLays() ([]PulseClearer, error)

ClearLays returns the Layers by name

func (*OutLayer) CyclePost

func (ly *OutLayer) CyclePost(ltime *leabra.Time)

CyclePost calls ResetMaint

func (*OutLayer) Defaults

func (ly *OutLayer) Defaults()

func (*OutLayer) PulseClear

func (ly *OutLayer) PulseClear(ltime *leabra.Time)

PulseClear sends a simulated synchronous pulse of activation / inhibition to clear ClearLays

type OutParams

type OutParams struct {
	ResetThr  float32       `desc:"threshold on activation, above which the ClearLays will be reset"`
	ClearLays emer.LayNames `desc:"name of corresponding layers that are reset when this layer gets activated"`
}

OutParams determine the behavior of OutLayer

func (*OutParams) Defaults

func (np *OutParams) Defaults()

type PulseClearParams

type PulseClearParams struct {
	GABAB float32 `desc:"GABAB value activated by the inhibitory pulse"`
}

PulseClearParams are parameters for the synchronous pulse of activation / inhibition that clears NMDA maintenance.

func (*PulseClearParams) Defaults

func (pc *PulseClearParams) Defaults()

type PulseClearer

type PulseClearer interface {
	leabra.LeabraLayer

	// PulseClearNMDA simulates a synchronous pulse of activation that
	// clears the NMDA and puts the layer into a refractory state by
	// activating the GABAB currents.
	PulseClearNMDA()
}

PulseClearer is an interface for Layers that have the PulseClearNMDA method for clearing NMDA and activating GABAB refractory inhibition

Jump to

Keyboard shortcuts

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