From c087ae09a23d3e9fbd7f201592fea8bb09a19c6b Mon Sep 17 00:00:00 2001 From: angelajt Date: Thu, 19 Dec 2024 14:34:42 -0800 Subject: [PATCH 1/7] fix index out of range error --- ch10/sem/sem_env.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ch10/sem/sem_env.go b/ch10/sem/sem_env.go index 2f68c520..b4885b1b 100644 --- a/ch10/sem/sem_env.go +++ b/ch10/sem/sem_env.go @@ -244,7 +244,8 @@ func (ev *SemEnv) Action(element string, input tensor.Tensor) { // String returns the string rep of the LED env state func (ev *SemEnv) String() string { cpar := ev.CurPara() - if cpar == nil { + + if cpar == nil || len(cpar) == 0 { return "" } str := cpar[0] From 59490d702c74141479944c1e13eb8040ad7fe905 Mon Sep 17 00:00:00 2001 From: angelajt Date: Thu, 19 Dec 2024 14:39:38 -0800 Subject: [PATCH 2/7] remove blank line --- ch10/sem/sem_env.go | 1 - 1 file changed, 1 deletion(-) diff --git a/ch10/sem/sem_env.go b/ch10/sem/sem_env.go index b4885b1b..9cf47883 100644 --- a/ch10/sem/sem_env.go +++ b/ch10/sem/sem_env.go @@ -244,7 +244,6 @@ func (ev *SemEnv) Action(element string, input tensor.Tensor) { // String returns the string rep of the LED env state func (ev *SemEnv) String() string { cpar := ev.CurPara() - if cpar == nil || len(cpar) == 0 { return "" } From c1bc18e41c633f1edcfd92d6a4fbb3656eb15f89 Mon Sep 17 00:00:00 2001 From: angelajt Date: Thu, 19 Dec 2024 22:29:36 -0800 Subject: [PATCH 3/7] simplify cpar check --- ch10/sem/sem_env.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch10/sem/sem_env.go b/ch10/sem/sem_env.go index 9cf47883..07372c9b 100644 --- a/ch10/sem/sem_env.go +++ b/ch10/sem/sem_env.go @@ -244,7 +244,7 @@ func (ev *SemEnv) Action(element string, input tensor.Tensor) { // String returns the string rep of the LED env state func (ev *SemEnv) String() string { cpar := ev.CurPara() - if cpar == nil || len(cpar) == 0 { + if len(cpar) == 0 { return "" } str := cpar[0] From 012bb1f863beb315dab6c502b0076972b163aa62 Mon Sep 17 00:00:00 2001 From: angelajt Date: Tue, 28 Jan 2025 14:30:16 -0800 Subject: [PATCH 4/7] embed readme in all sims --- ch10/dyslexia/dyslexia.go | 5 ++++- ch10/sem/sem.go | 5 ++++- ch10/sg/sg.go | 5 ++++- ch10/ss/ss.go | 5 ++++- ch2/detector/detector.go | 5 ++++- ch2/neuron/neuron.go | 6 +++++- ch3/cats_dogs/cats_dogs.go | 5 ++++- ch3/faces/faces.go | 5 ++++- ch3/inhib/inhib.go | 7 ++++++- ch3/necker_cube/necker_cube.go | 5 ++++- ch4/err_driven_hidden/err_driven_hidden.go | 5 ++++- ch4/family_trees/family_trees.go | 5 ++++- ch4/hebberr_combo/hebberr_combo.go | 5 ++++- ch4/pat_assoc/pat_assoc.go | 5 ++++- ch4/self_org/self_org.go | 5 ++++- ch6/attn/attn.go | 5 ++++- ch6/objrec/objrec.go | 9 ++++++++- ch6/v1rf/v1rf.go | 5 ++++- ch7/abac/abac.go | 5 ++++- ch7/hip/hip.go | 5 ++++- ch7/priming/priming.go | 5 ++++- ch8/bg/bg.go | 7 ++++++- ch8/rl/rl.go | 7 ++++++- ch9/a_not_b/a_not_b.go | 5 ++++- ch9/sir/sir.go | 6 +++++- ch9/stroop/stroop.go | 5 ++++- 26 files changed, 116 insertions(+), 26 deletions(-) diff --git a/ch10/dyslexia/dyslexia.go b/ch10/dyslexia/dyslexia.go index 58278c28..fa724745 100644 --- a/ch10/dyslexia/dyslexia.go +++ b/ch10/dyslexia/dyslexia.go @@ -47,6 +47,9 @@ import ( //go:embed train_pats.tsv semantics.tsv close_orthos.tsv close_sems.tsv trained.wts var content embed.FS +//go:embed *.png README.md +var readme embed.FS + // LesionTypes is the type of lesion type LesionTypes int32 //enums:enum @@ -855,7 +858,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Dyslexia" - ss.GUI.MakeBody(ss, "dyslexia", title, `Simulates normal and disordered (dyslexic) reading performance in terms of a distributed representation of word-level knowledge across Orthography, Semantics, and Phonology. It is based on a model by Plaut and Shallice (1993). Note that this form of dyslexia is *aquired* (via brain lesions such as stroke) and not the more prevalent developmental variety. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "dyslexia", title, `Simulates normal and disordered (dyslexic) reading performance in terms of a distributed representation of word-level knowledge across Orthography, Semantics, and Phonology. It is based on a model by Plaut and Shallice (1993). Note that this form of dyslexia is *aquired* (via brain lesions such as stroke) and not the more prevalent developmental variety. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch10/sem/sem.go b/ch10/sem/sem.go index ae0c64cc..54b2f4d6 100644 --- a/ch10/sem/sem.go +++ b/ch10/sem/sem.go @@ -42,6 +42,9 @@ import ( //go:embed cecn_lg_f5.text cecn_lg_f5.words quiz.text trained_rec05.wts.gz var content embed.FS +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -657,7 +660,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Semantics" - ss.GUI.MakeBody(ss, "sem", title, `sem is trained using Hebbian learning on paragraphs from an early draft of the *Computational Explorations..* textbook, allowing it to learn about the overall statistics of when different words co-occur with other words, and thereby learning a surprisingly capable (though clearly imperfect) level of semantic knowlege about the topics covered in the textbook. This replicates the key results from the Latent Semantic Analysis research by Landauer and Dumais (1997). See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "sem", title, `sem is trained using Hebbian learning on paragraphs from an early draft of the *Computational Explorations..* textbook, allowing it to learn about the overall statistics of when different words co-occur with other words, and thereby learning a surprisingly capable (though clearly imperfect) level of semantic knowlege about the topics covered in the textbook. This replicates the key results from the Latent Semantic Analysis research by Landauer and Dumais (1997). See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch10/sg/sg.go b/ch10/sg/sg.go index 5fac56b9..2b1a2f9a 100644 --- a/ch10/sg/sg.go +++ b/ch10/sg/sg.go @@ -45,6 +45,9 @@ import ( //go:embed trained.wts.gz sg_rules.txt sg_tests.txt sg_probes.txt var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -800,7 +803,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Sentence Gestalt" - ss.GUI.MakeBody(ss, "sg", title, `This is the sentence gestalt model, which learns to encode both syntax and semantics of sentences in an integrated "gestalt" hidden layer. The sentences have simple agent-verb-patient structure with optional prepositional or adverb modifier phrase at the end, and can be either in the active or passive form (80% active, 20% passive). There are ambiguous terms that need to be resolved via context, showing a key interaction between syntax and semantics. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "sg", title, `This is the sentence gestalt model, which learns to encode both syntax and semantics of sentences in an integrated "gestalt" hidden layer. The sentences have simple agent-verb-patient structure with optional prepositional or adverb modifier phrase at the end, and can be either in the active or passive form (80% active, 20% passive). There are ambiguous terms that need to be resolved via context, showing a key interaction between syntax and semantics. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch10/ss/ss.go b/ch10/ss/ss.go index c6394030..b23765bc 100644 --- a/ch10/ss/ss.go +++ b/ch10/ss/ss.go @@ -44,6 +44,9 @@ import ( //go:embed train_pats.tsv probe.tsv besner.tsv glushko.tsv taraban.tsv phon_cons.tsv phon_vowel.tsv trained.wts.gz var content embed.FS +//go:embed *.png README.md +var readme embed.FS + // EnvType is the type of test environment type EnvType int32 //enums:enum @@ -697,7 +700,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Spelling to Sound" - ss.GUI.MakeBody(ss, "ss", title, `explores the way that regularities and exceptions are learned in the mapping between spelling (orthography) and sound (phonology), in the context of a "direct pathway" mapping between these two forms of word representations. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "ss", title, `explores the way that regularities and exceptions are learned in the mapping between spelling (orthography) and sound (phonology), in the context of a "direct pathway" mapping between these two forms of word representations. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch2/detector/detector.go b/ch2/detector/detector.go index 4ce02880..47722bb1 100644 --- a/ch2/detector/detector.go +++ b/ch2/detector/detector.go @@ -38,6 +38,9 @@ import ( //go:embed *.tsv var patsfs embed.FS +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -397,7 +400,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Detector" - ss.GUI.MakeBody(ss, "detector", title, `This simulation shows how an individual neuron can act like a detector, picking out specific patterns from its inputs and responding with varying degrees of selectivity to the match between its synaptic weights and the input activity pattern. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "detector", title, `This simulation shows how an individual neuron can act like a detector, picking out specific patterns from its inputs and responding with varying degrees of selectivity to the match between its synaptic weights and the input activity pattern. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch2/neuron/neuron.go b/ch2/neuron/neuron.go index 13f26df4..1fdcf561 100644 --- a/ch2/neuron/neuron.go +++ b/ch2/neuron/neuron.go @@ -10,6 +10,7 @@ package main //go:generate core generate -add-types import ( + "embed" "fmt" "log" "reflect" @@ -31,6 +32,9 @@ import ( "github.com/emer/leabra/v2/spike" ) +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -423,7 +427,7 @@ func (ss *Sim) ConfigNetView(nv *netview.NetView) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Neuron" - ss.GUI.MakeBody(ss, "neuron", title, `This simulation illustrates the basic properties of neural spiking and rate-code activation, reflecting a balance of excitatory and inhibitory influences (including leak and synaptic inhibition). See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "neuron", title, `This simulation illustrates the basic properties of neural spiking and rate-code activation, reflecting a balance of excitatory and inhibitory influences (including leak and synaptic inhibition). See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch3/cats_dogs/cats_dogs.go b/ch3/cats_dogs/cats_dogs.go index 8323a92f..e8a47597 100644 --- a/ch3/cats_dogs/cats_dogs.go +++ b/ch3/cats_dogs/cats_dogs.go @@ -39,6 +39,9 @@ import ( //go:embed cats_dogs_pats.tsv cats_dogs.wts var content embed.FS +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -435,7 +438,7 @@ func (ss *Sim) ConfigNetView(nv *netview.NetView) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "CatsAndDogs" - ss.GUI.MakeBody(ss, "cats_dogs", title, `This project explores a simple **semantic network** intended to represent a (very small) set of relationships among different features used to represent a set of entities in the world. In our case, we represent some features of cats and dogs: their color, size, favorite food, and favorite toy. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "cats_dogs", title, `This project explores a simple **semantic network** intended to represent a (very small) set of relationships among different features used to represent a set of entities in the world. In our case, we represent some features of cats and dogs: their color, size, favorite food, and favorite toy. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch3/faces/faces.go b/ch3/faces/faces.go index a9ffdf34..aadc131f 100644 --- a/ch3/faces/faces.go +++ b/ch3/faces/faces.go @@ -48,6 +48,9 @@ import ( //go:embed faces.tsv partial_faces.tsv faces.wts var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -557,7 +560,7 @@ func (ss *Sim) ConfigNetView(nv *netview.NetView) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Faces" - ss.GUI.MakeBody(ss, "faces", title, `This project explores how sensory inputs (in this case simple cartoon faces) can be categorized in multiple different ways, to extract the relevant information and collapse across the irrelevant. It allows you to explore both bottom-up processing from face image to categories, and top-down processing from category values to face images (imagery), including the ability to dynamically iterate both bottom-up and top-down to cleanup partial inputs (partially occluded face images). See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "faces", title, `This project explores how sensory inputs (in this case simple cartoon faces) can be categorized in multiple different ways, to extract the relevant information and collapse across the irrelevant. It allows you to explore both bottom-up processing from face image to categories, and top-down processing from category values to face images (imagery), including the ability to dynamically iterate both bottom-up and top-down to cleanup partial inputs (partially occluded face images). See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch3/inhib/inhib.go b/ch3/inhib/inhib.go index f5ac6e67..a72c183c 100644 --- a/ch3/inhib/inhib.go +++ b/ch3/inhib/inhib.go @@ -10,6 +10,8 @@ package main //go:generate core generate -add-types import ( + "embed" + "cogentcore.org/core/base/errors" "cogentcore.org/core/base/randx" "cogentcore.org/core/core" @@ -32,6 +34,9 @@ import ( "github.com/emer/leabra/v2/leabra" ) +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -591,7 +596,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Inhib" - ss.GUI.MakeBody(ss, "inhib", title, `inhib: This simulation explores how inhibitory interneurons can dynamically control overall activity levels within the network, by providing both feedforward and feedback inhibition to excitatory pyramidal neurons. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "inhib", title, `inhib: This simulation explores how inhibitory interneurons can dynamically control overall activity levels within the network, by providing both feedforward and feedback inhibition to excitatory pyramidal neurons. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("FF Net") diff --git a/ch3/necker_cube/necker_cube.go b/ch3/necker_cube/necker_cube.go index 81edb647..ec3b0376 100644 --- a/ch3/necker_cube/necker_cube.go +++ b/ch3/necker_cube/necker_cube.go @@ -32,6 +32,9 @@ import ( //go:embed necker_cube.wts var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -372,7 +375,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "NeckerCube" - ss.GUI.MakeBody(ss, "necker_cube", title, `necker_cube: This simulation explores the use of constraint satisfaction in processing ambiguous stimuli, in this case the *Necker cube*, which can be viewed as a cube in one of two orientations, where people flip back and forth. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "necker_cube", title, `necker_cube: This simulation explores the use of constraint satisfaction in processing ambiguous stimuli, in this case the *Necker cube*, which can be viewed as a cube in one of two orientations, where people flip back and forth. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch4/err_driven_hidden/err_driven_hidden.go b/ch4/err_driven_hidden/err_driven_hidden.go index a1ab71ce..954a9e9b 100644 --- a/ch4/err_driven_hidden/err_driven_hidden.go +++ b/ch4/err_driven_hidden/err_driven_hidden.go @@ -38,6 +38,9 @@ import ( //go:embed easy.tsv hard.tsv impossible.tsv var content embed.FS +//go:embed README.md +var readme embed.FS + // PatsType is the type of training patterns type PatsType int32 //enums:enum @@ -570,7 +573,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Error Driven Hidden" - ss.GUI.MakeBody(ss, "err_driven_hidden", title, `err_driven_hidden shows how XCal error driven learning can train a hidden layer to solve problems that are otherwise impossible for a simple two layer network (as we saw in the Pattern Associator exploration, which should be completed first before doing this one). See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "err_driven_hidden", title, `err_driven_hidden shows how XCal error driven learning can train a hidden layer to solve problems that are otherwise impossible for a simple two layer network (as we saw in the Pattern Associator exploration, which should be completed first before doing this one). See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch4/family_trees/family_trees.go b/ch4/family_trees/family_trees.go index 0a991273..433162ef 100644 --- a/ch4/family_trees/family_trees.go +++ b/ch4/family_trees/family_trees.go @@ -41,6 +41,9 @@ import ( //go:embed family_trees.tsv var content embed.FS +//go:embed *.png README.md +var readme embed.FS + // LearnType is the type of learning to use type LearnType int32 //enums:enum @@ -613,7 +616,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Family Trees" - ss.GUI.MakeBody(ss, "family_trees", title, `family_trees shows how learning can recode inputs that have no similarity structure into a hidden layer that captures the *functional* similarity structure of the items. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "family_trees", title, `family_trees shows how learning can recode inputs that have no similarity structure into a hidden layer that captures the *functional* similarity structure of the items. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch4/hebberr_combo/hebberr_combo.go b/ch4/hebberr_combo/hebberr_combo.go index eeb46ffa..fa68facf 100644 --- a/ch4/hebberr_combo/hebberr_combo.go +++ b/ch4/hebberr_combo/hebberr_combo.go @@ -43,6 +43,9 @@ import ( //go:embed lines2out1.tsv var content embed.FS +//go:embed README.md +var readme embed.FS + // LearnType is the type of learning to use type LearnType int32 //enums:enum @@ -659,7 +662,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "HebbErr_Combo" - ss.GUI.MakeBody(ss, "hebberr_combo", title, `hebberr_combo shows how XCal hebbian learning in shallower layers of a network can aid an error driven learning network to generalize to unseen combinations of patterns. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "hebberr_combo", title, `hebberr_combo shows how XCal hebbian learning in shallower layers of a network can aid an error driven learning network to generalize to unseen combinations of patterns. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch4/pat_assoc/pat_assoc.go b/ch4/pat_assoc/pat_assoc.go index 67186fe3..67e1cf2f 100644 --- a/ch4/pat_assoc/pat_assoc.go +++ b/ch4/pat_assoc/pat_assoc.go @@ -37,6 +37,9 @@ import ( //go:embed easy.tsv hard.tsv impossible.tsv var content embed.FS +//go:embed README.md +var readme embed.FS + // PatsType is the type of training patterns type PatsType int32 //enums:enum @@ -559,7 +562,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Pat Assoc" - ss.GUI.MakeBody(ss, "pat_assoc", title, `pat_assoc illustrates how error-driven and hebbian learning can operate within a simple task-driven learning context, with no hidden layers. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "pat_assoc", title, `pat_assoc illustrates how error-driven and hebbian learning can operate within a simple task-driven learning context, with no hidden layers. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch4/self_org/self_org.go b/ch4/self_org/self_org.go index 10973136..63d325c3 100644 --- a/ch4/self_org/self_org.go +++ b/ch4/self_org/self_org.go @@ -39,6 +39,9 @@ import ( //go:embed lines_5x5x1.tsv lines_5x5x2.tsv var content embed.FS +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -557,7 +560,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Self Org" - ss.GUI.MakeBody(ss, "self_org", title, `self_org illustrates how self-organizing learning emerges from the interactions between inhibitory competition, rich-get-richer Hebbian learning, and homeostasis (negative feedback). See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "self_org", title, `self_org illustrates how self-organizing learning emerges from the interactions between inhibitory competition, rich-get-richer Hebbian learning, and homeostasis (negative feedback). See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch6/attn/attn.go b/ch6/attn/attn.go index 9995296a..d775d8bc 100644 --- a/ch6/attn/attn.go +++ b/ch6/attn/attn.go @@ -43,6 +43,9 @@ import ( //go:embed multi_objs.tsv std_posner.tsv close_posner.tsv reverse_posner.tsv obj_attn.tsv var content embed.FS +//go:embed *.png README.md +var readme embed.FS + // TestType is the type of testing patterns type TestType int32 //enums:enum @@ -781,7 +784,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Attn" - ss.GUI.MakeBody(ss, "attn", title, `attn: This simulation illustrates how object recognition (ventral, what) and spatial (dorsal, where) pathways interact to produce spatial attention effects, and accurately capture the effects of brain damage to the spatial pathway. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "attn", title, `attn: This simulation illustrates how object recognition (ventral, what) and spatial (dorsal, where) pathways interact to produce spatial attention effects, and accurately capture the effects of brain damage to the spatial pathway. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch6/objrec/objrec.go b/ch6/objrec/objrec.go index 9400b948..f5f45596 100644 --- a/ch6/objrec/objrec.go +++ b/ch6/objrec/objrec.go @@ -48,6 +48,9 @@ import ( //go:embed objrec_train1.wts.gz var content embed.FS +//go:embed *.png *.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -598,7 +601,7 @@ func (ss *Sim) ConfigActRFs() { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Object Recognition" - ss.GUI.MakeBody(ss, "objrec", title, `This simulation explores how a hierarchy of areas in the ventral stream of visual processing (up to inferotemporal (IT) cortex) can produce robust object recognition that is invariant to changes in position, size, etc of retinal input images. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "objrec", title, `This simulation explores how a hierarchy of areas in the ventral stream of visual processing (up to inferotemporal (IT) cortex) can produce robust object recognition that is invariant to changes in position, size, etc of retinal input images. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") @@ -624,6 +627,10 @@ func (ss *Sim) ConfigGUI() { ss.GUI.AddActRFGridTabs(&ss.Stats.ActRFs) ss.GUI.FinalizeGUI(false) + + // ctx := htmlcore.NewContext() + // ctx.PageURL = "https://github.com/CompCogNeuro/sims/blob/main/ch6/objrec/" + // htmlcore.ReadMDString(ctx, ss.GUI.ReadMe, readme) } func (ss *Sim) MakeToolbar(p *tree.Plan) { diff --git a/ch6/v1rf/v1rf.go b/ch6/v1rf/v1rf.go index 5e53ede5..cb2c03e7 100644 --- a/ch6/v1rf/v1rf.go +++ b/ch6/v1rf/v1rf.go @@ -46,6 +46,9 @@ import ( //go:embed v1rf_img1.jpg v1rf_img2.jpg v1rf_img3.jpg v1rf_img4.jpg v1rf_rec2.wts.gz v1rf_rec05.wts.gz probes.tsv var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -547,7 +550,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "V1RF" - ss.GUI.MakeBody(ss, "v1rf", title, `This simulation illustrates how self-organizing learning in response to natural images produces the oriented edge detector receptive field properties of neurons in primary visual cortex (V1). This provides insight into why the visual system encodes information in the way it does, while also providing an important test of the biological relevance of our computational models. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "v1rf", title, `This simulation illustrates how self-organizing learning in response to natural images produces the oriented edge detector receptive field properties of neurons in primary visual cortex (V1). This provides insight into why the visual system encodes information in the way it does, while also providing an important test of the biological relevance of our computational models. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch7/abac/abac.go b/ch7/abac/abac.go index 396f984c..b4457cf1 100644 --- a/ch7/abac/abac.go +++ b/ch7/abac/abac.go @@ -45,6 +45,9 @@ import ( //go:embed ab_pats.tsv ac_pats.tsv var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -661,7 +664,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "ABAC" - ss.GUI.MakeBody(ss, "abac", title, `abac explores the classic paired associates learning task in a cortical-like network, which exhibits catastrophic levels of interference. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "abac", title, `abac explores the classic paired associates learning task in a cortical-like network, which exhibits catastrophic levels of interference. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch7/hip/hip.go b/ch7/hip/hip.go index 5170a963..a615817b 100644 --- a/ch7/hip/hip.go +++ b/ch7/hip/hip.go @@ -42,6 +42,9 @@ import ( //go:embed train_ab.tsv train_ac.tsv test_ab.tsv test_ac.tsv test_lure.tsv var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -929,7 +932,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Hippocampus" - ss.GUI.MakeBody(ss, "hip", title, `runs a hippocampus model on the AB-AC paired associate learning task. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "hip", title, `runs a hippocampus model on the AB-AC paired associate learning task. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch7/priming/priming.go b/ch7/priming/priming.go index 16523b61..db635094 100644 --- a/ch7/priming/priming.go +++ b/ch7/priming/priming.go @@ -40,6 +40,9 @@ import ( //go:embed twout_all.tsv twout_a.tsv twout_b.tsv trained.wts var content embed.FS +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -629,7 +632,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Priming" - ss.GUI.MakeBody(ss, "priming", title, `This simulation explores the neural basis of *priming* -- the often surprisingly strong impact of residual traces from prior experience, which can be either *weight-based* (small changes in synapses) or *activation-based* (residual neural activity). In the first part, we see how small weight changes caused by the standard slow cortical learning rate can produce significant behavioral priming, causing the network to favor one output pattern over another. Likewise, residual activation can bias subsequent processing, but this is short-lived and transient compared to the long-lasting effects of weight-based priming. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "priming", title, `This simulation explores the neural basis of *priming* -- the often surprisingly strong impact of residual traces from prior experience, which can be either *weight-based* (small changes in synapses) or *activation-based* (residual neural activity). In the first part, we see how small weight changes caused by the standard slow cortical learning rate can produce significant behavioral priming, causing the network to favor one output pattern over another. Likewise, residual activation can bias subsequent processing, but this is short-lived and transient compared to the long-lasting effects of weight-based priming. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch8/bg/bg.go b/ch8/bg/bg.go index 5b3656b7..a0940bda 100644 --- a/ch8/bg/bg.go +++ b/ch8/bg/bg.go @@ -14,6 +14,8 @@ package main //go:generate core generate -add-types import ( + "embed" + "cogentcore.org/core/base/errors" "cogentcore.org/core/base/randx" "cogentcore.org/core/core" @@ -38,6 +40,9 @@ import ( "github.com/emer/leabra/v2/leabra" ) +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -532,7 +537,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "BG" - ss.GUI.MakeBody(ss, "bg", title, `is a simplified basal ganglia (BG) network showing how dopamine bursts can reinforce *Go* (direct pathway) firing for actions that lead to reward, and dopamine dips reinforce *NoGo* (indirect pathway) firing for actions that do not lead to positive outcomes, producing Thorndike's classic *Law of Effect* for instrumental conditioning, and also providing a mechanism to learn and select among actions with different reward probabilities over multiple experiences. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "bg", title, `is a simplified basal ganglia (BG) network showing how dopamine bursts can reinforce *Go* (direct pathway) firing for actions that lead to reward, and dopamine dips reinforce *NoGo* (indirect pathway) firing for actions that do not lead to positive outcomes, producing Thorndike's classic *Law of Effect* for instrumental conditioning, and also providing a mechanism to learn and select among actions with different reward probabilities over multiple experiences. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch8/rl/rl.go b/ch8/rl/rl.go index ca0def5c..60a8a3f3 100644 --- a/ch8/rl/rl.go +++ b/ch8/rl/rl.go @@ -9,6 +9,8 @@ package main //go:generate core generate -add-types import ( + "embed" + "cogentcore.org/core/base/errors" "cogentcore.org/core/base/randx" "cogentcore.org/core/core" @@ -34,6 +36,9 @@ import ( "github.com/emer/leabra/v2/leabra" ) +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -484,7 +489,7 @@ func (ss *Sim) Log(mode etime.Modes, time etime.Times) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "RL" - ss.GUI.MakeBody(ss, "rl", title, `explores the temporal differences (TD) reinforcement learning algorithm under some basic Pavlovian conditioning environments. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "rl", title, `explores the temporal differences (TD) reinforcement learning algorithm under some basic Pavlovian conditioning environments. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch9/a_not_b/a_not_b.go b/ch9/a_not_b/a_not_b.go index 4093400a..c7a4e728 100644 --- a/ch9/a_not_b/a_not_b.go +++ b/ch9/a_not_b/a_not_b.go @@ -43,6 +43,9 @@ import ( //go:embed a_not_b_delay3.tsv a_not_b_delay5.tsv a_not_b_delay1.tsv var content embed.FS +//go:embed README.md +var readme embed.FS + // Delays is delay case to use type Delays int32 //enums:enum @@ -604,7 +607,7 @@ func (ss *Sim) ConfigNetView(nv *netview.NetView) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "A not B" - ss.GUI.MakeBody(ss, "a_not_b", title, `explores how the development of PFC active maintenance abilities can help to make behavior more flexible, in the sense that it can rapidly shift with changes in the environment. The development of flexibility has been extensively explored in the context of Piaget's famous A-not-B task, where a toy is first hidden several times in one hiding location (A), and then hidden in a new location (B). Depending on various task parameters, young kids reliably reach back at A instead of updating to B. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "a_not_b", title, `explores how the development of PFC active maintenance abilities can help to make behavior more flexible, in the sense that it can rapidly shift with changes in the environment. The development of flexibility has been extensively explored in the context of Piaget's famous A-not-B task, where a toy is first hidden several times in one hiding location (A), and then hidden in a new location (B). Depending on various task parameters, young kids reliably reach back at A instead of updating to B. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch9/sir/sir.go b/ch9/sir/sir.go index 829d069d..fdd24be0 100644 --- a/ch9/sir/sir.go +++ b/ch9/sir/sir.go @@ -13,6 +13,7 @@ package main //go:generate core generate -add-types import ( + "embed" "fmt" "cogentcore.org/core/base/randx" @@ -36,6 +37,9 @@ import ( "github.com/emer/leabra/v2/leabra" ) +//go:embed README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -733,7 +737,7 @@ func (ss *Sim) ConfigNetView(nv *netview.NetView) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "SIR" - ss.GUI.MakeBody(ss, "sir", title, `sir illustrates the dynamic gating of information into PFC active maintenance, by the basal ganglia (BG). It uses a simple Store-Ignore-Recall (SIR) task, where the BG system learns via phasic dopamine signals and trial-and-error exploration, discovering what needs to be stored, ignored, and recalled as a function of reinforcement of correct behavior, and learned reinforcement of useful working memory representations. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "sir", title, `sir illustrates the dynamic gating of information into PFC active maintenance, by the basal ganglia (BG). It uses a simple Store-Ignore-Recall (SIR) task, where the BG system learns via phasic dopamine signals and trial-and-error exploration, discovering what needs to be stored, ignored, and recalled as a function of reinforcement of correct behavior, and learned reinforcement of useful working memory representations. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") diff --git a/ch9/stroop/stroop.go b/ch9/stroop/stroop.go index 028b3a24..d7dda71d 100644 --- a/ch9/stroop/stroop.go +++ b/ch9/stroop/stroop.go @@ -42,6 +42,9 @@ import ( //go:embed stroop_train.tsv stroop_test.tsv stroop_soa.tsv var content embed.FS +//go:embed *.png README.md +var readme embed.FS + func main() { sim := &Sim{} sim.New() @@ -741,7 +744,7 @@ func (ss *Sim) ConfigNetView(nv *netview.NetView) { // ConfigGUI configures the Cogent Core GUI interface for this simulation. func (ss *Sim) ConfigGUI() { title := "Stroop" - ss.GUI.MakeBody(ss, "stroop", title, `illustrates how the PFC can produce top-down biasing for executive control, in the context of the widely studied Stroop task. See README.md on GitHub.

`) + ss.GUI.MakeBody(ss, "stroop", title, `illustrates how the PFC can produce top-down biasing for executive control, in the context of the widely studied Stroop task. See README.md on GitHub.

`, readme) ss.GUI.CycleUpdateInterval = 10 nv := ss.GUI.AddNetView("Network") From 4af47edc84a287a0fc6afa5307143aa7da7aabbf Mon Sep 17 00:00:00 2001 From: angelajt Date: Tue, 28 Jan 2025 14:31:35 -0800 Subject: [PATCH 5/7] remove extra comments in objrec --- ch6/objrec/objrec.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ch6/objrec/objrec.go b/ch6/objrec/objrec.go index f5f45596..fa470d0c 100644 --- a/ch6/objrec/objrec.go +++ b/ch6/objrec/objrec.go @@ -627,10 +627,6 @@ func (ss *Sim) ConfigGUI() { ss.GUI.AddActRFGridTabs(&ss.Stats.ActRFs) ss.GUI.FinalizeGUI(false) - - // ctx := htmlcore.NewContext() - // ctx.PageURL = "https://github.com/CompCogNeuro/sims/blob/main/ch6/objrec/" - // htmlcore.ReadMDString(ctx, ss.GUI.ReadMe, readme) } func (ss *Sim) MakeToolbar(p *tree.Plan) { From 76cc1d3402fdc421254858d811b94a406e27f456 Mon Sep 17 00:00:00 2001 From: angelajt Date: Fri, 31 Jan 2025 16:35:31 -0800 Subject: [PATCH 6/7] update to latest version of emergent --- go.mod | 4 +++- go.sum | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bf212851..d6b6d65e 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cogentcore.org/core v0.3.9-0.20250127075122-ddf64b82d707 cogentcore.org/lab v0.0.0-20250116065728-014d19175d12 github.com/anthonynsimon/bild v0.13.0 - github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250128232110-1e71a5c7249b + github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250201002925-55312434c89e github.com/emer/etensor v0.0.0-20250128230539-a9366874f7c3 github.com/emer/leabra/v2 v2.0.0-dev0.5.5.0.20250128232242-79e931d6fe3b github.com/emer/vision/v2 v2.0.0-dev0.1.0.0.20250128234953-cd0a89e77a4a @@ -23,9 +23,11 @@ require ( github.com/chewxy/math32 v1.10.1 // indirect github.com/cogentcore/webgpu v0.0.0-20250118183535-3dd1436165cf // indirect github.com/dlclark/regexp2 v1.11.0 // indirect + github.com/ericchiang/css v1.3.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect github.com/goki/freetype v1.0.5 // indirect + github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 // indirect github.com/gorilla/css v1.0.1 // indirect github.com/h2non/filetype v1.1.3 // indirect github.com/hack-pad/go-indexeddb v0.3.2 // indirect diff --git a/go.sum b/go.sum index 005c11fd..58aa8fc6 100644 --- a/go.sum +++ b/go.sum @@ -34,14 +34,16 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250128232110-1e71a5c7249b h1:9JietOCAVjGy9U14dbTJT2APMywpKT+sGH25eYQtK1g= -github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250128232110-1e71a5c7249b/go.mod h1:5tbTQvSxq8CDPvZffN1Rni/mLYG3jLxYicyWed1t4yo= +github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250201002925-55312434c89e h1:My80YylMg8Q149zAA8ethgoO3lYZLe9oFJBSwHsYzA4= +github.com/emer/emergent/v2 v2.0.0-dev0.1.7.0.20250201002925-55312434c89e/go.mod h1:CLuumwAUvo158v5KevLPuA0CZvIdV2LQ1KL4+fNJfbs= github.com/emer/etensor v0.0.0-20250128230539-a9366874f7c3 h1:9yia9XH5z88JjDJwi1trDlVQTIEJ9TTUwdxo6bzr94U= github.com/emer/etensor v0.0.0-20250128230539-a9366874f7c3/go.mod h1:pH4lH+TChvqJG4Lh2Qi1bS5e3pnGK1QDkCSfUX4J+lQ= github.com/emer/leabra/v2 v2.0.0-dev0.5.5.0.20250128232242-79e931d6fe3b h1:Z2QRcHh9kvDyKSwPYhc/8q/NwWcd0OUexuhZCq5oHJ4= github.com/emer/leabra/v2 v2.0.0-dev0.5.5.0.20250128232242-79e931d6fe3b/go.mod h1:Md86O3aaHH2hfZftTsg5orAhX2uRJFT8pXjfN8neYh4= github.com/emer/vision/v2 v2.0.0-dev0.1.0.0.20250128234953-cd0a89e77a4a h1:Eq3DfGEKoi2i5fmNrC0/DwUkIVPltPo7DUzxqCf9phE= github.com/emer/vision/v2 v2.0.0-dev0.1.0.0.20250128234953-cd0a89e77a4a/go.mod h1:FfG6xjDD5OyFAkgDo3OHRTnbW/rM8mFI3Uq+vmZnaMM= +github.com/ericchiang/css v1.3.0 h1:e0vS+vpujMjtT3/SYu7qTHn1LVzXWcLCCDjlfq3YlLY= +github.com/ericchiang/css v1.3.0/go.mod h1:sVSdL+MFR9Q4cKJMQzpIkHIDOLiK+7Wmjjhq7D+MubA= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= @@ -49,6 +51,9 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/goki/freetype v1.0.5 h1:yi2lQeUhXnBgSMqYd0vVmPw6RnnfIeTP3N4uvaJXd7A= github.com/goki/freetype v1.0.5/go.mod h1:wKmKxddbzKmeci9K96Wknn5kjTWLyfC8tKOqAFbEX8E= +github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 h1:4txT5G2kqVAKMjzidIabL/8KqjIK71yj30YOeuxLn10= +github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= @@ -103,18 +108,25 @@ golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0= gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 9aec0552ad4aa25caa44f204e5d8e0702463a431 Mon Sep 17 00:00:00 2001 From: angelajt Date: Fri, 31 Jan 2025 16:39:05 -0800 Subject: [PATCH 7/7] update workflow --- .github/workflows/go.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 3f7cc195..2e388bca 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -19,7 +19,7 @@ jobs: go-version: '1.22' - name: Set up Core - run: go install cogentcore.org/core/cmd/core@main && core setup + run: go install cogentcore.org/core/cmd/core@main && sudo apt update && core setup - name: Build run: go build -v ./...