cond

package
v2.0.0-dev0.0.8 Latest Latest
Warning

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

Go to latest
Published: May 22, 2024 License: BSD-3-Clause Imports: 9 Imported by: 0

README

CondEnv

CondEnv provides a flexible implementation of standard Pavlovian conditioning experiments involving CS -> US sequences (trials). Has a large database of standard conditioning paradigms parameterized in a controlled manner.

Time hierarchy:

  • Run = sequence of 1 or more Conditions
  • Condition = specific mix of trial types, generated at start of Condition
  • Block = one full pass through all trial types generated for condition (like Epoch)
  • Sequence = one behavioral trial consisting of CS -> US presentation over time steps (Ticks)
  • Tick = discrete time steps within behavioral Trial, typically one Network update (Alpha / Theta cycle)

Be sure to do go test if you modify or add runs, conds, or blocks -- it tests that everything linked in runs exists etc.

Example

AllRuns (in runs_all.go) contains this case:

	"PosAcqExt_A100_A0": {
		Name:  "PosAcq",
		Desc:  "Standard positive valence acquisition: A = 100%, then extinction A0",
		Cond1: "PosAcq_A100",
		Cond2: "PosExt_A0",
	},

Which references these cases in AllConditions (conds_all.go):

	"PosAcq_A100": {
		Name:       "PosAcq_A100",
		Desc:       "Standard positive valence acquisition: A = 100%",
		Block:      "PosAcq_A100",
		FixedProb:  true,
		NBlocks:    51,
		NSequences: 4,
		Permute:    true,
	},
	"PosExt_A0": {
		Name:       "PosExt_A0",
		Desc:       "Pavlovian extinction: A_NR_Pos, A = 0%",
		Block:      "PosExt_A0",
		FixedProb:  false,
		NBlocks:    50,
		NSequences: 8,
		Permute:    true,
	},

Which then reference corresponding block types in AllBlocks (blocks_all.go):

	"PosAcq_A100": {
		{
			Name:     "A_R",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   5,
			CS:       "A",
			CSStart:  1,
			CSEnd:    3,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  3,
			USEnd:    3,
			Context:  "A",
		},
	},
	"PosExt_A0": {
		{
			Name:     "A_NR",
			Pct:      1,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   5,
			CS:       "A",
			CSStart:  1,
			CSEnd:    3,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  3,
			USEnd:    3,
			Context:  "A",
		},
	},

Documentation

Index

Constants

View Source
const (
	// DefTicks is the default number of ticks per block
	DefTicks = 7

	// DefCSTick is the default tick to present the CS
	DefCSTick = 1

	// DefUSTick is the default tick to present the US
	DefUSTick = 4
)
View Source
const (
	// DefBlocks is the default number of training blocks for standard cases
	DefBlocks = 25

	// Default number of trials per condition type
	TrialsPerCond = 4
)

Variables

View Source
var (
	NUSs = 4

	NStims = 12

	MaxTime = DefTicks + 3

	USShape = []int{1, NUSs}

	StimShape = []int{3, 4}

	ContextShape = []int{6, 5}

	// USTimeShape is overall shape of USTime
	USTimeShape = []int{StimShape[0], StimShape[1], 1, MaxTime}

	// USTimeOff is activated when the US goes off
	USTimeOff = []int{StimShape[0] - 1, StimShape[1] - 1, 0, 5}

	// Stims maps stimuli to indexes for input layer
	Stims = map[string]int{
		"A": 0,
		"B": 1,
		"C": 2,
		"D": 3,
		"E": 4,
		"F": 5,
		"U": 6,
		"V": 7,
		"W": 8,
		"X": 9,
		"Y": 10,
		"Z": 11,
	}

	// Contexts maps contexts to indexes for input layer
	Contexts = map[string]int{
		"A":   0,
		"B":   1,
		"C":   2,
		"D":   3,
		"E":   4,
		"F":   5,
		"U":   6,
		"V":   7,
		"W":   8,
		"X":   9,
		"Y":   10,
		"Z":   11,
		"AB":  12,
		"AC":  13,
		"AX":  14,
		"AY":  15,
		"AZ":  16,
		"BX":  17,
		"BY":  18,
		"BZ":  19,
		"CX":  20,
		"CY":  21,
		"CZ":  22,
		"DU":  23,
		"ED":  24,
		"EU":  25,
		"EV":  26,
		"FV":  27,
		"A_B": 28,
	}
)
View Source
var AllBlocks = map[string]Block{
	"PosAcq_A100": {
		{
			Name:     "A_R",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosReAcq_A100": {
		{
			Name:     "A_R_re",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosAcq_A100B50": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0.5,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       1,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcq_A100B0": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_NR",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0.0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcq_A50": {
		{
			Name:     "A_R",
			Pct:      1.0,
			Valence:  Pos,
			USProb:   0.5,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"US0": {
		{
			Name:     "A_R",
			Pct:      1.0,
			Valence:  Pos,
			USProb:   0.01,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosReAcq_A100B50": {
		{
			Name:     "A_R_re",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R_re",
			Pct:      0,
			Valence:  Pos,
			USProb:   0.5,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcqPreSecondOrder": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks + 2,
			CS:       "A",
			CSStart:  3,
			CSEnd:    5,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  5,
			USEnd:    5,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0.5,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks + 2,
			CS:       "B",
			CSStart:  3,
			CSEnd:    5,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  5,
			USEnd:    5,
			Context:  "B",
		},
	},
	"PosAcq_A100B100": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcq_A100B25": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0.250,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcqOmit": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "A_NR",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosNeg": {
		{
			Name:     "Z_R",
			Pct:      0.167,
			Valence:  Neg,
			USProb:   0.250,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "Z",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Z",
		},
		{
			Name:     "Z_R",
			Pct:      0.167,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "Z",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Z",
		},
		{
			Name:     "Z_R_tst",
			Pct:      0.167,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "Z",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Z",
		},
		{
			Name:     "W_R",
			Pct:      0.167,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "W",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "W",
		},
		{
			Name:     "W_R",
			Pct:      0.167,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "W",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "W",
		},
		{
			Name:     "W_R_test",
			Test:     true,
			Pct:      0.167,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "W",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "W",
		},
	},
	"PosOrNegAcq": {
		{
			Name:     "Z_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  true,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "Z",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Z",
		},
		{
			Name:     "Z_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  true,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "Z",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Z",
		},
	},
	"Overexpectation_train": {
		{
			Name:     "A_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
		{
			Name:     "C_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "X_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
		{
			Name:     "Y_NR",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "Y",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Y",
		},
	},
	"OverexpectationCompound": {
		{
			Name:     "AX_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
		{
			Name:     "BY_NR",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "BY",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "BY",
		},
		{
			Name:     "CY_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "CY",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "CY",
		},
		{
			Name:     "X_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
		{
			Name:     "Y_NR",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "Y",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Y",
		},
	},
	"Overexpectation_test": {
		{
			Name:     "A_NR_test",
			Test:     true,
			Pct:      0.250,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_NR_test",
			Test:     true,
			Pct:      0.250,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
		{
			Name:     "C_NR_test",
			Test:     true,
			Pct:      0.250,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "X_R_test",
			Test:     true,
			Pct:      0.250,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
	},
	"PosAcqEarlyUS_test": {
		{
			Name:     "A_R_late",
			Test:     true,
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  4,
			USEnd:    4,
			Context:  "A",
		},
		{
			Name:     "A_R_early",
			Test:     true,
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  2,
			USEnd:    2,
			Context:  "A",
		},
	},
	"PosOrienting": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcqMagnitude": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosAcqMagnitudeChange": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"NegAcqMagnitude": {
		{
			Name:     "D_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "E_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
	},
	"NegAcqMagnitudeChange": {
		{
			Name:     "D_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "E_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
	},
	"PosExt_A0": {
		{
			Name:     "A_NR",
			Pct:      1,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosExt_A0B0": {
		{
			Name:     "A_NR",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_NR",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosCondInhib": {
		{
			Name:     "A_R",
			Pct:      0.650,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "AX_NR",
			Pct:      0.350,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
	},
	"PosCondInhib_test": {
		{
			Name:     "A_NR_test",
			Test:     true,
			Pct:      0.330,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "AX_NR_test",
			Test:     true,
			Pct:      0.330,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
		{
			Name:     "X_NR_test",
			Test:     true,
			Pct:      0.330,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
	},
	"PosSecondOrderCond": {
		{
			Name:     "A_R",
			Pct:      0.950,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  true,
			USMag:    1,
			NTicks:   DefTicks + 2,
			CS:       "A",
			CSStart:  3,
			CSEnd:    5,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  5,
			USEnd:    5,
			Context:  "A",
		},
		{
			Name:     "AC_NR",
			Pct:      0.050,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks + 2,
			CS:       "AC",
			CSStart:  3,
			CSEnd:    5,
			CS2Start: 1,
			CS2End:   2,
			US:       0,
			USStart:  5,
			USEnd:    5,
			Context:  "AC",
		},
	},
	"NegAcq_D100": {
		{
			Name:     "D_R",
			Pct:      1,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
	},
	"NegExt_D0": {
		{
			Name:     "D_NR",
			Pct:      1,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
	},
	"NegAcq_D100E25": {
		{
			Name:     "D_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "E_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   0.250,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
	},
	"NegExt_D0E0": {
		{
			Name:     "D_NR",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "E_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   0.5,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
	},
	"NegCondInhib": {
		{
			Name:     "D_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "DU_NR",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "DU",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "DU",
		},
	},
	"NegCondInhib_test": {
		{
			Name:     "D_NR_test",
			Test:     true,
			Pct:      0.333,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "DU_NR_test",
			Test:     true,
			Pct:      0.333,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "DU",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "DU",
		},
		{
			Name:     "U_NR_test",
			Test:     true,
			Pct:      0.333,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "U",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "U",
		},
	},
	"PosAcq_cxA": {
		{
			Name:     "A_R_cxA",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosExtinct_cxB": {
		{
			Name:     "A_NR_cxB",
			Pct:      1,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A_B",
		},
	},
	"PosRenewal_cxA": {
		{
			Name:     "A_NR_cxA",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "A_NR_cxB",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A_B",
		},
	},
	"PosBlocking_A_train": {
		{
			Name:     "A_R",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosBlocking": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "AB_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AB",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AB",
		},
	},
	"PosBlocking_test": {
		{
			Name:     "B_R_test",
			Test:     true,
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"PosBlocking2_test": {
		{
			Name:     "A_R_test",
			Test:     true,
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R_test",
			Test:     true,
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"NegBlocking_E_train": {
		{
			Name:     "E_R",
			Pct:      1,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
	},
	"NegBlocking": {
		{
			Name:     "E_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
		{
			Name:     "ED_R",
			Pct:      0.5,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "ED",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "ED",
		},
	},
	"NegBlocking_test": {
		{
			Name:     "D_R",
			Test:     true,
			Pct:      1,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
	},
	"PosSumAcq": {
		{
			Name:     "A_R",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "C_R",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "B_NR",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"NegSumAcq": {
		{
			Name:     "D_R",
			Pct:      0.333,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "E_R",
			Pct:      0.333,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
		{
			Name:     "F_NR",
			Pct:      0.333,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "F",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "F",
		},
	},
	"PosCondInhib_BY": {
		{
			Name:     "A_R",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "AX_NR",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
		{
			Name:     "BY_NR",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "BY",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "BY",
		},
	},
	"NegCondInhib_FV": {
		{
			Name:     "D_R",
			Pct:      0.333,
			Valence:  Neg,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "DU_NR",
			Pct:      0.333,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "DU",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "DU",
		},
		{
			Name:     "FV_NR",
			Pct:      0.333,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    0,
			NTicks:   DefTicks,
			CS:       "FV",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "FV",
		},
	},
	"NegSumCondInhib_test": {
		{
			Name:     "D_NR_test",
			Test:     true,
			Pct:      0.171,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "D",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "D",
		},
		{
			Name:     "E_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "E",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "E",
		},
		{
			Name:     "U_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "U",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "U",
		},
		{
			Name:     "DU_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "DU",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "DU",
		},
		{
			Name:     "EU_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "EU",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "EU",
		},
		{
			Name:     "EV_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Neg,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "EV",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "EV",
		},
	},
	"PosSumCondInhib_test": {
		{
			Name:     "A_NR_test",
			Test:     true,
			Pct:      0.171,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "C_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "X_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
		{
			Name:     "AX_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
		{
			Name:     "CX_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "CX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "CX",
		},
		{
			Name:     "CY_NR_test",
			Test:     true,
			Pct:      0.166,
			Valence:  Pos,
			USProb:   0,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "CY",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "CY",
		},
	},
	"Unblocking_train": {
		{
			Name:     "A_R",
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "C_R",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "B_R",
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"UnblockingValue": {
		{
			Name:     "AX_R",
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
		{
			Name:     "CZ_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "CZ",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "CZ",
		},
		{
			Name:     "A_R",
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "C_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "B_R",
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"UnblockingValue_test": {
		{
			Name:     "A_R_test",
			Test:     true,
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "C_R_test",
			Test:     true,
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "X_R_test",
			Test:     true,
			Pct:      0,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
		{
			Name:     "Z_R_test",
			Test:     true,
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "Z",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Z",
		},
	},
	"Unblocking_trainUS": {
		{
			Name:     "A_R",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "C_R",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.100,
			NTicks:   DefTicks,
			CS:       "C",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "C",
		},
		{
			Name:     "B_R",
			Pct:      0.333,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       1,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"UnblockingIdentity": {
		{
			Name:     "AX_R",
			Pct:      0.300,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AX",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AX",
		},
		{
			Name:     "BY_R",
			Pct:      0.300,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "BY",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "BY",
		},
		{
			Name:     "A_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R",
			Pct:      0.200,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       1,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"UnblockingIdentity_test": {
		{
			Name:     "A_R_test",
			Test:     true,
			Pct:      0.251,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "B_R_test",
			Test:     true,
			Pct:      0.251,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       1,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
		{
			Name:     "X_R_test",
			Test:     true,
			Pct:      0.251,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "X",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "X",
		},
		{
			Name:     "Y_R_test",
			Test:     true,
			Pct:      0.248,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "Y",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "Y",
		},
	},
	"PosUpUnblocking_A_train": {
		{
			Name:     "A_R",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
	"PosUpUnblocking": {
		{
			Name:     "A_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    0.5,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
		{
			Name:     "AB_R",
			Pct:      0.5,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "AB",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: 1,
			CS2End:   3,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "AB",
		},
	},
	"PosUpUnblocking_test": {
		{
			Name:     "B_R",
			Test:     true,
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "B",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "B",
		},
	},
	"BlankTemplate": {
		{
			Name:     "",
			Pct:      1,
			Valence:  Pos,
			USProb:   1,
			MixedUS:  false,
			USMag:    1,
			NTicks:   DefTicks,
			CS:       "A",
			CSStart:  DefCSTick,
			CSEnd:    DefUSTick,
			CS2Start: -1,
			CS2End:   -1,
			US:       0,
			USStart:  DefUSTick,
			USEnd:    DefUSTick,
			Context:  "A",
		},
	},
}
View Source
var AllConditions = map[string]*Condition{
	"PosAcq_A100": {
		Desc:       "Standard positive valence acquisition: A = 100%",
		Block:      "PosAcq_A100",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A100_Blk10": {
		Desc:       "Standard positive valence acquisition: A = 100% -- 10 blocks",
		Block:      "PosAcq_A100",
		FixedProb:  true,
		NBlocks:    10,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A100_Blk20": {
		Desc:       "Standard positive valence acquisition: A = 100% -- 20 blocks",
		Block:      "PosAcq_A100",
		FixedProb:  true,
		NBlocks:    20,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A100B50": {
		Desc:       "Standard positive valence acquisition: A = 100%, B = 50%",
		Block:      "PosAcq_A100B50",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A50": {
		Desc:       "Positive valence acquisition: A = 50%",
		Block:      "PosAcq_A50",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A50_Blk10": {
		Desc:       "Positive valence acquisition: A = 50% -- 10 blocks",
		Block:      "PosAcq_A50",
		FixedProb:  true,
		NBlocks:    10,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A50_Blk20": {
		Desc:       "Positive valence acquisition: A = 50% -- 20 blocks",
		Block:      "PosAcq_A50",
		FixedProb:  true,
		NBlocks:    20,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"US0": {
		Desc:       "No US at all",
		Block:      "US0",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A100B100": {
		Desc:       "Positive valence acquisition: A_R_Pos, B at 100%",
		Block:      "PosAcq_A100B100",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosAcqEarlyUS_test": {
		Desc:       "Testing session: after pos_acq trng, deliver US early or late",
		Block:      "PosAcqEarlyUS_test",
		FixedProb:  true,
		NBlocks:    5,
		NSequences: 2,
		Permute:    false,
	},
	"PosAcq_A100B25": {
		Desc:       "Positive valence acquisition: A_R_Pos 100%, B at 25%",
		Block:      "PosAcq_A100B25",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_A100B0": {
		Desc:       "Positive valence acquisition: A_R_Pos 100%, B at 0%",
		Block:      "PosAcq_A100B0",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosExt_A0": {
		Desc:       "Pavlovian extinction: A_NR_Pos, A = 0%",
		Block:      "PosExt_A0",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosExt_A0_Blk10": {
		Desc:       "Pavlovian extinction: A_NR_Pos, A = 0% -- 10 blocks",
		Block:      "PosExt_A0",
		FixedProb:  false,
		NBlocks:    10,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosExt_A0_Blk20": {
		Desc:       "Pavlovian extinction: A_NR_Pos, A = 0% -- 20 blocks",
		Block:      "PosExt_A0",
		FixedProb:  false,
		NBlocks:    20,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosExt_A0B0": {
		Desc:       "Pavlovian extinction: A_NR_Pos, B_NR_Pos",
		Block:      "PosExt_A0B0",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"NegAcq_D100": {
		Desc:       "Pavlovian conditioning w/ negatively valenced US: D_R_NEG",
		Block:      "NegAcq_D100",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"NegAcq_D100E25": {
		Desc:       "Pavlovian conditioning w/ negatively valenced US: D_R_NEG, E 25%",
		Block:      "NegAcq_D100E25",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"NegExt_D0": {
		Desc:       "Pavlovian conditioning w/ negatively valenced US: A_R_NEG",
		Block:      "NegExt_D0",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"NegExt_D0E0": {
		Desc:       "Pavlovian conditioning w/ negatively valenced US: A_R_NEG",
		Block:      "NegExt_D0E0",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosAcqPreSecondOrder": {
		Desc:       "Positive valence acquisition: A_R_Pos, B at 50%",
		Block:      "PosAcqPreSecondOrder",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosReAcq_A100B50": {
		Desc:       "Positive valence acquisition: A_R_Pos, B at 50% reinf, tags further learning as reacq",
		Block:      "PosReAcq_A100B50",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosReAcq_A100": {
		Desc:       "Positive valence acquisition: A_R_Pos, tags further learning as reacq",
		Block:      "PosReAcq_A100",
		FixedProb:  true,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    true,
	},
	"PosAcq_cxA": {
		Desc:       "Positive valence acquisition: A_R_Pos, A_R_Pos_omit trials, interleaved",
		Block:      "PosAcq_cxA",
		FixedProb:  false,
		NBlocks:    10,
		NSequences: 10,
		Permute:    false,
	},
	"PosExtinct_cxB": {
		Desc:       "Positive valence acquisition: A_R_Pos, A_R_Pos_omit trials, interleaved",
		Block:      "PosExtinct_cxB",
		FixedProb:  false,
		NBlocks:    25,
		NSequences: 10,
		Permute:    false,
	},
	"PosAcqOmit": {
		Desc:       "Positive valence acquisition: A_R_Pos, A_NR_Pos trials, interleaved",
		Block:      "PosAcqOmit",
		FixedProb:  false,
		NBlocks:    10,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosRenewal_cxA": {
		Desc:       "Positive valence acquisition: A_R_Pos, A_R_Pos_omit trials, interleaved",
		Block:      "PosRenewal_cxA",
		FixedProb:  false,
		NBlocks:    1,
		NSequences: 2,
		Permute:    false,
	},
	"PosBlocking_A_train": {
		Desc:       "Blocking experiment",
		Block:      "PosBlocking_A_train",
		FixedProb:  false,
		NBlocks:    20,
		NSequences: 1,
		Permute:    false,
	},
	"PosBlocking": {
		Desc:       "Blocking experiment",
		Block:      "PosBlocking",
		FixedProb:  false,
		NBlocks:    20,
		NSequences: 2,
		Permute:    false,
	},
	"PosBlocking_test": {
		Desc:       "Blocking experiment",
		Block:      "PosBlocking_test",
		FixedProb:  false,
		NBlocks:    25,
		NSequences: 1,
		Permute:    false,
	},
	"PosBlocking2_test": {
		Desc:       "Blocking experiment",
		Block:      "PosBlocking2_test",
		FixedProb:  false,
		NBlocks:    25,
		NSequences: 2,
		Permute:    false,
	},
	"NegBlocking_E_train": {
		Desc:       "Blocking experiment",
		Block:      "NegBlocking_E_train",
		FixedProb:  false,
		NBlocks:    300,
		NSequences: 1,
		Permute:    false,
	},
	"NegBlocking": {
		Desc:       "Blocking experiment",
		Block:      "NegBlocking",
		FixedProb:  false,
		NBlocks:    200,
		NSequences: 2,
		Permute:    false,
	},
	"NegBlocking_test": {
		Desc:       "Blocking experiment",
		Block:      "NegBlocking_test",
		FixedProb:  false,
		NBlocks:    25,
		NSequences: 1,
		Permute:    false,
	},
	"PosAcqMag": {
		Desc:       "Magnitude experiment",
		Block:      "PosAcqMagnitude",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 2 * TrialsPerCond,
		Permute:    false,
	},
	"PosSumAcq": {
		Desc:       "Conditioned Inhibition - A+, C+",
		Block:      "PosSumAcq",
		FixedProb:  false,
		NBlocks:    450,
		NSequences: 3,
		Permute:    false,
	},
	"PosSumCondInhib": {
		Desc:       "Conditioned Inhibition - AX-, A+",
		Block:      "PosCondInhib_BY",
		FixedProb:  false,
		NBlocks:    300,
		NSequences: 3,
		Permute:    false,
	},
	"PosSum_test": {
		Desc:       "Conditioned Inhibition Summation Test",
		Block:      "PosSumCondInhib_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: 6,
		Permute:    false,
	},
	"NegSumAcq": {
		Desc:       "Conditioned Inhibition - D-, E-",
		Block:      "NegSumAcq",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 3,
		Permute:    false,
	},
	"NegSumCondInhib": {
		Desc:       "Conditioned Inhibition - DU, D-",
		Block:      "NegCondInhib_FV",
		FixedProb:  false,
		NBlocks:    100,
		NSequences: 3,
		Permute:    false,
	},
	"NegSum_test": {
		Desc:       "Conditioned Inhibition Summation Test",
		Block:      "NegSumCondInhib_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: 6,
		Permute:    false,
	},
	"Unblocking_train": {
		Desc:       "A+++,B+++,C+",
		Block:      "Unblocking_train",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 2,
		Permute:    false,
	},
	"UnblockingValue": {
		Desc:       "AX+++,CZ+++",
		Block:      "UnblockingValue",
		FixedProb:  false,
		NBlocks:    25,
		NSequences: 1,
		Permute:    false,
	},
	"UnblockingValue_test": {
		Desc:       "A,X,C,Z",
		Block:      "UnblockingValue_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: 1,
		Permute:    false,
	},
	"Unblocking_trainUS": {
		Desc:       "A+++ (water) ,B+++ (food)",
		Block:      "Unblocking_trainUS",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: 15,
		Permute:    false,
	},
	"UnblockingIdentity": {
		Desc:       "AX+++(water),BY+++(water)",
		Block:      "UnblockingIdentity",
		FixedProb:  false,
		NBlocks:    DefBlocks / 2,
		NSequences: 20,
		Permute:    false,
	},
	"UnblockingIdentity_test": {
		Desc:       "A,X,B,Y",
		Block:      "UnblockingIdentity_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: TrialsPerCond,
		Permute:    false,
	},
	"PosAcqMagChange": {
		Desc:       "Magnitude experiment",
		Block:      "PosAcqMagnitudeChange",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    false,
	},
	"NegAcqMag": {
		Desc:       "Magnitude experiment",
		Block:      "NegAcqMagnitude",
		FixedProb:  false,
		NBlocks:    51,
		NSequences: 2 * TrialsPerCond,
		Permute:    false,
	},
	"NegAcqMagChange": {
		Desc:       "Magnitude experiment",
		Block:      "NegAcqMagnitudeChange",
		FixedProb:  false,
		NBlocks:    DefBlocks,
		NSequences: TrialsPerCond,
		Permute:    false,
	},
	"Overexpect_train": {
		Desc:       "Overexpectation training (A+, B+, C+, X+, Y-)",
		Block:      "Overexpectation_train",
		FixedProb:  false,
		NBlocks:    150,
		NSequences: 5,
		Permute:    false,
	},
	"OverexpectCompound": {
		Desc:       "Overexpectation compound training (AX+, BY-, CX+, X+, Y-)",
		Block:      "OverexpectationCompound",
		FixedProb:  false,
		NBlocks:    150,
		NSequences: 5,
		Permute:    false,
	},
	"Overexpect_test": {
		Desc:       "Overexpectation test ( A-, B-, C-, X-)",
		Block:      "Overexpectation_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: 5,
		Permute:    false,
	},
	"PosNeg": {
		Desc:       "Positive negative test - W equally reinforced with reward + punishment",
		Block:      "PosNeg",
		FixedProb:  false,
		NBlocks:    150,
		NSequences: 6,
		Permute:    false,
	},
	"PosOrNegAcq": {
		Desc:       "Positive negative acquisition - with reward or punishment on interleaved trials according to user-set probabilities",
		Block:      "PosOrNegAcq",
		FixedProb:  false,
		NBlocks:    150,
		NSequences: 6,
		Permute:    true,
	},
	"NegCondInh": {
		Desc:       "condition inhibition w/ negatively valenced US: CZ_NR_NEG, C_R_NEG interleaved; i.e.,  Z = security signal",
		Block:      "NegCondInhib",
		FixedProb:  false,
		NBlocks:    75,
		NSequences: 10,
		Permute:    true,
	},
	"NegCondInh_test": {
		Desc:       "condition inhibition w/ negatively valenced US: CZ_NR_NEG, C_R_NEG interleaved; i.e.,  Z = security signal",
		Block:      "NegCondInhib_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: 6,
		Permute:    false,
	},
	"PosCondInhib": {
		Desc:       "conditioned inhibition training: AX_NR_Pos, A_R_Pos interleaved",
		Block:      "PosCondInhib",
		FixedProb:  false,
		NBlocks:    10,
		NSequences: 2 * TrialsPerCond,
		Permute:    true,
	},
	"PosSecondOrderCond": {
		Desc:       "second order conditioning training: AB_NR_Pos, A_R_Pos interleaved; A = 1st order, F = 2nd order CS",
		Block:      "PosSecondOrderCond",
		FixedProb:  false,
		NBlocks:    10,
		NSequences: 20,
		Permute:    true,
	},
	"PosCondInhib_test": {
		Desc:       "Testing session: A_NR_Pos, AX_NR_Pos, and X_NR_Pos cases",
		Block:      "PosCondInhib_test",
		FixedProb:  false,
		NBlocks:    5,
		NSequences: 6,
		Permute:    false,
	},
}
View Source
var AllRuns = map[string]*Run{
	"PosAcq_A100": {
		Desc:  "Standard positive valence acquisition: A = 100%",
		Cond1: "PosAcq_A100",
	},
	"PosExt_A0": {
		Desc:  "extinguish positive valence: A_NR_Pos -- typically use after some amount of PosAcq_A100",
		Cond1: "PosExt_A0",
	},
	"PosAcqExt_A100Wts": {
		Desc:    "Load weights of acquisition A 100%, go directly to extinguish -- must save weights from PosAcq_A100 first",
		Weights: "PosAcq_A100",
		Cond1:   "PosExt_A0",
	},
	"PosAcqExt_A100_A0": {
		Desc:  "Standard positive valence acquisition: A = 100%, then extinction A0",
		Cond1: "PosAcq_A100",
		Cond2: "PosExt_A0",
	},
	"PosAcq_A100B50": {
		Desc:  "Standard positive valence acquisition: A = 100%, B = 50%",
		Cond1: "PosAcq_A100B50",
	},
	"PosAcq_A100B0": {
		Desc:  "Standard positive valence acquisition: A = 100%, B = 0%",
		Cond1: "PosAcq_A100B0",
	},
	"PosExt_A0B0": {
		Desc:  "extinguish positive valence: A_NR_Pos, B_NR_Pos",
		Cond1: "PosExt_A0B0",
	},
	"PosAcq_A50": {
		Desc:  "A = 50%",
		Cond1: "PosAcq_A50",
	},
	"PosAcq_ACycle100_50_0_Blk10": {
		Desc:  "A transitions: 100%, 50%, 0%, 50%, 100% for 10 blocks each",
		Cond1: "PosAcq_A100",
		Cond2: "PosAcq_A50_Blk10",
		Cond3: "PosExt_A0_Blk10",
		Cond4: "PosAcq_A50_Blk10",
		Cond5: "PosAcq_A100_Blk10",
	},
	"PosAcq_ACycle100_50_0_Blk20": {
		Desc:  "A transitions: 100%, 50%, 0%, 50%, 100% for 20 blocks each",
		Cond1: "PosAcq_A100",
		Cond2: "PosAcq_A50_Blk20",
		Cond3: "PosExt_A0_Blk20",
		Cond4: "PosAcq_A50_Blk20",
		Cond5: "PosAcq_A100_Blk20",
	},
	"PosAcqExt_A100B50_A0B0": {
		Desc:  "positive valence acquisition A=100%, B=50%, then extinguish A, B = 0%",
		Cond1: "PosAcq_A100B50",
		Cond2: "PosExt_A0B0",
	},
	"PosAcqExt_A100B50_Wts": {
		Desc:    "Load weights of acquisition A = 100%, B = 50%, go directly to extinguish -- must save weights from PosAcq_A100B50",
		Weights: "PosAcq_A100B50",
		Cond1:   "PosExt_A0B0",
	},
	"PosAcqExtAcq_A100B50_A0B0_A100B50": {
		Desc:  "Full cycle: acq, ext, acq, A=100%, B=50%, then extinguish, then acq again, marked as ReAcq",
		Cond1: "PosAcq_A100B50",
		Cond2: "PosExt_A0B0",
		Cond3: "PosReAcq_A100B50",
	},
	"PosAcqExtAcq_A100_A0_A100": {
		Desc:  "Full cycle: acq, ext, acq, A=100%, then extinguish, then acq again, marked as ReAcq",
		Cond1: "PosAcq_A100",
		Cond2: "PosExt_A0",
		Cond3: "PosReAcq_A100",
	},
	"PosAcqExt_A100B100": {
		Desc:  "",
		Cond1: "PosAcq_A100B100",
		Cond2: "PosExt_A0B0",
	},
	"PosAcq_A100B25": {
		Desc:  "",
		Cond1: "PosAcq_A100B25",
	},
	"NegAcq_D100": {
		Desc:  "",
		Cond1: "NegAcq_D100",
	},
	"NegAcq_D100E25": {
		Desc:  "",
		Cond1: "NegAcq_D100E25",
	},
	"NegAcqMag": {
		Desc:  "",
		Cond1: "NegAcqMag",
	},
	"PosAcqMag": {
		Desc:  "",
		Cond1: "PosAcqMag",
	},
	"NegAcqExt_D100": {
		Desc:  "",
		Cond1: "NegAcq_D100",
		Cond2: "NegExt_D0",
	},
	"NegExt_D0": {
		Desc:  "",
		Cond1: "NegExt_D0",
	},
	"NegExt_D100Wts": {
		Desc:    "Load weights of negative acquisition D 100%, go directly to extinguish -- must save weights from NegAcq_D100 first",
		Weights: "NegAcq_D100",
		Cond1:   "NegExt_D0",
	},
	"NegAcqExt_D100E25": {
		Desc:  "",
		Cond1: "NegAcq_D100E25",
		Cond2: "NegExt_D0E0",
	},
	"NegExt_D0E0": {
		Desc:  "",
		Cond1: "NegExt_D0E0",
	},
	"PosCondInhib": {
		Desc:  "",
		Cond1: "PosAcq_cxA",
		Cond2: "PosCondInhib",
		Cond3: "PosCondInhib_test",
	},
	"PosSecondOrderCond": {
		Desc:  "",
		Cond1: "PosAcqPreSecondOrder",
		Cond2: "PosSecondOrderCond",
	},
	"PosBlocking": {
		Desc:  "",
		Cond1: "PosBlocking_A_train",
		Cond2: "PosBlocking",
		Cond3: "PosBlocking_test",
	},
	"PosBlocking2": {
		Desc:  "",
		Cond1: "PosBlocking_A_train",
		Cond2: "PosBlocking",
		Cond3: "PosBlocking2_test",
	},
	"NegCondInhib": {
		Desc:  "",
		Cond1: "NegAcq_D100E25",
		Cond2: "NegCondInh",
		Cond3: "NegCondInh_test",
	},
	"AbaRenewal": {
		Desc:  "",
		Cond1: "PosAcq_cxA",
		Cond2: "PosExtinct_cxB",
		Cond3: "PosRenewal_cxA",
	},
	"NegBlocking": {
		Desc:  "",
		Cond1: "NegBlocking_E_train",
		Cond2: "NegBlocking",
		Cond3: "NegBlocking_test",
	},
	"PosSum_test": {
		Desc:  "",
		Cond1: "PosSumAcq",
		Cond2: "PosSumCondInhib",
		Cond3: "PosSum_test",
	},
	"NegSum_test": {
		Desc:  "",
		Cond1: "NegSumAcq",
		Cond2: "NegSumCondInhib",
		Cond3: "NegSum_test",
	},
	"UnblockingValue": {
		Desc:  "",
		Cond1: "Unblocking_train",
		Cond2: "UnblockingValue",
		Cond3: "UnblockingValue_test",
	},
	"UnblockingIdentity": {
		Desc:  "",
		Cond1: "Unblocking_trainUS",
		Cond2: "UnblockingIdentity",
		Cond3: "UnblockingIdentity_test",
	},
	"Overexpect": {
		Desc:  "",
		Cond1: "Overexpect_train",
		Cond2: "OverexpectCompound",
		Cond3: "Overexpect_test",
	},
	"PosMagChange": {
		Desc:  "",
		Cond1: "PosAcqMag",
		Cond2: "PosAcqMagChange",
		Cond3: "Overexpect_test",
	},
	"NegMagChange": {
		Desc:  "",
		Cond1: "NegAcqMag",
		Cond2: "NegAcqMagChange",
	},
	"PosNeg": {
		Desc:  "",
		Cond1: "PosOrNegAcq",
	},
	"PosAcqEarlyUSTest": {
		Desc:  "",
		Cond1: "PosAcq_A100B50",
		Cond2: "PosAcqEarlyUS_test",
	},
	"PosOrNegAcq": {
		Desc:  "",
		Cond1: "PosOrNegAcq",
	},
	"PosCondInhib_test": {
		Desc:  "For debugging",
		Cond1: "PosCondInhib_test",
	},
	"US0": {
		Desc:  "",
		Cond1: "US0",
	},
}
View Source
var RunNames []string

Functions

func ContextIndex

func ContextIndex(ctx string) int

ContextIndex returns index for given context

func ContextYX

func ContextYX(ctidx int) []int

ContextYX returns context YX indexes for context number

func SetContext

func SetContext(tsr *tensor.Float32, nyrep int, ctx string) int

SetContext sets context for given input

func SetStim

func SetStim(tsr *tensor.Float32, nyrep int, stm string) int

SetStim sets stimulus for given input, returns index

func SetTime

func SetTime(tsr *tensor.Float32, nyrep int, tick int)

SetTime sets Time input

func SetUS

func SetUS(tsr *tensor.Float32, nyrep int, pv int, mag float32)

SetUS sets US input

func SetUSTime

func SetUSTime(tsr *tensor.Float32, nyrep, stidx, tick, start, end int) bool

SetUSTime sets USTime based on given values. returns false if not set.

func StimIndex

func StimIndex(stm string) int

StimIndex returns index for given stimulus

func StimYX

func StimYX(stidx int) []int

StimYX returns stimulus YX indexes for stimulus number

func USTimeIndex

func USTimeIndex(stidx, tick, start, end int) []int

USTimeIndex returns index for US time based on stimulus, tick, start and end returns nil if not active.

Types

type Block

type Block []*Sequence

Block represents a set of sequence types

func (*Block) Append

func (cd *Block) Append(seq *Sequence)

func (*Block) Length

func (cd *Block) Length() int

type CondEnv

type CondEnv struct {

	// name of this environment
	Nm string

	// description of this environment
	Dsc string

	// number of Y repetitions for localist reps
	NYReps int

	// current run name
	RunName string

	// description of current run
	RunDesc string

	// name of current condition
	CondName string

	// description of current condition
	CondDesc string

	// counter over runs
	Run env.Ctr `edit:"-" view:"inline"`

	// counter over Condition within a run -- Max depends on number of conditions specified in given Run
	Condition env.Ctr `edit:"-" view:"inline"`

	// counter over full blocks of all sequence types within a Condition -- like an Epoch
	Block env.Ctr `edit:"-" view:"inline"`

	// counter of behavioral sequences within a Block
	Sequence env.Ctr `edit:"-" view:"inline"`

	// counter of discrete steps within a sequence -- typically maps onto Alpha / Theta cycle in network
	Tick env.Ctr `edit:"-" view:"inline"`

	// name of current sequence step
	SequenceName string `edit:"-"`

	// type of current sequence step
	SequenceType string `edit:"-"`

	// decoded value of USTimeIn
	USTimeInStr string `edit:"-"`

	// current generated set of sequences per Block
	Sequences []*Sequence

	// copy of current run parameters
	CurRun Run

	// the current rendered tick
	CurTick Sequence

	// current rendered state tensors -- extensible map
	CurStates map[string]*tensor.Float32
}

CondEnv provides a flexible implementation of standard Pavlovian conditioning experiments involving CS -> US sequences. Has a large database of standard conditioning paradigms parameterized in a controlled manner.

Time hierarchy: * Run = sequence of 1 or more Conditions * Condition = specific mix of sequence types, generated at start of Condition * Block = one full pass through all sequence types generated for condition (like Epoch) * Sequence = one behavioral trial consisting of CS -> US presentation over time steps (Ticks) * Tick = discrete time steps within behavioral Sequence, typically one Network update (Alpha / Theta cycle)

func (*CondEnv) Action

func (ev *CondEnv) Action(_ string, _ tensor.Tensor)

func (*CondEnv) Config

func (ev *CondEnv) Config(rmax int, rnm string)

func (*CondEnv) Counter

func (ev *CondEnv) Counter(scale env.TimeScales) (cur, prv int, chg bool)

func (*CondEnv) Desc

func (ev *CondEnv) Desc() string

func (*CondEnv) Init

func (ev *CondEnv) Init(ridx int)

Init sets current run index and max

func (*CondEnv) InitCond

func (ev *CondEnv) InitCond()

InitCond initializes for current condition index

func (*CondEnv) Name

func (ev *CondEnv) Name() string

func (*CondEnv) RenderSequence

func (ev *CondEnv) RenderSequence(trli, tick int)

func (*CondEnv) State

func (ev *CondEnv) State(element string) tensor.Tensor

func (*CondEnv) Step

func (ev *CondEnv) Step() bool

func (*CondEnv) Validate

func (ev *CondEnv) Validate() error

type Condition

type Condition struct {

	// identifier for this type of configuration
	Name string

	// description of this configuration
	Desc string

	// mix of trial types per block to run -- must be listed in AllBlocks
	Block string

	// use a permuted list to ensure an exact number of trials have US -- else random draw each time
	FixedProb bool

	// number of full blocks of different trial types to run (like Epochs)
	NBlocks int

	// number of sequences (behavioral trials) per block, with the different types of Sequences allocated across these sequences.  More different sequence types and greater stochasticity (lower probability) of US presentation requires more sequences.
	NSequences int

	// permute list of generated trials in random order after generation -- otherwise presented in order specified in the Block type
	Permute bool
}

Condition defines parameters for running a specific type of conditioning expt

type Run

type Run struct {

	// Name of the run
	Name string

	// Description
	Desc string

	// name of condition for weights file to load prior to starting -- allows faster testing but weights may be out of date
	Weights string

	// name of condition 1
	Cond1 string

	// name of condition 2
	Cond2 string

	// name of condition 3
	Cond3 string

	// name of condition 4
	Cond4 string

	// name of condition 5
	Cond5 string
}

Run is a sequence of Conditions to run in order

func (*Run) Cond

func (rn *Run) Cond(cidx int) (string, *Condition)

Cond returns the condition name and Condition at the given index

func (*Run) NConds

func (rn *Run) NConds() int

NConds returns the number of conditions in this Run

type Sequence

type Sequence struct {

	// conventional suffixes: _R = reward, _NR = non-reward; _test = test trial (no learning)
	Name string

	// true if testing only -- no learning
	Test bool

	// Percent of all trials for this type
	Pct float32

	// Positive or negative reward valence
	Valence Valence

	// Probability of US
	USProb float32

	// Mixed US set?
	MixedUS bool

	// US magnitude
	USMag float32

	// Number of ticks for a sequence
	NTicks int

	// Conditioned stimulus
	CS string

	// Tick of CS start
	CSStart int

	// Tick of CS end
	CSEnd int

	// Tick of CS2 start: -1 for none
	CS2Start int

	// Tick of CS2 end: -1 for none
	CS2End int

	// Unconditioned stimulus
	US int

	// Tick for start of US presentation
	USStart int

	// Tick for end of US presentation
	USEnd int

	// Context -- typically same as CS -- if blank CS will be copied -- different in certain extinguishing contexts
	Context string

	// for rendered sequence, true if US active
	USOn bool

	// for rendered sequence, true if CS active
	CSOn bool

	// for rendered sequence, the tick type
	Type TickTypes
}

Sequence represents a sequence of ticks for one behavioral trial, unfolding over NTicks individual time steps, with one or more CS's (conditioned stimuli) and a US (unconditioned stimulus -- outcome).

func SequenceReps

func SequenceReps(condNm string) []*Sequence

SequenceReps generates repetitions of specific sequence types for given condition name, based on Pct of total blocks, and sets the USOn flag for proportion of sequences based on USProb probability. If Condition.Permute is true, order of all sequences are permuted. Gets the block name from the condition name.

type TickTypes

type TickTypes int32 //enums:enum

TickTypes

const (
	// Pre is before the CS
	Pre TickTypes = iota

	// CS is CS onset
	CS

	// Maint is after CS before US
	Maint

	// US is the US
	US

	// Post is after the US
	Post
)
const TickTypesN TickTypes = 5

TickTypesN is the highest valid value for type TickTypes, plus one.

func TickTypesValues

func TickTypesValues() []TickTypes

TickTypesValues returns all possible values for the type TickTypes.

func (TickTypes) Desc

func (i TickTypes) Desc() string

Desc returns the description of the TickTypes value.

func (TickTypes) Int64

func (i TickTypes) Int64() int64

Int64 returns the TickTypes value as an int64.

func (TickTypes) MarshalText

func (i TickTypes) MarshalText() ([]byte, error)

MarshalText implements the encoding.TextMarshaler interface.

func (*TickTypes) SetInt64

func (i *TickTypes) SetInt64(in int64)

SetInt64 sets the TickTypes value from an int64.

func (*TickTypes) SetString

func (i *TickTypes) SetString(s string) error

SetString sets the TickTypes value from its string representation, and returns an error if the string is invalid.

func (TickTypes) String

func (i TickTypes) String() string

String returns the string representation of this TickTypes value.

func (*TickTypes) UnmarshalText

func (i *TickTypes) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

func (TickTypes) Values

func (i TickTypes) Values() []enums.Enum

Values returns all possible values for the type TickTypes.

type Valence

type Valence int32 //enums:enum

Valence

const (
	Pos Valence = iota
	Neg
)
const ValenceN Valence = 2

ValenceN is the highest valid value for type Valence, plus one.

func ValenceValues

func ValenceValues() []Valence

ValenceValues returns all possible values for the type Valence.

func (Valence) Desc

func (i Valence) Desc() string

Desc returns the description of the Valence value.

func (Valence) Int64

func (i Valence) Int64() int64

Int64 returns the Valence value as an int64.

func (Valence) MarshalText

func (i Valence) MarshalText() ([]byte, error)

MarshalText implements the encoding.TextMarshaler interface.

func (*Valence) SetInt64

func (i *Valence) SetInt64(in int64)

SetInt64 sets the Valence value from an int64.

func (*Valence) SetString

func (i *Valence) SetString(s string) error

SetString sets the Valence value from its string representation, and returns an error if the string is invalid.

func (Valence) String

func (i Valence) String() string

String returns the string representation of this Valence value.

func (*Valence) UnmarshalText

func (i *Valence) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

func (Valence) Values

func (i Valence) Values() []enums.Enum

Values returns all possible values for the type Valence.

Jump to

Keyboard shortcuts

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