// ta_Dump File v2.0 LeabraProject .projects[0] { Doc_Group @.docs = [1] { taDoc @[0] { }; }; Wizard_Group @.wizards = [1] { LeabraWizard @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; LayerWizElList @.layer_cfg = [3] { LayerWizEl @[0] { }; LayerWizEl @[1] { }; LayerWizEl @[2] { }; }; }; }; SelectEdit_Group @.edits = [1] { SelectEdit @[0] { EditMbrItem_Group @.mbrs = [5] { EditMbrItem @[0] { }; EditMbrItem @[1] { }; EditMbrItem @[2] { }; EditMbrItem @[3] { }; EditMbrItem @[4] { }; }; }; }; DataTable_Group @.data = [0] { DataTable_Group @.gp[0] = [4] { DataTable @[0] { DataTableCols @.data = [5] { String_Data @[0] { }; float_Data @[1] { }; float_Data @[2] { }; float_Data @[3] { }; float_Data @[4] { }; }; }; DataTable @[1] { DataTableCols @.data = [4] { String_Data @[0] { }; float_Data @[1] { }; float_Data @[2] { }; float_Data @[3] { }; }; }; DataTable @[2] { DataTableCols @.data = [6] { String_Data @[0] { }; float_Data @[1] { }; float_Data @[2] { }; float_Data @[3] { }; float_Data @[4] { }; float_Data @[5] { }; }; }; DataTable @[3] { DataTableCols @.data = [6] { String_Data @[0] { }; float_Data @[1] { }; float_Data @[2] { }; float_Data @[3] { }; float_Data @[4] { }; float_Data @[5] { }; }; }; }; DataTable_Group @.gp[1] = [3] { DataTable @[0] { DataTableCols @.data = [10] { int_Data @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; int_Data @[1] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; int_Data @[2] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; String_Data @[3] { }; String_Data @[4] { }; int_Data @[5] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; float_Data @[6] { }; float_Data @[7] { }; float_Data @[8] { }; float_Data @[9] { }; }; }; DataTable @[1] { DataTableCols @.data = [6] { int_Data @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; int_Data @[1] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; float_Data @[2] { }; float_Data @[3] { }; float_Data @[4] { }; float_Data @[5] { }; }; }; DataTable @[2] { DataTableCols @.data = [16] { int_Data @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; int_Data @[1] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; int_Data @[2] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; String_Data @[3] { }; String_Data @[4] { }; int_Data @[5] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; int_Data @[6] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; float_Data @[7] { }; float_Data @[8] { }; float_Data @[9] { }; float_Data @[10] { }; float_Data @[11] { }; float_Data @[12] { }; float_Data @[13] { }; float_Data @[14] { }; float_Data @[15] { }; }; }; }; DataTable_Group @.gp[2] = [1] { DataTable @[0] { DataTableCols @.data = [11] { int_Data @[0] { }; float_Data @[1] { }; float_Data @[2] { }; float_Data @[3] { }; float_Data @[4] { }; float_Data @[5] { }; float_Data @[6] { }; float_Data @[7] { }; float_Data @[8] { }; float_Data @[9] { }; float_Data @[10] { }; }; }; }; }; taBase_Group @.data_proc = [4] { taDataProc @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; taDataAnal @[1] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; taDataGen @[2] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; taImageProc @[3] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; }; Program_Group @.programs = [0] { Program_Group @.gp[0] = [17] { Program @[0] { ProgVar_List @.args = [5] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; }; ProgVar_List @.vars = [1] { ProgVar @[0] { }; }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [2] { NetCounterInit @[0] { }; WhileLoop @[1] { ProgEl_List @.loop_code = [2] { ProgramCall @[0] { ProgArg_List @.prog_args = [5] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; ProgArg @[3] { }; ProgArg @[4] { }; }; }; NetCounterIncr @[1] { }; }; }; }; }; Program @[1] { ProgObjList @.objs = [1] { RndSeed @[0] { }; }; ProgType_List @.types = [1] { DynEnumType @[0] { DynEnumItem_List @.enums = [2] { DynEnumItem @[0] { }; DynEnumItem @[1] { }; }; }; }; ProgVar_List @.args = [5] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; }; ProgVar_List @.vars = [15] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; ProgVar @[5] { }; ProgVar @[6] { }; ProgVar @[7] { }; ProgVar @[8] { }; ProgVar @[9] { }; ProgVar @[10] { }; ProgVar @[11] { }; ProgVar @[12] { }; ProgVar @[13] { }; ProgVar @[14] { }; }; ProgEl_List @.init_code = [6] { AssignExpr @[0] { }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; AssignExpr @[2] { }; NetCounterInit @[3] { }; IfElse @[4] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; ProgEl_List @.false_code = [1] { MethodCall @[0] { }; }; }; IfGuiPrompt @[5] { ProgEl_List @.yes_code = [2] { MethodCall @[0] { }; PrintExpr @[1] { }; }; }; }; ProgEl_List @.prog_code = [13] { AssignExpr @[0] { }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; NetCounterInit @[2] { }; MemberAssign @[3] { }; IfElse @[4] { ProgEl_List @.true_code = [2] { MethodCall @[0] { }; PrintExpr @[1] { }; }; }; AssignExpr @[5] { }; ForLoop @[6] { ProgEl_List @.loop_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { UserScript @[0] { }; }; }; }; }; MemberAssign @[7] { }; OtherProgramVar @[8] { }; OtherProgramVar @[9] { }; ProgramCall @[10] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; WhileLoop @[11] { ProgEl_List @.loop_code = [6] { MemberAssign @[0] { }; ProgramCall @[1] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; NetCounterIncr @[2] { }; IfBreak @[3] { }; MemberAssign @[4] { }; ProgramCall @[5] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; }; }; MethodCall @[12] { }; }; }; Program @[2] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [5] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; }; ProgEl_List @.init_code = [2] { NetCounterInit @[0] { }; AssignExpr @[1] { }; }; ProgEl_List @.prog_code = [9] { NetCounterInit @[0] { }; AssignExpr @[1] { }; MethodCall @[2] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[3] { }; NetDataLoop @[4] { ProgEl_List @.loop_code = [2] { ProgramCall @[0] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; IfElse @[1] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; }; }; IfElse @[5] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; MethodCall @[6] { }; ProgramCall @[7] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[8] { }; }; }; Program @[3] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [9] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; ProgVar @[5] { }; ProgVar @[6] { }; ProgVar @[7] { }; ProgVar @[8] { }; }; ProgEl_List @.init_code = [2] { NetCounterInit @[0] { }; AssignExpr @[1] { }; }; ProgEl_List @.prog_code = [11] { NetCounterInit @[0] { }; AssignExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; MethodCall @[4] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[5] { }; NetDataLoop @[6] { ProgEl_List @.loop_code = [2] { ProgramCall @[0] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; IfElse @[1] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; }; }; IfElse @[7] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; MethodCall @[8] { }; ProgramCall @[9] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[10] { }; }; }; Program @[4] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [6] { NetCounterInit @[0] { }; MethodCall @[1] { }; WhileLoop @[2] { ProgEl_List @.loop_code = [3] { ProgramCall @[0] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; NetCounterIncr @[1] { }; MethodCall @[2] { }; }; }; MethodCall @[3] { }; ProgramCall @[4] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; NetUpdateView @[5] { }; }; }; Program @[5] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [6] { NetCounterInit @[0] { }; MethodCall @[1] { }; WhileLoop @[2] { ProgEl_List @.loop_code = [3] { ProgramCall @[0] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; NetCounterIncr @[1] { }; MethodCall @[2] { }; }; }; MethodCall @[3] { }; ProgramCall @[4] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; NetUpdateView @[5] { }; }; }; Program @[6] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [3] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [12] { NetCounterInit @[0] { }; MethodCall @[1] { }; ProgramCall @[2] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; ProgramCall @[3] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; IfElse @[4] { ProgEl_List @.true_code = [1] { MemberAssign @[0] { }; }; ProgEl_List @.false_code = [1] { MemberAssign @[0] { }; }; }; MethodCall @[5] { }; IfElse @[6] { ProgEl_List @.true_code = [1] { AssignExpr @[0] { }; }; ProgEl_List @.false_code = [1] { AssignExpr @[0] { }; }; }; WhileLoop @[7] { ProgEl_List @.loop_code = [4] { ProgramCall @[0] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; NetCounterIncr @[1] { }; IfContinue @[2] { }; IfBreak @[3] { }; }; }; MethodCall @[8] { }; IfElse @[9] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; IfElse @[10] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; NetUpdateView @[11] { }; }; }; Program @[7] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [3] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [12] { NetCounterInit @[0] { }; MethodCall @[1] { }; ProgramCall @[2] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; ProgramCall @[3] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; IfElse @[4] { ProgEl_List @.true_code = [1] { MemberAssign @[0] { }; }; ProgEl_List @.false_code = [1] { MemberAssign @[0] { }; }; }; MethodCall @[5] { }; IfElse @[6] { ProgEl_List @.true_code = [1] { AssignExpr @[0] { }; }; ProgEl_List @.false_code = [1] { AssignExpr @[0] { }; }; }; WhileLoop @[7] { ProgEl_List @.loop_code = [4] { ProgramCall @[0] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; NetCounterIncr @[1] { }; IfContinue @[2] { }; IfBreak @[3] { }; }; }; MethodCall @[8] { }; IfElse @[9] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; IfElse @[10] { ProgEl_List @.true_code = [1] { MethodCall @[0] { }; }; }; NetUpdateView @[11] { }; }; }; Program @[8] { ProgVar_List @.args = [1] { ProgVar @[0] { }; }; ProgVar_List @.vars = [1] { ProgVar @[0] { }; }; ProgEl_List @.prog_code = [3] { MethodCall @[0] { }; NetUpdateView @[1] { }; ProgramCall @[2] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; }; }; Program @[9] { ProgVar_List @.args = [1] { ProgVar @[0] { }; }; ProgVar_List @.vars = [1] { ProgVar @[0] { }; }; ProgEl_List @.prog_code = [3] { MethodCall @[0] { }; NetUpdateView @[1] { }; ProgramCall @[2] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; }; }; Program @[10] { ProgObjList @.objs = [1] { LayerWriter @[0] { LayerDataEl_List @.layer_data = [5] { LayerWriterEl @[0] { }; LayerWriterEl @[1] { }; LayerWriterEl @[2] { }; LayerWriterEl @[3] { }; LayerWriterEl @[4] { }; }; }; }; ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [1] { ProgVar @[0] { }; }; ProgEl_List @.init_code = [2] { MethodCall @[0] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; }; ProgEl_List @.prog_code = [1] { MethodCall @[0] { }; }; }; Program @[11] { ProgObjList @.objs = [1] { LayerWriter @[0] { LayerDataEl_List @.layer_data = [5] { LayerWriterEl @[0] { }; LayerWriterEl @[1] { }; LayerWriterEl @[2] { }; LayerWriterEl @[3] { }; LayerWriterEl @[4] { }; }; }; }; ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [1] { ProgVar @[0] { }; }; ProgEl_List @.init_code = [2] { MethodCall @[0] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; }; ProgEl_List @.prog_code = [1] { MethodCall @[0] { }; }; }; Program @[12] { ProgObjList @.objs = [1] { NetMonitor @[0] { NetMonItem_List @.items = [10] { NetMonItem @[0] { }; NetMonItem @[1] { }; NetMonItem @[2] { }; NetMonItem @[3] { }; NetMonItem @[4] { }; NetMonItem @[5] { }; NetMonItem @[6] { }; NetMonItem @[7] { }; NetMonItem @[8] { }; NetMonItem @[9] { }; }; }; }; ProgVar_List @.args = [1] { ProgVar @[0] { }; }; ProgVar_List @.vars = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgEl_List @.init_code = [3] { MethodCall @[0] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[2] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; }; ProgEl_List @.prog_code = [4] { MethodCall @[0] { }; MethodCall @[1] { }; MethodCall @[2] { }; MethodCall @[3] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; }; }; Program @[13] { ProgObjList @.objs = [1] { NetMonitor @[0] { NetMonItem_List @.items = [16] { NetMonItem @[0] { }; NetMonItem @[1] { }; NetMonItem @[2] { }; NetMonItem @[3] { }; NetMonItem @[4] { }; NetMonItem @[5] { }; NetMonItem @[6] { }; NetMonItem @[7] { }; NetMonItem @[8] { }; NetMonItem @[9] { }; NetMonItem @[10] { }; NetMonItem @[11] { }; NetMonItem @[12] { }; NetMonItem @[13] { }; NetMonItem @[14] { }; NetMonItem @[15] { }; }; }; }; ProgVar_List @.args = [1] { ProgVar @[0] { }; }; ProgVar_List @.vars = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgEl_List @.init_code = [3] { MethodCall @[0] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[2] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; }; ProgEl_List @.prog_code = [5] { IfReturn @[0] { }; MethodCall @[1] { }; MethodCall @[2] { }; MethodCall @[3] { }; MethodCall @[4] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; }; }; Program @[14] { ProgObjList @.objs = [1] { NetMonitor @[0] { NetMonItem_List @.items = [6] { NetMonItem @[0] { }; NetMonItem @[1] { }; NetMonItem @[2] { }; NetMonItem @[3] { }; NetMonItem @[4] { }; NetMonItem @[5] { }; }; }; }; ProgVar_List @.args = [1] { ProgVar @[0] { }; }; ProgVar_List @.vars = [3] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; }; ProgEl_List @.init_code = [4] { AssignExpr @[0] { }; MethodCall @[1] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[2] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; MethodCall @[3] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; }; ProgEl_List @.prog_code = [4] { MethodCall @[0] { }; MethodCall @[1] { }; AssignExpr @[2] { }; MethodCall @[3] { }; }; }; Program @[15] { ProgVar_List @.args = [1] { ProgVar @[0] { }; }; ProgVar_List @.vars = [6] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; ProgVar @[5] { }; }; ProgEl_List @.prog_code = [6] { IfReturn @[0] { }; MiscCall @[1] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MiscCall @[2] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; AssignExpr @[3] { }; MethodCall @[4] { ProgArg_List @.meth_args = [4] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; ProgArg @[3] { }; }; }; MethodCall @[5] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; }; }; Program @[16] { ProgVar_List @.args = [2] { ProgVar @[0] { }; ProgVar @[1] { }; }; ProgVar_List @.vars = [15] { ProgVar @[0] { }; ProgVar @[1] { }; ProgVar @[2] { }; ProgVar @[3] { }; ProgVar @[4] { }; ProgVar @[5] { }; ProgVar @[6] { }; ProgVar @[7] { }; ProgVar @[8] { }; ProgVar @[9] { }; ProgVar @[10] { }; ProgVar @[11] { }; ProgVar @[12] { }; ProgVar @[13] { }; ProgVar @[14] { }; }; ProgEl_List @.prog_code = [4] { AssignExpr @[0] { }; AssignExpr @[1] { }; AssignExpr @[2] { }; IfElse @[3] { ProgEl_List @.true_code = [4] { IfElse @[0] { ProgEl_List @.true_code = [2] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; MemberAssign @[1] { }; }; ProgEl_List @.false_code = [2] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; MemberAssign @[1] { }; }; }; AssignExpr @[1] { }; AssignExpr @[2] { }; IfElse @[3] { ProgEl_List @.true_code = [4] { MemberAssign @[0] { }; MemberAssign @[1] { }; MemberAssign @[2] { }; MemberAssign @[3] { }; }; ProgEl_List @.false_code = [4] { MemberAssign @[0] { }; MemberAssign @[1] { }; MemberAssign @[2] { }; MemberAssign @[3] { }; }; }; }; ProgEl_List @.false_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [2] { MemberAssign @[0] { }; MemberAssign @[1] { }; }; }; }; }; }; }; }; }; DataViewer_List @.viewers = [1] { MainWindowViewer @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; UserDataItem @[1] { }; UserDataItem @[2] { }; UserDataItem @[3] { }; UserDataItem @[4] { }; UserDataItem @[5] { }; }; ToolBar_List @.toolbars = [1] { ToolBar @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; }; }; }; FrameViewer_List @.frames = [3] { tabBrowseViewer @[0] { }; PanelViewer @[1] { }; T3DataViewer @[2] { T3DataViewFrame_List @.frames = [4] { T3DataViewFrame @[0] { T3DataView_List @.children = [1] { NetView @[0] { ScaleRange_List @.scale_ranges = [23] { ScaleRange @[0] { }; ScaleRange @[1] { }; ScaleRange @[2] { }; ScaleRange @[3] { }; ScaleRange @[4] { }; ScaleRange @[5] { }; ScaleRange @[6] { }; ScaleRange @[7] { }; ScaleRange @[8] { }; ScaleRange @[9] { }; ScaleRange @[10] { }; ScaleRange @[11] { }; ScaleRange @[12] { }; ScaleRange @[13] { }; ScaleRange @[14] { }; ScaleRange @[15] { }; ScaleRange @[16] { }; ScaleRange @[17] { }; ScaleRange @[18] { }; ScaleRange @[19] { }; ScaleRange @[20] { }; ScaleRange @[21] { }; ScaleRange @[22] { }; }; }; }; }; T3DataViewFrame @[1] { T3DataView_List @.children = [1] { GraphTableView @[0] { T3DataView_List @.children = [16] { GraphColView @[0] { }; GraphColView @[1] { }; GraphColView @[2] { }; GraphColView @[3] { }; GraphColView @[4] { }; GraphColView @[5] { }; GraphColView @[6] { }; GraphColView @[7] { }; GraphColView @[8] { }; GraphColView @[9] { }; GraphColView @[10] { }; GraphColView @[11] { }; GraphColView @[12] { }; GraphColView @[13] { }; GraphColView @[14] { }; GraphColView @[15] { }; }; }; }; }; T3DataViewFrame @[2] { T3DataView_List @.children = [1] { GraphTableView @[0] { T3DataView_List @.children = [6] { GraphColView @[0] { }; GraphColView @[1] { }; GraphColView @[2] { }; GraphColView @[3] { }; GraphColView @[4] { }; GraphColView @[5] { }; }; }; }; }; T3DataViewFrame @[3] { T3DataView_List @.children = [1] { GraphTableView @[0] { T3DataView_List @.children = [11] { GraphColView @[0] { }; GraphColView @[1] { }; GraphColView @[2] { }; GraphColView @[3] { }; GraphColView @[4] { }; GraphColView @[5] { }; GraphColView @[6] { }; GraphColView @[7] { }; GraphColView @[8] { }; GraphColView @[9] { }; GraphColView @[10] { }; }; }; }; }; }; }; }; DockViewer_List @.docks = [1] { ToolBoxDockViewer @[0] { UserDataItem_List @*(.user_data_) { UserDataItem @[0] { }; UserDataItem @[1] { }; UserDataItem @[2] { }; UserDataItem @[3] { }; UserDataItem @[4] { }; UserDataItem @[5] { }; }; }; }; }; }; Network_Group @.networks = [1] { LeabraNetwork @[0] { BaseSpec_Group @.specs = [3] { ConSpec @[0] { }; UniformRndPrjnSpec @[1] { }; UniformRndPrjnSpec @[2] { }; BaseSpec_Group @.gp[0] = [10] { FullPrjnSpec @[0] { }; OneToOnePrjnSpec @[1] { }; TesselPrjnSpec @[2] { BaseSpec_Group @.children = [1] { TesselPrjnSpec @[0] { TessEl_List @.send_offs = [18] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; TessEl @[9] { }; TessEl @[10] { }; TessEl @[11] { }; TessEl @[12] { }; TessEl @[13] { }; TessEl @[14] { }; TessEl @[15] { }; TessEl @[16] { }; TessEl @[17] { }; }; }; }; TessEl_List @.send_offs = [18] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; TessEl @[9] { }; TessEl @[10] { }; TessEl @[11] { }; TessEl @[12] { }; TessEl @[13] { }; TessEl @[14] { }; TessEl @[15] { }; TessEl @[16] { }; TessEl @[17] { }; }; }; TesselPrjnSpec @[3] { TessEl_List @.send_offs = [9] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; }; }; TesselPrjnSpec @[4] { TessEl_List @.send_offs = [12] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; TessEl @[9] { }; TessEl @[10] { }; TessEl @[11] { }; }; }; TesselPrjnSpec @[5] { TessEl_List @.send_offs = [2] { TessEl @[0] { }; TessEl @[1] { }; }; }; TesselPrjnSpec @[6] { TessEl_List @.send_offs = [12] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; TessEl @[9] { }; TessEl @[10] { }; TessEl @[11] { }; }; }; TesselPrjnSpec @[7] { TessEl_List @.send_offs = [9] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; }; }; TesselPrjnSpec @[8] { TessEl_List @.send_offs = [4] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; }; }; OneToOnePrjnSpec @[9] { }; }; BaseSpec_Group @.gp[1] = [7] { LeabraBiasSpec @[0] { BaseSpec_Group @.children = [1] { LeabraBiasSpec @[0] { }; }; }; LeabraConSpec @[1] { }; LeabraConSpec @[2] { BaseSpec_Group @.children = [2] { LeabraConSpec @[0] { }; LeabraConSpec @[1] { }; }; }; LeabraConSpec @[3] { BaseSpec_Group @.children = [7] { LeabraConSpec @[0] { }; LeabraConSpec @[1] { }; LeabraConSpec @[2] { }; LeabraConSpec @[3] { }; LeabraConSpec @[4] { }; LeabraConSpec @[5] { }; LeabraConSpec @[6] { }; }; }; LeabraConSpec @[4] { }; LeabraConSpec @[5] { }; LeabraConSpec @[6] { }; }; BaseSpec_Group @.gp[2] = [2] { LeabraUnitSpec @[0] { BaseSpec_Group @.children = [5] { LeabraUnitSpec @[0] { }; LeabraUnitSpec @[1] { }; LeabraUnitSpec @[2] { }; LeabraUnitSpec @[3] { BaseSpec_Group @.children = [3] { LeabraUnitSpec @[0] { }; LeabraUnitSpec @[1] { Schedule @.noise_sched = [4] { SchedItem @[0] { }; SchedItem @[1] { }; SchedItem @[2] { }; SchedItem @[3] { }; }; }; LeabraUnitSpec @[2] { }; }; }; LeabraUnitSpec @[4] { }; }; }; LeabraUnitSpec @[1] { }; }; BaseSpec_Group @.gp[3] = [2] { LeabraLayerSpec @[0] { BaseSpec_Group @.children = [7] { LeabraLayerSpec @[0] { }; LeabraLayerSpec @[1] { }; LeabraLayerSpec @[2] { }; LeabraLayerSpec @[3] { }; LeabraLayerSpec @[4] { }; LeabraLayerSpec @[5] { }; LeabraLayerSpec @[6] { }; }; }; LeabraLayerSpec @[1] { BaseSpec_Group @.children = [2] { LeabraLayerSpec @[0] { }; LeabraLayerSpec @[1] { }; }; }; }; }; Layer_Group @.layers = [9] { LeabraLayer @[0] { Unit_Group @.units = [25] { }; }; LeabraLayer @[1] { Projection_Group @.projections = [5] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; LeabraPrjn @[2] { }; LeabraPrjn @[3] { }; LeabraPrjn @[4] { }; }; Unit_Group @.units = [36] { }; }; LeabraLayer @[2] { Unit_Group @.units = [4] { }; }; LeabraLayer @[3] { Projection_Group @.projections = [3] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; LeabraPrjn @[2] { }; }; Unit_Group @.units = [4] { }; }; LeabraLayer @[4] { Projection_Group @.projections = [2] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; }; Unit_Group @.units = [2] { }; }; LeabraLayer @[5] { Projection_Group @.projections = [2] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; }; Unit_Group @.units = [2] { }; }; LeabraLayer @[6] { Projection_Group @.projections = [2] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; }; Unit_Group @.units = [4] { }; }; LeabraLayer @[7] { Projection_Group @.projections = [2] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; }; Unit_Group @.units = [2] { }; }; LeabraLayer @[8] { Projection_Group @.projections = [2] { LeabraPrjn @[0] { }; LeabraPrjn @[1] { }; }; Unit_Group @.units = [9] { }; }; }; }; }; }; LeabraProject .projects[0] { name="Project_0"; desc=; tags=; templates { name=; el_typ=taBase; el_def=0; }; docs { name=; el_typ=taDoc; el_def=0; taDoc @[0] { name="ProjectDocs"; auto_open=1; text="<html> <head></head> <body> = Probabilistic Classification Learning in the Basal Ganglia = * GENERAL USAGE NOTE: To start, it is usually a good idea to do <code>Object/Edit Dialog</code> in the menu just above this text, which will open this documentation in a separate window that you can more easily come back to. If your screen is small, you may also want to make this new window \"Always on Top\": e.g., in Linux, <code>Emergent-logo-at-top-left-></code> <code> Advanced-> Keep Above Others</code>). Alternatively, you can always return to this document by clicking on the <code>ProjectDocs</code> tab at the top of this middle panel. This project replicates the effect described in Frank (2005), in which a basal ganglia network can learn via pure reinforcement learning to select between complex probabilistic stimulus-response mappings in the \"weather prediction\" task, while networks with simulated Parkinson's disease are impaired. Each of the four possible 'cues' in the task are represented by a column of units in the Input layer, and anywhere from one to three cues are presented at a time. The relationship between particular cues present and probability of a given response (sun or rain, represented by R1 and R2 in the model) is highly probabilistic and combinatorial. For those interested in the specific probabilistic weather prediction input-output mappings and the frequency of occurrence of each cue, see Knowlton et al (1994) <i>Learning & Memory</i> which is represented in the \"Train_WeatherPred\" input data table in the tree on the left. The project is set up to run four epochs, consisting of one hundred trials each, for a total of 400 trials. Networks are tested before training, and after each epoch of training, by testing for optimal performance (using the TestWP_Optimal InputData). Performance on this test is monitored in the [[.T3Tab.EpochOutputData]] graph, counting the number of errors made out of a total of 12 possible (so chance performance of 50% is 6 errors). In this measure, errors are counted not as a function of feedback in each trial during training itself (which is probabilistic) but rather in terms of the best (most optimal) choice. Note that this test is also administered to the model at the very beginning, prior to any training, as a measure of baseline performance (should be chance on average), and that during this test there is no 'feedback' (DA bursts or dips which would otherwise drive learning). For intact network performance, make sure the number of intact SNc units is set to 4 (out of 4 units), the DA burst value is set to 1 (corresponding to maximal phasic burst firing rate) and the DA dip value is set to 0 (minimum phasic dip DA firing rate). These values are set in the [[.PanelTab.MasterControl]] control panel. To monitor performance across multiple networks, first save a Data Log file to store the data. Open the <code>data->OutputData subgroup</code> tree in the '''Tree''' window (far left) and click on <code>EpochOutputData</code> to display the data table (which is where the raw data is stored that is then plotted in the graph on the right). Click on <code>Object->Save Data Log</code>). Make sure to name this logfile with some reference to the current dopamine settings, so that you can properly interpret the data (e.g., name this 'Intact_epc.dat'). To run a set of networks on the task, expand the <code> programs</code> tab int the \"Tree\" window on the fat left, and then under <code> LeabraAll_Std_subgrpup</code>, click on the <code.LeabraBatch</code> object. Hit Init and Run on the bottom of the resulting [[.PanelTab.LeabraBatch]] panel that will open. This will run a set of 25 networks, and store the data in the logfile you just created. (To speed things up when running a batch of networks, turn off the display of the network by clicking on the appropriate tab that you want to view and check off the <code>Display!</code> box on the top left.) The output in the cnt_err column of the [[.PanelTab.EpochOutputData]] log file is the number of errors (out of 12) made in the optimal test environment, plotted as a function of epoch number, for each run of the network in the batch. Because the data are noisy (probabilistic rewards combined with random input weights which could by chance lead to particularly good or bad performance), we need to average across multiple networks with different sets of initial weights. To analyze the data, in the [[.PanelTab.EpochOutputData]] tab, click on <code>DataProc->Group Mean SEM</code>. In the dialog box that pops up, make sure the <code>dest_data</code> is set to <code>NULL</code>; this will create a new output data log under the AnalysisData_subgroup in the left frame, called <code>EpochOutputData_Group</code>. Also set the first <code>gp_col1</code> to \"epoch\" so that the script can analyze performance as a function of each epoch, averaged across all networks. Set all other fields to <code>NULL</code> and click <code>Ok</code>. Now open the new analysis <code>EpochOutputData_Group</code> log. You should see the statistics (mean, standard error) for each variable that was monitored in the EpochOutputData log. The relevant ones are cnt_err_mean and cnt_err_sem. You should see that intact networks learn to discriminate between the complex probabilistic contingencies in the weather prediction task as training progresses (error decreases within 2-4 epochs, corresponding to 200-400 trials of training). They usually don't achieve perfectly optimal performance in the task, still making on average 20-25% errors, but this is also the case for healthy humans performing the task! (Also remember the network is learning using pure reinforcement learning and not error-driven learning). To simulate PD, set the number of intact DA units to 1 in the [[.PanelTab.MasterControl]] control panel. This sets the number of SNc units that are connected to the Striatum to 1 (out of 4). Note that the units themselves are not actually lesioned, because leabra applies a normalization factor when computing net input to layers that depends on the number of units in the sending layer -- so that it would treat a single unit layer as effectively four times greater input to other layers compared with a four unit layer. This makes sense for many general neural net applications (so that the total number of units in a region doesn't parametrically affect downstream processing), but is not useful when we want to simulate partial lesion effects! To circumvent this problem we simply eliminate the synaptic weights from 3 out of the 4 DA units to Striatum (test this by pressing r.wt and clicking on striatal units in a PD network -- you should see connectivity to only one out of four SNc units). Don't be misled by the activation of all DA units after making this manipulation -- only the connected ones actually influence processing in the BG. This reduction in number of intact DA units leads to effectively reduced tonic and phasic DA levels in the Striatum. Set a new log file name in the [[.PanelTab.EpochOutputData]] object, and give it a new name (e.g, with a PD descriptor). Hit Init and Run on the [[.PanelTab.LeabraBatch]] panel. When it's done, analyze the group mean and standard error as above. You should see that Parkinson's networks are impaired at learning compared with intact networks, due to a reduced dynamic range of DA signals for resolving Go/NoGo differences in stimulus-response-reward probabilities. Note that the Parkinson's deficit can also be captured with other ways of reducing the fidelity of DA signals. For example, if you set the number of intact DA units to 2 instead of 1 in the [[.PanelTab.MasterControl]] you should see that performance with 50% DA damage is relatively intact. consistent with the existence of redundancy in the DA system, whereby PD symptoms do not arise until a substantial proportion (~75%) of DA cells are damaged. But in this condition, the system is more dependent on having maximal DA bursting during rewards. To see this, reduce the \"DA burst real val\" to 0.04 instead of 1. (This value is the net input applied externally to the DA units and does NOT reflect the activation of the unit itself, which is a nonlinear function of this input. A net input of .04 corresponds to a phasic firing rate of roughly 0.8, which is still a burst relative to the tonic level (.03 net input, 0.5 firing rate) but represents a reduction in phasic bursting compared to the maximal firing rate value of 1.0). When this reduction in phasic DA is combined with DA unit damage, you should see more reliable probabilistic learning deficits relative to intact networks. Finally, set the number of intact DA units back to 4, and run another batch while maintaining the reduced phasic DA levels. You should see that with fully intact DA units, networks are still able to learn this complex probabilistic learning task with reduced phasic DA signals -- again showing robustness of the system to fluctuations in DA, which only become critical when combined with DA unit damage. Finally, it was shown in Frank (2005) that the indirect \"NoGo\" pathway is critical for robust learning, in that networks without this pathway, even controlling for other parameters in the resulting network, were reliably impaired compared to the full model. These results demonstrate that the combined Go/NoGo learning system is required for learning from the full dynamic range of DA signals and for enhancing the contrast between subtly different probabilistic reinforcement values in this complex task. = PD Tremor, and Oscillations = With very low DA levels, you may also see some oscillations in STN and GP layers on some trials (these correspond to Parkinson's tremor; see Frank, 2006 for detailed discussion). You can look at these more carefully in the [[.T3Tab.CycleOutputData]] graph logs where activity levels of the various layers are recorded. The easiest way to see this is to set the tonic DA value to 0 instead of the default .03. This will eliminate all DA unit activity during response selection (note this would not work for simulating PD in general because it still allows for maximal DA burst firing during rewards). Then increase the number of cycles that the network processes in each test trial so that you have more room to see oscillations -- change the \"test cycles expr\" value from 100 to 200. Now Run a few trials using the <code>LeabraTestEpoch</code> process, and watch the activity levels of the STN and GP in the [[.T3Tab.CycleOutputData]] graph log. You might have to run more than one trial to see the oscillations, which should not (or only rarely) be seen at all in the intact state. (Note that the same oscillations will be seen in the standard way of simulating PD above, by reducing the num_intact_snc_units to 1, but in that case you have to first Init and step through a trial in the Batch or Train process, which is where the removal of DA connections is executed, before running the Test trials to observe unit activity across cycles in the CycleOutputData graph -- which is configured to plot only test activity). </body> </html> "; }; }; wizards { name=; el_typ=LeabraWizard; el_def=0; LeabraWizard @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NO_CLIP"; value 1 0=1; }; }; name="LeabraWizard_2"; auto_open=0; n_layers=3; layer_cfg { name=; el_typ=LayerWizEl; el_def=0; LayerWizEl @[0] { name="LayerWizEl"; n_units=25; io_type=76; }; LayerWizEl @[1] { name="LayerWizEl"; n_units=25; io_type=INPUT; }; LayerWizEl @[2] { name="LayerWizEl"; n_units=25; io_type=7274496; }; }; connectivity=BIDIRECTIONAL; default_net_type=LeabraNetwork; }; }; edits { name=; el_typ=SelectEdit; el_def=0; SelectEdit @[0] { name="MasterControl"; auto_edit=1; desc=; mbrs { name=; el_typ=EditMbrItem; el_def=0; EditMbrItem @[0] { label="tonic DA real_val"; desc=" real value"; base=.projects[0].programs.gp[0][16].vars[11]$0$; mbr=ProgVar::real_val; }; EditMbrItem @[1] { label="DA burst real_val"; desc=" real value"; base=.projects[0].programs.gp[0][16].vars[14]$1$; mbr=ProgVar::real_val; }; EditMbrItem @[2] { label="DA dip real_val"; desc=" real value"; base=.projects[0].programs.gp[0][16].vars[13]$2$; mbr=ProgVar::real_val; }; EditMbrItem @[3] { label="num intact snc units "; desc=" integer value (also for enum types)"; base=.projects[0].programs.gp[0][1].vars[11]$3$; mbr=ProgVar::int_val; }; EditMbrItem @[4] { label="test cycles "; desc=" the expression to compute and assign to the member<br> : enter the expression here -- you can just type in names of program variables or literal values. enclose strings in double quotes. variable names will be checked and automatically updated<br> var lookup!: lookup a program variable and add it to the current expression (this field then returns to empty/NULL)<br> enum lookup!: lookup a dynamic enum variable and add it to the current expression (this field then returns to empty/NULL)"; base=.projects[0].programs.gp[0][7].prog_code[4].false_code[0]$4$; mbr=MemberAssign::expr; }; }; mths { name=; el_typ=EditMthItem; el_def=0; group_type=GT_BUTTONS; }; }; }; data { name=; el_typ=DataTable; el_def=0; DataTable_Group @.gp[0] { name="InputData"; el_typ=DataTable; el_def=0; DataTable @[0] { name="Train_Freq"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @[0] { name="Name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [40] "80vs20";"80vs20";"80vs20";"80vs20";"80vs20";"40vs60";"40vs60";"40vs60";"80vs20";"80vs20";"80vs20";"80vs20";"80vs20";"40vs60";"40vs60";"40vs60";"40vs60";"40vs60";"40vs60";"40vs60";"20vs80";"20vs80";"20vs80";"20vs80";"20vs80";"20vs80";"20vs80";"20vs80";"20vs80";"20vs80";"60vs40";"60vs40";"60vs40";"60vs40";"60vs40";"60vs40";"60vs40";"60vs40";"60vs40";"60vs40";}; }; float_Data @[1] { name="Input"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 5;5;}; calc_expr { expr=; }; ar { name=; [5 5 40] 1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0.0099999998;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0.0099999998;0;0;0;1;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0.0099999998;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0.0099999998;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;}; }; float_Data @[2] { name="Output"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; ar { name=; [2 1 40] 1;0;1;0;1;0;1;0;0;1;0;1;0;1;1;0;1;0;1;0;1;0;1;0;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;0;1;0;1;}; }; float_Data @[3] { name="SNc"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 40] 100;100;100;100;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0;0;0;0;0;0;0;0;0;0;0;0;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0;0;0;0;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0;0;0;0;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;100;100;100;100;100;100;100;100;0;0;0;0;0;0;0;0;100;100;100;100;100;100;100;100;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0.035;0;0;0;0;}; }; float_Data @[4] { name="Motor_Cortex"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 40] 1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;}; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; DataTable @[1] { name="TestFreq"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @[0] { name="Name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [4] "80";"60";"80";"60";}; }; float_Data @[1] { name="Input"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 5;5;}; calc_expr { expr=; }; ar { name=; [5 5 4] 1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;0;0;0;}; }; float_Data @[2] { name="Output"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; ar { name=; [2 1 4] 1;0;0;1;0;1;1;0;}; }; float_Data @[3] { name="SNc"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 4] 0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;0.029999999;}; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; DataTable @[2] { name="Train_WeatherPred"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @[0] { name="Name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [100] "Event_1";"Event_2";"Event_3";"Event_4";"Event_5";"Event_6";"Event_7";"Event_8";"Event_9";"Event_10";"Event_11";"Event_12";"Event_13";"Event_14";"Event_15";"Event_16";"Event_17";"Event_18";"Event_19";"Event_20";"Event_21";"Event_22";"Event_23";"Event_24";"Event_25";"Event_26";"Event_27";"Event_28";"Event_29";"Event_30";"Event_31";"Event_32";"Event_33";"Event_34";"Event_35";"Event_36";"Event_37";"Event_38";"Event_39";"Event_40";"Event_41";"Event_42";"Event_43";"Event_44";"Event_45";"Event_46";"Event_47";"Event_48";"Event_49";"Event_50";"Event_51";"Event_52";"Event_53";"Event_54";"Event_55";"Event_56";"Event_57";"Event_58";"Event_59";"Event_60";"Event_61";"Event_62";"Event_63";"Event_64";"Event_65";"Event_66";"Event_67";"Event_68";"Event_69";"Event_70";"Event_71";"Event_72";"Event_73";"Event_74";"Event_75";"Event_76";"Event_77";"Event_78";"Event_79";"Event_80";"Event_81";"Event_82";"Event_83";"Event_84";"Event_85";"Event_86";"Event_87";"Event_88";"Event_89";"Event_90";"Event_91";"Event_92";"Event_93";"Event_94";"Event_95";"Event_96";"Event_97";"Event_98";"Event_99";"Event_1";}; }; float_Data @[1] { name="Input"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 5;5;}; calc_expr { expr=; }; ar { name=; [5 5 100] 0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;}; }; float_Data @[2] { name="Output"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; ar { name=; [2 1 100] 1;0;0;1;1;0;1;0;1;0;0;1;1;0;0;1;0;1;1;0;1;0;0;1;1;0;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;1;0;1;0;0;1;1;0;1;0;1;0;1;0;0;1;1;0;1;0;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;0;1;0;1;1;0;0;1;0;1;1;0;1;0;1;0;1;0;0;1;1;0;1;0;0;1;1;0;0;1;1;0;0;1;1;0;0;1;0;1;0;1;0;1;0;1;0;1;1;0;0;1;0;1;0;1;1;0;0;1;0;1;1;0;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;0;1;0;1;0;1;0;1;1;0;0;1;}; }; float_Data @[3] { name="SNc"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 100] 0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;0;0;0;0;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;}; }; float_Data @[4] { name="Motor_Cortex"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; ar { name=; [2 1 100] 0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;1;0;0;1;1;0;0;1;0;1;1;0;0;1;1;0;0;1;0;1;0;1;0;1;1;0;0;1;1;0;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;1;0;1;0;0;1;}; }; float_Data @[5] { name="GP_Int"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 100] 0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;1;0;1;0;0;1;0;1;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;0;1;0;1;1;0;1;0;}; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; DataTable @[3] { name="TestWP_Optimal"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @[0] { name="Name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [12] "0001_14_143";"0010_08_375";"0011_09_111";"0100_08_625";"0101_06_167";"0111_04_250";"1000_14_857";"1010_06_833";"1011_03_333";"1100_09_889";"1101_03_667";"1110_04_750";}; }; float_Data @[1] { name="Input"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 5;5;}; calc_expr { expr=; }; ar { name=; [5 5 12] 0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;0;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;0;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;1;1;1;0;0;}; }; float_Data @[2] { name="Output"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; ar { name=; [2 1 12] 1;0;1;0;1;0;0;1;1;0;1;0;0;1;0;1;1;0;0;1;0;1;0;1;}; }; float_Data @[3] { name="SNc"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 12] 0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2000;2000;2000;2000;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;}; }; float_Data @[4] { name="Motor_Cortex"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; ar { name=; [2 1 12] 0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;0;1;0;1;}; }; float_Data @[5] { name="GP_Int"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;2;}; calc_expr { expr=; }; ar { name=; [2 2 12] 0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;1;0;1;0;0;1;0;1;0;1;0;1;}; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; }; DataTable_Group @.gp[1] { name="OutputData"; el_typ=DataTable; el_def=0; DataTable @[0] { name="TrialOutputData"; desc=; data { name="data"; el_typ=int_Data; el_def=0; int_Data @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="batch"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; int_Data @[1] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="epoch"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; int_Data @[2] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="trial"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; String_Data @[3] { name="trial_name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; String_Data @[4] { name="group_name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; int_Data @[5] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="phase_no"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[6] { name="minus_cycles"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[7] { name="sse"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[8] { name="ext_rew"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[9] { name="Output_sse"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; DataTable @[1] { name="EpochOutputData"; desc=; data { name="data"; el_typ=int_Data; el_def=0; int_Data @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="batch"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; int_Data @[1] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="epoch"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[2] { name="avg_sse"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[3] { name="cnt_err"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[4] { name="avg_ext_rew"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; float_Data @[5] { name="Output_sse"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [0] }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; DataTable @[2] { name="CycleOutputData"; desc=; data { name="data"; el_typ=int_Data; el_def=0; int_Data @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="batch"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; int_Data @[1] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="epoch"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; int_Data @[2] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="trial"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; String_Data @[3] { name="trial_name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; String_Data @[4] { name="group_name"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; int_Data @[5] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="phase_no"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; int_Data @[6] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NARROW"; value 1 0=1; }; }; name="cycle"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[7] { name="sse"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[8] { name="ext_rew"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[9] { name="STN_acts_avg"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[10] { name="Motor__acts_avg"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[11] { name="Thalam_acts_avg"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[12] { name="GP_Int_acts_avg"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[13] { name="GP_Ext_acts_avg"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; }; float_Data @[14] { name="Output_act"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; }; float_Data @[15] { name="Output_units_0_act"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=1; cell_geom{ 2;1;}; calc_expr { expr=; }; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; }; DataTable_Group @.gp[2] { name="AnalysisData"; el_typ=DataTable; el_def=0; DataTable @[0] { name="EpochOutputData_Group"; desc=; data { name="data"; el_typ=DataColTp; el_def=0; int_Data @[0] { name="epoch_group"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0;1;2;3;4;}; }; float_Data @[1] { name="batch_mean"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 12;12;12;12;12;}; }; float_Data @[2] { name="batch_sem"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 1.4422204;1.4422204;1.4422204;1.4422204;1.4422204;}; }; float_Data @[3] { name="avg_sse_mean"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0.85226071;0.68605095;0.42930219;0.36634642;0.32019389;}; }; float_Data @[4] { name="avg_sse_sem"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0.050845664;0.049731813;0.038850818;0.03262366;0.03938181;}; }; float_Data @[5] { name="cnt_err_mean"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 5.48;5.04;3.6400001;3.3199999;3.2;}; }; float_Data @[6] { name="cnt_err_sem"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0.31556934;0.42513055;0.38316578;0.36097646;0.4039802;}; }; float_Data @[7] { name="avg_ext_rew_mean"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0;0;0;0;0;}; }; float_Data @[8] { name="avg_ext_rew_sem"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0;0;0;0;0;}; }; float_Data @[9] { name="Output_sse_mean"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0.613289;0.90176368;0.5320006;0.37883657;0.21367583;}; }; float_Data @[10] { name="Output_sse_sem"; col_flags=SAVE_ROWS|SAVE_DATA; is_matrix=0; cell_geom{ 1;}; calc_expr { expr=; }; ar { name=; [5] 0.17472716;0.18528508;0.16630226;0.1144864;0.087352477;}; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; keygen 4 0=0; }; }; }; data_proc { name=; el_typ=taDataProc; el_def=0; taDataProc @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NO_CLIP"; value 1 0=1; }; }; name="data_base"; }; taDataAnal @[1] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NO_CLIP"; value 1 0=1; }; }; name="data_anal"; }; taDataGen @[2] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NO_CLIP"; value 1 0=1; }; }; name="data_gen"; }; taImageProc @[3] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="NO_CLIP"; value 1 0=1; }; }; name="image_proc"; }; }; programs { name=; el_typ=Program; el_def=0; step_prog=NULL; tags=; desc=; Program_Group @.gp[0] { name="LeabraAll_Std"; el_typ=Program; el_def=0; step_prog=.projects[0].programs.gp[0][4]$5$; tags="Leabra, Std, All"; desc="The full set of programs for training a standard Leabra network"; Program @[0] { name="LeabraBatch"; tags="Leabra, Std"; desc="Iterate over training runs (a batch of training runs) -- just a simple loop that calls training program"; flags=SHOW_STEP; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=.projects[0].networks[0]$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to operate on -- updates batch counter on network and passes it to train program"; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=.projects[0].data.gp[0][2]$7$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="datatable with training patterns -- not used by this program, but passed to train program"; }; ProgVar @[2] { name="max_batch"; var_type=T_Int; int_val=25; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="maximum number of batch runs to perform"; }; ProgVar @[3] { name="TrainWP"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="datatable with training patterns"; }; ProgVar @[4] { name="TestWP"; var_type=T_Object; object_type=DataTable; object_val=.projects[0].data.gp[0][3]$8$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="batch"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="batch counter"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initializes local batch counter and batch field on network"; flags=; network_var=.projects[0].programs.gp[0][0].args[0]$9$; local_ctr_var=.projects[0].programs.gp[0][0].vars[0]$10$; counter=Network::batch; }; }; prog_code { name=; el_typ=ProgEl; el_def=0; NetCounterInit @[0] { desc="initializes local batch counter and batch field on network"; flags=; network_var=$9$; local_ctr_var=$10$; counter=Network::batch; }; WhileLoop @[1] { desc="the main loop over training runs"; flags=; loop_code { name=; el_typ=ProgEl; el_def=0; ProgramCall @[0] { desc="run the training program -- sets the network and input_data args"; flags=; target=.projects[0].programs.gp[0][1]$11$; targ_ld_init="*LeabraTrain*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; ProgArg @[2] { arg_type=DataTable; type="DataTable*"; name="TrainWP"; required=1; def_val=; expr { expr="TrainWP"; var_expr="$#0#$"; vars { }; var_names{ TrainWP;}; bad_vars{ }; }; }; ProgArg @[3] { arg_type=bool; type="bool"; name="no_prompts"; required=1; def_val=; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; ProgArg @[4] { arg_type=DataTable; type="DataTable*"; name="TestWP"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; NetCounterIncr @[1] { desc="increment the local batch counter and copy to network"; flags=; network_var=$9$; local_ctr_var=$10$; counter=Network::batch; }; }; test { expr="batch < max_batch"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ batch;max_batch;}; bad_vars{ }; }; }; }; }; Program @[1] { name="LeabraTrain"; tags="Leabra, Std"; desc="A complete training run of a Leabra network: iterating over epochs until the network has learned the task"; flags=SHOW_STEP; objs { name=; el_typ=RndSeed; el_def=0; RndSeed @[0] { name="rnd_seed"; seed{ 897248114;-1259630319;-1954705695;-2086433643;-1705562578;-246166775;142172280;-1066196830;649876912;-363601797;-1551220787;-201998924;984813377;-1929982005;1866720504;1737535582;-2064818913;-596409631;-537210356;-394821123;-1176302275;-1088439095;390472553;1002483428;-644065336;-93234492;-249392311;1955837623;486322880;268723693;-1316990013;-1148081097;1053267338;-194887551;722894185;-1796145741;-419870710;-744395548;-2126350183;-1623934615;-1975558537;-1109580724;1457379925;952758326;-932820647;-793678521;622734178;-1116891631;992844023;348717466;1162608598;-2078137647;-402129645;-523610230;-892508948;-545793120;1897913877;280270467;-1694155315;294983543;-1251003482;-1650029695;-1335161250;-843867016;1576969605;-260969840;-224140684;1265137246;954732510;2064975050;-1145863940;-1435022393;-1859029257;1513712809;985631399;417291160;-2038587757;-1933156114;888379733;1446724555;-464909414;-1706911051;-1159096460;-1791674743;-147343083;960690226;682596297;1099430942;359127508;311504974;93962501;-1671326033;632618192;-885562045;1179982281;-1505675969;1344906533;-1418551925;1622092278;1701084792;242471559;-1984251903;-1568971862;-1063520265;1591722069;-1959097976;-1601150455;-874166212;-889564662;717605003;-1582378599;-1301052667;1211123575;485189748;-182999148;374766658;1150697026;-738165078;-390496439;960351772;-332421139;71115877;-1747551486;-288197538;2067393244;-402841323;168191432;698976579;-691346957;454158309;419567441;-1655444926;1843518827;-1387150657;-1775972895;1209349907;1737084105;-273997764;2063222132;-629133755;1321145195;-340980602;-64855207;836106865;-384606302;857100345;-616134379;-1192753754;-1534913223;1646103447;-337508797;-104008340;1371554336;1910014402;1731164243;157488784;-1230766726;1651230814;-1801393009;1853249886;-1909629469;-2064890998;-586605120;1029458265;-1567764431;-569878997;-1071722633;1842759325;1870815306;1275367738;-2047480342;699437794;-2078020834;2120915280;1609487567;715455530;-1961002406;-1366381474;1214551640;1682680277;1866914062;-1438763676;1522254727;410589237;1882867230;-2066414372;335577213;-1969515802;-2079897542;1101145964;-914546306;-578950040;-399253994;-1096753521;-660660212;-1198578643;1339175923;-781551297;-1839371394;1105332893;-1928816742;-400816250;1655921312;-452260989;2002840327;447789431;319958765;-658015714;-2019202134;-1586612048;-137582258;706769011;1101838665;827045450;599553857;-2145445088;244597783;1487421271;1630555190;-344172316;-1830139429;-1553867370;-156727033;-755056810;-2131860048;-494346652;1852068823;91308896;725609566;-1111505690;-982815291;1292267944;1836226774;-810066908;-496780978;202956912;603675823;637918661;-10943404;552199869;1297990249;-1519144401;-1727998742;1493519921;-1227758025;-860568373;2118867559;1126222143;-1549971275;-1469719981;-370967157;-1094842937;2081077388;-1045858167;-179155018;-384518151;905350287;-1851803717;571620219;760498291;-480881197;-973785647;838212682;340510526;510321855;-801267485;-852016520;1774211485;39420368;537777206;2107097314;1618664461;210916571;-423959548;631482818;-1040919263;-279241335;-892903760;497369428;1334556795;-290177741;-620998078;1723791759;253979182;2098469877;2033083432;2025527244;-556275368;-1153759308;1554310973;-2109179006;1594713042;-1652347925;-1896234258;1399293819;-1212915145;264979477;2035769098;-26264659;816116738;-1472777223;-1886895409;579752040;1987550252;850378084;-592526232;228677599;-1282752773;-3264037;1636907752;554996081;10747923;1856021975;150743074;1441285143;-284865308;64061770;547700487;2007963302;-518601320;717968026;-1887063740;-1161755710;654757340;624448862;1095845326;1219653475;1112960789;540367258;1430941426;-1573264900;842324047;-1866598839;672477326;-834606497;456739053;2014938441;1820294365;-1127769538;237909957;778195458;-320898672;-493131725;374332760;1492882317;244532839;1469335464;813662131;1904048850;1828753335;1969748325;1462812563;773013089;1263710334;6222118;1806899780;-1306665146;695150693;1034369820;-410885147;-2065109159;-21981403;1688153775;-1834763828;-2034905187;-868895926;-2040902706;760295113;705437415;-801989522;-327259983;340256932;1639347777;676478214;-868392127;-2126595595;1085040460;-101711712;1181203896;-1177629723;1052562025;-385800214;-2127578499;-247860261;-210619237;-1285411717;-1501642238;-1370695642;-901640534;-1139102088;-1435816006;2062624444;733280257;-325264040;815916517;1806401640;106587238;222094010;-1348528385;297616670;-861761020;117428779;2046490308;1520601476;1774880419;2117307057;709856479;658783300;-1019651996;1857641166;-1623434894;-1466106812;1764750271;337867896;1769011978;1878580541;-337505063;55931846;657238908;1968152816;-169076117;-975001150;-619957198;463669432;-1908341507;-643594058;-2026430605;1348524010;-730896925;454931916;416148985;-1578791134;-739712940;-1725329931;204101311;-1062609662;-1691773722;860783264;946450304;1161241387;207536058;3478215;923381087;-305329130;-1353819564;48467194;-497866365;-1191262819;1442954968;-408984143;934531440;1843513070;-1086308879;585900848;-1977125474;-643228730;1005419111;430194483;1169789286;892875109;-1732318651;-897476207;416658129;2090816327;-186559977;-187909452;1699611428;132945605;1386154990;-1021089733;1553010825;1685237703;1771892687;-1665309430;-1471203233;408978895;-1985168698;-1461014828;-475885929;-149644797;184461852;-1631733780;-113049057;1929365839;-1841043271;755994780;1384891379;-572376242;-1822728640;527993133;536302677;-728200547;-1916517795;401821920;777687226;634513383;938837982;-1741204308;-712292839;-888158003;-989731250;1070351745;-997999887;-1220926516;-477621207;-668502217;432615022;341097247;-1817216444;-1580909839;1073812924;-1037427637;-421491456;-2071807233;419582815;835099779;-300811050;1008848942;-622226245;1119083448;2015783992;374250496;417956216;70961961;-1285132279;1021911943;1585993281;1118486430;-946608452;-1704284523;1344252873;908115709;2135579935;636192621;-776174384;533471998;586778067;-154978136;1359740759;1629951629;-1733015859;2121954041;2104107711;-295897115;1345244080;-1738577645;-559564224;1033955967;-1763695458;250221436;-693902564;1091788545;927707887;-712040796;1439001997;1595609215;1364606826;661845780;-755815374;-2034931863;1346096804;-2074100882;-1065691144;654888208;1007146357;778226326;1410374083;1808044267;239070962;-300943249;1387420801;914251343;580430497;1404608152;117575915;1513662704;256310634;-569005681;-1678005121;-1445134348;2053633677;2025466731;-1577911340;-1278866808;-623511374;-1672074119;45321757;1247003680;1061170196;1198754894;-104913407;2054118989;-1781862918;1530368638;-226966082;-707276305;1591871350;331461390;608113940;235882513;-2046843672;-1075932011;-1894925926;1648301914;1170547429;1665497643;-1251944432;-1796010764;-73953480;788544378;1090859788;-1128050928;-145143834;594707390;-728801566;-252193318;1890915838;-834826210;602694736;1275821290;-2078563303;-1397408457;-343458496;1558647263;}; mti=156; }; }; types { name=; el_typ=DynEnumType; el_def=0; DynEnumType @[0] { name="RndInitType"; desc=; enums { name=; el_typ=DynEnumItem; el_def=0; DynEnumItem @[0] { name="OLD_SEED"; value=0; desc="use stored random seed value (recreates same sequence every time)"; }; DynEnumItem @[1] { name="NEW_SEED"; value=1; desc="generate new random seed (new sequence of random numbers)"; }; }; bits=0; }; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to train"; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="datatable with training patterns"; }; ProgVar @[2] { name="TrainWP"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="datatable with training patterns"; }; ProgVar @[3] { name="no_prompts"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="If train is called by other programs (e.g., Batch), they should set this to true -- otherwise it is reset to false in Init"; }; ProgVar @[4] { name="TestWP"; var_type=T_Object; object_type=DataTable; object_val=$8$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="max_epoch"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="maximum number of epochs to run"; }; ProgVar @[1] { name="train_mode"; var_type=T_HardEnum; int_val=1; hard_enum_type=Network::TrainMode; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="TRAIN = update weights (learn), TEST = just record network's responses but don't learn"; }; ProgVar @[2] { name="test_mode"; var_type=T_HardEnum; int_val=0; hard_enum_type=Network::TrainMode; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="TRAIN = update weights (learn), TEST = just record network's responses but don't learn"; }; ProgVar @[3] { name="rnd_init"; var_type=T_DynEnum; dyn_enum_val { enum_type=.projects[0].programs.gp[0][1].types[0]$12$; value=0; }; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="how to initialize the random numbers when the Init button is pressed"; }; ProgVar @[4] { name="epoch"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="current epoch -- local copy, which is used to update network's epoch counter"; }; ProgVar @[5] { name="err_stopcrit"; var_type=T_Real; real_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="stopping criterion -- when error measure (count of trials with a non-zero error by defult) goes <= this value, stop training (set to -1 to disable stopping criterion, and always train to max_epoch epochs)"; }; ProgVar @[6] { name="rnd_seed"; var_type=T_Object; object_type=RndSeed; object_val=.projects[0].programs.gp[0][1].objs[0]$13$; objs_ptr=1; flags=NULL_CHECK; desc="random seed that is used at start of training -- if OldSeed is called"; }; ProgVar @[7] { name="train_timer"; var_type=T_Object; object_type=TimeUsed; object_val=.projects[0].networks[0].train_time$14$; objs_ptr=0; flags=NULL_CHECK; desc="records time used to train network (object lives on network -- this is a pointer to it)"; }; ProgVar @[8] { name="TestFreq"; var_type=T_Object; object_type=DataTable; object_val=.projects[0].data.gp[0][1]$15$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[9] { name="j"; var_type=T_Int; int_val=18; objs_ptr=0; flags=NULL_CHECK; desc=; }; ProgVar @[10] { name="i"; var_type=T_Int; int_val=4; objs_ptr=0; flags=NULL_CHECK; desc=; }; ProgVar @[11] { name="num_intact_snc_units"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[12] { name="snc_size"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[13] { name="SNc"; var_type=T_Object; object_type=LeabraLayer; object_val=.projects[0].networks[0].layers[2]$16$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[14] { name="Striatum"; var_type=T_Object; object_type=LeabraLayer; object_val=.projects[0].networks[0].layers[1]$17$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=MethodCall; el_def=0; AssignExpr @[0] { desc=; flags=; result_var=.projects[0].programs.gp[0][1].args[3]$18$; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; MethodCall @[1] { desc="check network to make sure it is ready to be run"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][1].args[0]$19$; method=taBase::CheckConfig; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="quiet"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; AssignExpr @[2] { desc="get our pointer to the network training time object"; flags=; result_var=.projects[0].programs.gp[0][1].vars[7]$20$; expr { expr="network.train_time"; var_expr="$#0#$.train_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; NetCounterInit @[3] { desc="initialize epoch counter "; flags=; network_var=$19$; local_ctr_var=.projects[0].programs.gp[0][1].vars[4]$21$; counter=Network::epoch; }; IfElse @[4] { desc="initialize random seed (either old or new)"; flags=; cond { expr="rnd_init == OLD_SEED"; var_expr="$#0#$ == OLD_SEED"; vars { }; var_names{ rnd_init;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="restore previous random seed (all runs produce same results)"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][1].vars[6]$22$; method=RndSeed::OldSeed; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="new random numbers each time"; flags=; result_var=NULL; obj=$22$; method=RndSeed::NewSeed; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; IfGuiPrompt @[5] { desc="don't initialize weights without checking"; flags=; prompt="Do you want to Initialize Network Weights"; yes_label="Yes"; no_label="No"; yes_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="initialize network weights: could also load pre-set weights or something else here"; flags=; result_var=NULL; obj=$19$; method=Network::Init_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; PrintExpr @[1] { desc=; flags=; expr { expr="network.name << \" Weights Initialized\""; var_expr="$#0#$.name << \" Weights Initialized\""; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; AssignExpr @[0] { desc="get our pointer to the network training time object"; flags=; result_var=$20$; expr { expr="network.train_time"; var_expr="$#0#$.train_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; MethodCall @[1] { desc="start timer to keep track of how long it takes to run entire training run"; flags=; result_var=NULL; obj=$20$; method=TimeUsed::StartTimer; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="reset_used"; required=0; def_val="true"; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; NetCounterInit @[2] { desc="initialize epoch counter (both our local copy and network's epoch counter)"; flags=; network_var=$19$; local_ctr_var=$21$; counter=Network::epoch; }; MemberAssign @[3] { desc="set network's training mode to our local value"; flags=; obj=$19$; path="train_mode"; expr { expr="train_mode"; var_expr="$#0#$"; vars { }; var_names{ train_mode;}; bad_vars{ }; }; update_after=0; }; IfElse @[4] { desc=; flags=; cond { expr="no_prompts"; var_expr="$#0#$"; vars { }; var_names{ no_prompts;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="initialize network weights: could also load pre-set weights or something else here"; flags=; result_var=NULL; obj=$19$; method=Network::Init_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; PrintExpr @[1] { desc=; flags=; expr { expr="network.name << \" Weights Initialized\""; var_expr="$#0#$.name << \" Weights Initialized\""; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; AssignExpr @[5] { desc=; flags=; result_var=.projects[0].programs.gp[0][1].vars[12]$23$; expr { expr="SNc.units.size"; var_expr="$#0#$.units.size"; vars { }; var_names{ SNc;}; bad_vars{ }; }; }; ForLoop @[6] { desc="only connect intact snc units"; flags=; loop_code { name=; el_typ=ProgEl; el_def=0; ForLoop @[0] { desc="loop over striatal units (Go units for D1 projection and NoGo units for D2 projection)"; flags=; loop_code { name=; el_typ=ProgEl; el_def=0; UserScript @[0] { desc="zero out weights for non-intact snc units"; flags=; script { expr="SNc.units[i].send[0].Cn(j).wt=0; SNc.units[i].send[1].Cn(j).wt=0; "; var_expr="$#0#$.units[$#1#$].send[0].Cn($#2#$).wt=0; $#0#$.units[$#1#$].send[1].Cn($#2#$).wt=0; "; vars { }; var_names{ SNc;i;j;}; bad_vars{ }; }; }; }; init { expr="j = 0"; var_expr="$#0#$ = 0"; vars { }; var_names{ j;}; bad_vars{ }; }; test { expr="j < (Striatum.units.size)/2"; var_expr="$#0#$ < ($#1#$.units.size)/2"; vars { }; var_names{ j;Striatum;}; bad_vars{ }; }; iter { expr="j++"; var_expr="$#0#$++"; vars { }; var_names{ j;}; bad_vars{ }; }; }; }; init { expr="i = num_intact_snc_units"; var_expr="$#0#$ = $#1#$"; vars { }; var_names{ i;num_intact_snc_units;}; bad_vars{ }; }; test { expr="i < snc_size"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ i;snc_size;}; bad_vars{ }; }; iter { expr="i++"; var_expr="$#0#$++"; vars { }; var_names{ i;}; bad_vars{ }; }; }; MemberAssign @[7] { desc="set network's training mode to our local value"; flags=; obj=$19$; path="train_mode"; expr { expr="test_mode"; var_expr="$#0#$"; vars { }; var_names{ test_mode;}; bad_vars{ }; }; update_after=0; }; OtherProgramVar @[8] { desc=; flags=; other_prog=.projects[0].programs.gp[0][16]$24$; set_other=1; var_1=$3$; var_2=NULL; var_3=NULL; var_4=NULL; }; OtherProgramVar @[9] { desc=; flags=; other_prog=.projects[0].programs.gp[0][3]$25$; set_other=1; var_1=$3$; var_2=NULL; var_3=NULL; var_4=NULL; }; ProgramCall @[10] { desc="run the epoch program (one epoch), passes our network and input_data"; flags=; target=$25$; targ_ld_init="*LeabraTestEpoch*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="TestWP"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; WhileLoop @[11] { desc="main loop over epochs of training"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; MemberAssign @[0] { desc="set network's training mode to our local value"; flags=; obj=$19$; path="train_mode"; expr { expr="train_mode"; var_expr="$#0#$"; vars { }; var_names{ train_mode;}; bad_vars{ }; }; update_after=0; }; ProgramCall @[1] { desc="run the epoch program (one epoch), passes our network and input_data"; flags=; target=.projects[0].programs.gp[0][2]$26$; targ_ld_init="*LeabraEpoch*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; }; }; NetCounterIncr @[2] { desc="increment the epoch counter (locally and on network)"; flags=; network_var=$19$; local_ctr_var=$21$; counter=Network::epoch; }; IfBreak @[3] { desc="stop if errors go below stopping criterion (note: could use sse or avg_sse here instead)"; flags=; cond { expr="network.cnt_err <= err_stopcrit"; var_expr="$#0#$.cnt_err <= $#1#$"; vars { }; var_names{ network;err_stopcrit;}; bad_vars{ }; }; }; MemberAssign @[4] { desc="set network's training mode to our local value"; flags=; obj=$19$; path="train_mode"; expr { expr="test_mode"; var_expr="$#0#$"; vars { }; var_names{ test_mode;}; bad_vars{ }; }; update_after=0; }; ProgramCall @[5] { desc=; flags=; target=$25$; targ_ld_init="*LeabraTestEpoch*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="TestWP"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; }; test { expr="epoch < max_epoch"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ epoch;max_epoch;}; bad_vars{ }; }; }; MethodCall @[12] { desc="stop the timer -- time elapsed is now recorded in this object, and can be displayed or recorded to a data table"; flags=; result_var=NULL; obj=$20$; method=TimeUsed::EndTimer; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; Program @[2] { name="LeabraEpoch"; tags="Leabra, Std"; desc="iterates over all of the items in a data table and calls LeabraTrial process on them"; flags=SHOW_STEP; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to operate on"; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="table of patterns to present to the network, one row at a time"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="data_loop_order"; var_type=T_HardEnum; int_val=1; hard_enum_type=DataLoop::Order; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="controls the order in which events (rows of the input data datatable) are presented to the network (SEQUENTIAL, PERMUTED, RANDOM)"; }; ProgVar @[1] { name="trial"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="current trial (event) within the epoch -- increments automatically"; }; ProgVar @[2] { name="trial_mon_data"; var_type=T_Object; object_type=DataTable; object_val=.projects[0].data.gp[1][0]$27$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="trial-level output data -- we reset it every epoch by default, so it just contains last epoch of data"; }; ProgVar @[3] { name="epoch_timer"; var_type=T_Object; object_type=TimeUsed; object_val=.projects[0].networks[0].epoch_time$28$; objs_ptr=0; flags=NULL_CHECK; desc="timer to record time required to perform one epoch of processing (object is on network -- this is a pointer to it)"; }; ProgVar @[4] { name="data_loop_index"; var_type=T_Int; int_val=100; objs_ptr=0; flags=NULL_CHECK; desc="index counter for the looping over items in the input_data datatable (not always the same as trial counter, depending on distributed memory computation)"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize trial counter (local variable and in the network)"; flags=; network_var=.projects[0].programs.gp[0][2].args[0]$29$; local_ctr_var=.projects[0].programs.gp[0][2].vars[1]$30$; counter=Network::trial; }; AssignExpr @[1] { desc="get pointer to epoch timer object on network"; flags=; result_var=.projects[0].programs.gp[0][2].vars[3]$31$; expr { expr="network.epoch_time"; var_expr="$#0#$.epoch_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; prog_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize trial counter (local variable and in the network)"; flags=; network_var=$29$; local_ctr_var=$30$; counter=Network::trial; }; AssignExpr @[1] { desc="get pointer to epoch timer object on network"; flags=; result_var=$31$; expr { expr="network.epoch_time"; var_expr="$#0#$.epoch_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; MethodCall @[2] { desc="start the epoch timer to record computation time per epoch"; flags=; result_var=NULL; obj=$31$; method=TimeUsed::StartTimer; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="reset_used"; required=0; def_val="true"; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MethodCall @[3] { desc="reset trial-level monitor data every epoch, so it reflects only the most recent epoch's worth of data (turn flags OFF to accumulate trial data across entire training run)"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][2].vars[2]$32$; method=DataTable::ResetData; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; NetDataLoop @[4] { desc="iterates over the events/rows of input_data, according to data_loop_order variable"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; ProgramCall @[0] { desc="run the trial program, passing network and input_data"; flags=; target=$5$; targ_ld_init="*LeabraTrial*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; }; }; IfElse @[1] { desc="test if it is time to update the weight values from delta weights (dWt) computed over trials"; flags=; cond { expr="network.Compute_Weights_Test(trial+1)"; var_expr="$#0#$.Compute_Weights_Test($#1#$+1)"; vars { }; var_names{ network;trial;}; bad_vars{ }; }; true_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="update the weight values based on changes computed by trial program"; flags=; result_var=NULL; obj=$29$; method=Network::Compute_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; }; data_var=.projects[0].programs.gp[0][2].args[1]$33$; index_var=.projects[0].programs.gp[0][2].vars[4]$34$; order_var=.projects[0].programs.gp[0][2].vars[0]$35$; order=PERMUTED; item_idx_list{ 43;21;90;13;50;17;77;74;45;1;42;94;24;10;15;64;84;91;23;87;83;99;72;86;28;40;52;9;48;97;57;54;3;37;6;51;27;75;12;67;56;5;7;65;31;44;98;11;33;61;63;39;0;76;4;22;59;26;92;49;41;95;19;60;93;38;66;35;58;89;73;46;53;30;79;82;69;18;36;81;62;80;25;71;85;29;34;68;96;14;8;20;88;78;16;55;32;47;2;70;}; dmem_nprocs=1; dmem_this_proc=0; }; IfElse @[5] { desc="if full batch mode, update only at end of epoch"; flags=; cond { expr="network.wt_update == Network::BATCH"; var_expr="$#0#$.wt_update == Network::BATCH"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="final update of weights based on accumulated changes"; flags=; result_var=NULL; obj=$29$; method=Network::Compute_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; MethodCall @[6] { desc="network accumulates some core statistics over the epoch -- this finalizes that process and computes summary stats"; flags=; result_var=NULL; obj=$29$; method=LeabraNetwork::Compute_EpochStats; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; ProgramCall @[7] { desc="run program that records data from network and possibly other sources about the epoch"; flags=OFF; target=.projects[0].programs.gp[0][14]$36$; targ_ld_init="*LeabraEpochMonitor*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[8] { desc="done with the computation in the epoch -- record time it took"; flags=; result_var=NULL; obj=$31$; method=TimeUsed::EndTimer; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; Program @[3] { name="LeabraTestEpoch"; tags=; desc="iterates over all of the items in a data table and calls LeabraTrial process on them"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to operate on"; }; ProgVar @[1] { name="TestWP"; var_type=T_Object; object_type=DataTable; object_val=$8$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="data_loop_order"; var_type=T_HardEnum; int_val=1; hard_enum_type=DataLoop::Order; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="controls the order in which events (rows of the input data datatable) are presented to the network (SEQUENTIAL, PERMUTED, RANDOM)"; }; ProgVar @[1] { name="trial"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="current trial (event) within the epoch -- increments automatically"; }; ProgVar @[2] { name="trial_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$27$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="trial-level output data -- we reset it every epoch by default, so it just contains last epoch of data"; }; ProgVar @[3] { name="epoch_timer"; var_type=T_Object; object_type=TimeUsed; object_val=$28$; objs_ptr=0; flags=NULL_CHECK; desc="timer to record time required to perform one epoch of processing (object is on network -- this is a pointer to it)"; }; ProgVar @[4] { name="data_loop_index"; var_type=T_Int; int_val=0; objs_ptr=0; flags=NULL_CHECK; desc="index counter for the looping over items in the input_data datatable (not always the same as trial counter, depending on distributed memory computation)"; }; ProgVar @[5] { name="num_intact_snc_units"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[6] { name="snc_size"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[7] { name="k"; var_type=T_Real; real_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[8] { name="SNc"; var_type=T_Object; object_type=LeabraLayer; object_val=$16$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize trial counter (local variable and in the network)"; flags=; network_var=.projects[0].programs.gp[0][3].args[0]$37$; local_ctr_var=.projects[0].programs.gp[0][3].vars[1]$38$; counter=Network::trial; }; AssignExpr @[1] { desc="get pointer to epoch timer object on network"; flags=; result_var=.projects[0].programs.gp[0][3].vars[3]$39$; expr { expr="network.epoch_time"; var_expr="$#0#$.epoch_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; prog_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize trial counter (local variable and in the network)"; flags=; network_var=$37$; local_ctr_var=$38$; counter=Network::trial; }; AssignExpr @[1] { desc=; flags=; result_var=.projects[0].programs.gp[0][3].vars[6]$40$; expr { expr="SNc.units.size"; var_expr="$#0#$.units.size"; vars { }; var_names{ SNc;}; bad_vars{ }; }; }; AssignExpr @[2] { desc=; flags=; result_var=.projects[0].programs.gp[0][3].vars[7]$41$; expr { expr="(float)num_intact_snc_units/ snc_size"; var_expr="(float)$#0#$/ $#1#$"; vars { }; var_names{ num_intact_snc_units;snc_size;}; bad_vars{ }; }; }; AssignExpr @[3] { desc="get pointer to epoch timer object on network"; flags=; result_var=$39$; expr { expr="network.epoch_time"; var_expr="$#0#$.epoch_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; MethodCall @[4] { desc="start the epoch timer to record computation time per epoch"; flags=; result_var=NULL; obj=$39$; method=TimeUsed::StartTimer; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="reset_used"; required=0; def_val="true"; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MethodCall @[5] { desc="reset trial-level monitor data every epoch, so it reflects only the most recent epoch's worth of data (turn flags OFF to accumulate trial data across entire training run)"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][3].vars[2]$42$; method=DataTable::ResetData; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; NetDataLoop @[6] { desc="iterates over the events/rows of input_data, according to data_loop_order variable"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; ProgramCall @[0] { desc="run the trial program, passing network and input_data"; flags=; target=.projects[0].programs.gp[0][5]$43$; targ_ld_init="*LeabraTestTrial*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="TestWP"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; IfElse @[1] { desc="test if it is time to update the weight values from delta weights (dWt) computed over trials"; flags=; cond { expr="network.Compute_Weights_Test(trial+1)"; var_expr="$#0#$.Compute_Weights_Test($#1#$+1)"; vars { }; var_names{ network;trial;}; bad_vars{ }; }; true_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="update the weight values based on changes computed by trial program"; flags=; result_var=NULL; obj=$37$; method=Network::Compute_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; }; data_var=.projects[0].programs.gp[0][3].args[1]$44$; index_var=.projects[0].programs.gp[0][3].vars[4]$45$; order_var=.projects[0].programs.gp[0][3].vars[0]$46$; order=PERMUTED; item_idx_list{ 9;4;2;7;5;6;11;8;1;0;3;10;}; dmem_nprocs=1; dmem_this_proc=0; }; IfElse @[7] { desc="if full batch mode, update only at end of epoch"; flags=; cond { expr="network.wt_update == Network::BATCH"; var_expr="$#0#$.wt_update == Network::BATCH"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="final update of weights based on accumulated changes"; flags=; result_var=NULL; obj=$37$; method=Network::Compute_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; MethodCall @[8] { desc="network accumulates some core statistics over the epoch -- this finalizes that process and computes summary stats"; flags=; result_var=NULL; obj=$37$; method=LeabraNetwork::Compute_EpochStats; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; ProgramCall @[9] { desc="run program that records data from network and possibly other sources about the epoch"; flags=; target=$36$; targ_ld_init="*LeabraEpochMonitor*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[10] { desc="done with the computation in the epoch -- record time it took"; flags=; result_var=NULL; obj=$39$; method=TimeUsed::EndTimer; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; Program @[4] { name="LeabraTrial"; tags="Leabra, Std"; desc="Leabra processing of a single input/toutput event or external information: typically runs a minus and a plus phase, then learns (unless testing)"; flags=SHOW_STEP; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc="network to operate on -- typically set by higher-level calling programs"; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=NULL_CHECK; desc="datatable containing training input/output patterns"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="phase_no"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="local phase counting variable (0 is typically minus phase, 1 is typically plus -- depends on network settings)"; }; ProgVar @[1] { name="update_net_view"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="determines whether to update any network view displays after trial is completed"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize the local phase_no counter, and corresponding network one"; flags=; network_var=.projects[0].programs.gp[0][4].args[0]$47$; local_ctr_var=.projects[0].programs.gp[0][4].vars[0]$48$; counter=LeabraNetwork::phase_no; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; NetCounterInit @[0] { desc="initialize the local phase_no counter, and corresponding network one"; flags=; network_var=$47$; local_ctr_var=$48$; counter=LeabraNetwork::phase_no; }; MethodCall @[1] { desc="initializes various counters at start of trial"; flags=; result_var=NULL; obj=$47$; method=LeabraNetwork::Trial_Init; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; WhileLoop @[2] { desc="loop over phases of settling in the network"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; ProgramCall @[0] { desc="run the settle program (which iterates over cyles of network activation updating) for each phase"; flags=; target=.projects[0].programs.gp[0][6]$49$; targ_ld_init="*LeabraSettle*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; }; }; NetCounterIncr @[1] { desc="increment the phase number (also on network)"; flags=; network_var=$47$; local_ctr_var=$48$; counter=LeabraNetwork::phase_no; }; MethodCall @[2] { desc="increments other phase state information to prepare for the next phase of settling"; flags=; result_var=NULL; obj=$47$; method=LeabraNetwork::Trial_UpdatePhase; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; test { expr="phase_no < network.phase_max"; var_expr="$#0#$ < $#1#$.phase_max"; vars { }; var_names{ phase_no;network;}; bad_vars{ }; }; }; MethodCall @[3] { desc="after the trial is over, do final computations: Compute_dWt (learn weights), compute stats"; flags=; result_var=NULL; obj=$47$; method=LeabraNetwork::Trial_Final; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; ProgramCall @[4] { desc="records data about the trial-level processing to a datatable for graphing/processing"; flags=OFF; target=.projects[0].programs.gp[0][12]$50$; targ_ld_init="*LeabraTrialMonitor*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; NetUpdateView @[5] { desc="update the network view(s) (only if update_net_view is true)"; flags=; network_var=$47$; update_var=.projects[0].programs.gp[0][4].vars[1]$51$; }; }; }; Program @[5] { name="LeabraTestTrial"; tags=; desc="Leabra processing of a single input/toutput event or external information: typically runs a minus and a plus phase, then learns (unless testing)"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc="network to operate on -- typically set by higher-level calling programs"; }; ProgVar @[1] { name="TestWP"; var_type=T_Object; object_type=DataTable; object_val=$8$; objs_ptr=0; flags=NULL_CHECK; desc="datatable containing training input/output patterns"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="phase_no"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="local phase counting variable (0 is typically minus phase, 1 is typically plus -- depends on network settings)"; }; ProgVar @[1] { name="update_net_view"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="determines whether to update any network view displays after trial is completed"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize the local phase_no counter, and corresponding network one"; flags=; network_var=.projects[0].programs.gp[0][5].args[0]$52$; local_ctr_var=.projects[0].programs.gp[0][5].vars[0]$53$; counter=LeabraNetwork::phase_no; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; NetCounterInit @[0] { desc="initialize the local phase_no counter, and corresponding network one"; flags=; network_var=$52$; local_ctr_var=$53$; counter=LeabraNetwork::phase_no; }; MethodCall @[1] { desc="initializes various counters at start of trial"; flags=; result_var=NULL; obj=$52$; method=LeabraNetwork::Trial_Init; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; WhileLoop @[2] { desc="loop over phases of settling in the network"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; ProgramCall @[0] { desc="run the settle program (which iterates over cyles of network activation updating) for each phase"; flags=; target=.projects[0].programs.gp[0][7]$54$; targ_ld_init="*LeabraTestSettle*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="TestWP"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; NetCounterIncr @[1] { desc="increment the phase number (also on network)"; flags=; network_var=$52$; local_ctr_var=$53$; counter=LeabraNetwork::phase_no; }; MethodCall @[2] { desc="increments other phase state information to prepare for the next phase of settling"; flags=; result_var=NULL; obj=$52$; method=LeabraNetwork::Trial_UpdatePhase; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; test { expr="phase_no < network.phase_max"; var_expr="$#0#$ < $#1#$.phase_max"; vars { }; var_names{ phase_no;network;}; bad_vars{ }; }; }; MethodCall @[3] { desc="after the trial is over, do final computations: Compute_dWt (learn weights), compute stats"; flags=; result_var=NULL; obj=$52$; method=LeabraNetwork::Trial_Final; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; ProgramCall @[4] { desc="records data about the trial-level processing to a datatable for graphing/processing"; flags=; target=$50$; targ_ld_init="*LeabraTrialMonitor*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; NetUpdateView @[5] { desc="update the network view(s) (only if update_net_view is true)"; flags=; network_var=$52$; update_var=.projects[0].programs.gp[0][5].vars[1]$55$; }; }; }; Program @[6] { name="LeabraSettle"; tags="Leabra, Std"; desc="iterates over cycles of updating until network has settled into a stable state, or output activations have exceeded a threshold"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc=; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="cycle"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="current cycle of settling (local loop counter)"; }; ProgVar @[1] { name="min_cycles"; var_type=T_Int; int_val=15; objs_ptr=0; flags=NULL_CHECK; desc="IMPORTANT: this value is obtained from the network min_cycles and min_cycles_phase2 -- change the value on the network object, not here in this program! sets the minimum number of cycles to settle for, regardless of network state changes, etc"; }; ProgVar @[2] { name="update_net_view"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="if true, will update network views at end of settling"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize local cycle counter and corresponding counter on network"; flags=; network_var=.projects[0].programs.gp[0][6].args[0]$56$; local_ctr_var=.projects[0].programs.gp[0][6].vars[0]$57$; counter=Network::cycle; }; }; prog_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize local cycle counter and corresponding counter on network"; flags=; network_var=$56$; local_ctr_var=$57$; counter=Network::cycle; }; MethodCall @[1] { desc="resets input data, before getting new external inputs data from apply inputs call"; flags=; result_var=NULL; obj=$56$; method=Network::Init_InputData; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; ProgramCall @[2] { desc="apply external input activations from the input_data table to the network this program can be extended to do arbitrary things to generate data and apply it to network layers"; flags=; target=.projects[0].programs.gp[0][10]$58$; targ_ld_init="*ApplyInputs*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; }; }; ProgramCall @[3] { desc=; flags=; target=$24$; targ_ld_init="*DA_Rew_Punish*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; }; }; IfElse @[4] { desc=; flags=; cond { expr="network.phase == LeabraNetwork::PLUS_PHASE"; var_expr="$#0#$.phase == LeabraNetwork::PLUS_PHASE"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc=; flags=; obj=$56$; path="cycle_max"; expr { expr="30"; var_expr="30"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; }; false_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="number of cycles to run in minus phase"; flags=; obj=$56$; path="cycle_max"; expr { expr="100"; var_expr="100"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; }; }; MethodCall @[5] { desc="initializes various counters at start of settling"; flags=; result_var=NULL; obj=$56$; method=LeabraNetwork::Settle_Init; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; IfElse @[6] { desc="get appropriate min_cycles value depending on which phase we're in"; flags=; cond { expr="network.phase_no <= 1"; var_expr="$#0#$.phase_no <= 1"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; AssignExpr @[0] { desc="get minimum number of cycles from parameter on network (which is where you should change this value!)"; flags=; result_var=.projects[0].programs.gp[0][6].vars[1]$59$; expr { expr="network.min_cycles"; var_expr="$#0#$.min_cycles"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; AssignExpr @[0] { desc="get minimum number of cycles from parameter on network (which is where you should change this value!)"; flags=; result_var=$59$; expr { expr="network.min_cycles_phase2"; var_expr="$#0#$.min_cycles_phase2"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; WhileLoop @[7] { desc="the main loop over cycles of updating"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; ProgramCall @[0] { desc="run the cycle program, which computes one cycle of activations"; flags=; target=.projects[0].programs.gp[0][8]$60$; targ_ld_init="*LeabraCycle*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; NetCounterIncr @[1] { desc="increment cycle counter (also on network)"; flags=; network_var=$56$; local_ctr_var=$57$; counter=Network::cycle; }; IfContinue @[2] { desc="avoid subsequent stopping criteria if below min_cycles"; flags=; cond { expr="cycle < min_cycles"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ cycle;min_cycles;}; bad_vars{ }; }; }; IfBreak @[3] { desc="stopping criterion for settling: based either on maximum change in activation (maxda) or on the maximum activation value in the network getting over threshold (which ever comes first). Set either parmeter to values that are always false (e.g., trg_max_act_stopcrit = -1) to eliminate associated source of criterion for stopping settling."; flags=; cond { expr="(network.maxda < network.maxda_stopcrit) || (network.trg_max_act > network.trg_max_act_stopcrit)"; var_expr="($#0#$.maxda < $#0#$.maxda_stopcrit) || ($#0#$.trg_max_act > $#0#$.trg_max_act_stopcrit)"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; test { expr="cycle < network.cycle_max"; var_expr="$#0#$ < $#1#$.cycle_max"; vars { }; var_names{ cycle;network;}; bad_vars{ }; }; }; MethodCall @[8] { desc="perform final operations at end of settling (storing final activations, etc)"; flags=; result_var=NULL; obj=$56$; method=LeabraNetwork::Settle_Final; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; IfElse @[9] { desc="only run trial-level statistics in minus phase (otherwise network may have correct answer clamped on!). IMPORTANT: this assumes that you've got target activation values for output layers already presented in the minus phase -- if this is not the case (values are computed on the fly), you may want to run this instead at the start of the plus phase, after ApplyInputs"; flags=; cond { expr="network.phase == LeabraNetwork::MINUS_PHASE"; var_expr="$#0#$.phase == LeabraNetwork::MINUS_PHASE"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="compute trial-level statistics"; flags=; result_var=NULL; obj=$56$; method=LeabraNetwork::Compute_TrialStats; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; IfElse @[10] { desc="this stat must be called in plus phase when reward information is avail"; flags=; cond { expr="network.phase_no == 1"; var_expr="$#0#$.phase_no == 1"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="get external reward information"; flags=; result_var=NULL; obj=$56$; method=LeabraNetwork::Compute_ExtRew; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; NetUpdateView @[11] { desc="update network views, if update_net_view == true"; flags=; network_var=$56$; update_var=.projects[0].programs.gp[0][6].vars[2]$61$; }; }; }; Program @[7] { name="LeabraTestSettle"; tags=; desc="iterates over cycles of updating until network has settled into a stable state, or output activations have exceeded a threshold"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc=; }; ProgVar @[1] { name="TestWP"; var_type=T_Object; object_type=DataTable; object_val=$8$; objs_ptr=0; flags=NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="cycle"; var_type=T_Int; int_val=77; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="current cycle of settling (local loop counter)"; }; ProgVar @[1] { name="min_cycles"; var_type=T_Int; int_val=15; objs_ptr=0; flags=NULL_CHECK; desc="IMPORTANT: this value is obtained from the network min_cycles and min_cycles_phase2 -- change the value on the network object, not here in this program! sets the minimum number of cycles to settle for, regardless of network state changes, etc"; }; ProgVar @[2] { name="update_net_view"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="if true, will update network views at end of settling"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize local cycle counter and corresponding counter on network"; flags=; network_var=.projects[0].programs.gp[0][7].args[0]$62$; local_ctr_var=.projects[0].programs.gp[0][7].vars[0]$63$; counter=Network::cycle; }; }; prog_code { name=; el_typ=NetCounterInit; el_def=0; NetCounterInit @[0] { desc="initialize local cycle counter and corresponding counter on network"; flags=; network_var=$62$; local_ctr_var=$63$; counter=Network::cycle; }; MethodCall @[1] { desc="resets input data, before getting new external inputs data from apply inputs call"; flags=; result_var=NULL; obj=$62$; method=Network::Init_InputData; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; ProgramCall @[2] { desc="apply external input activations from the input_data table to the network this program can be extended to do arbitrary things to generate data and apply it to network layers"; flags=; target=.projects[0].programs.gp[0][11]$64$; targ_ld_init="*ApplyInputsTest*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="TestWP"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; ProgramCall @[3] { desc=; flags=; target=$24$; targ_ld_init="*DA_Rew_Punish*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; }; }; IfElse @[4] { desc=; flags=; cond { expr="network.phase == LeabraNetwork::PLUS_PHASE"; var_expr="$#0#$.phase == LeabraNetwork::PLUS_PHASE"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc=; flags=; obj=$62$; path="cycle_max"; expr { expr="30"; var_expr="30"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; }; false_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="number of cycles to run in minus phase"; flags=; obj=$62$; path="cycle_max"; expr { expr="100"; var_expr="100"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; }; }; MethodCall @[5] { desc="initializes various counters at start of settling"; flags=; result_var=NULL; obj=$62$; method=LeabraNetwork::Settle_Init; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; IfElse @[6] { desc="get appropriate min_cycles value depending on which phase we're in"; flags=; cond { expr="network.phase_no <= 1"; var_expr="$#0#$.phase_no <= 1"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; AssignExpr @[0] { desc="get minimum number of cycles from parameter on network (which is where you should change this value!)"; flags=; result_var=.projects[0].programs.gp[0][7].vars[1]$65$; expr { expr="network.min_cycles"; var_expr="$#0#$.min_cycles"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; AssignExpr @[0] { desc="get minimum number of cycles from parameter on network (which is where you should change this value!)"; flags=; result_var=$65$; expr { expr="network.min_cycles_phase2"; var_expr="$#0#$.min_cycles_phase2"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; WhileLoop @[7] { desc="the main loop over cycles of updating"; flags=; loop_code { name=; el_typ=ProgramCall; el_def=0; ProgramCall @[0] { desc="run the cycle program, which computes one cycle of activations"; flags=; target=.projects[0].programs.gp[0][9]$66$; targ_ld_init="*LeabraTestCycle*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; NetCounterIncr @[1] { desc="increment cycle counter (also on network)"; flags=; network_var=$62$; local_ctr_var=$63$; counter=Network::cycle; }; IfContinue @[2] { desc="avoid subsequent stopping criteria if below min_cycles"; flags=; cond { expr="cycle < min_cycles"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ cycle;min_cycles;}; bad_vars{ }; }; }; IfBreak @[3] { desc="stopping criterion for settling: based either on maximum change in activation (maxda) or on the maximum activation value in the network getting over threshold (which ever comes first). Set either parmeter to values that are always false (e.g., trg_max_act_stopcrit = -1) to eliminate associated source of criterion for stopping settling."; flags=; cond { expr="(network.maxda < network.maxda_stopcrit) || (network.trg_max_act > network.trg_max_act_stopcrit)"; var_expr="($#0#$.maxda < $#0#$.maxda_stopcrit) || ($#0#$.trg_max_act > $#0#$.trg_max_act_stopcrit)"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; test { expr="cycle < network.cycle_max"; var_expr="$#0#$ < $#1#$.cycle_max"; vars { }; var_names{ cycle;network;}; bad_vars{ }; }; }; MethodCall @[8] { desc="perform final operations at end of settling (storing final activations, etc)"; flags=; result_var=NULL; obj=$62$; method=LeabraNetwork::Settle_Final; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; IfElse @[9] { desc="only run trial-level statistics in minus phase (otherwise network may have correct answer clamped on!). IMPORTANT: this assumes that you've got target activation values for output layers already presented in the minus phase -- if this is not the case (values are computed on the fly), you may want to run this instead at the start of the plus phase, after ApplyInputs"; flags=; cond { expr="network.phase == LeabraNetwork::MINUS_PHASE"; var_expr="$#0#$.phase == LeabraNetwork::MINUS_PHASE"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="compute trial-level statistics"; flags=; result_var=NULL; obj=$62$; method=LeabraNetwork::Compute_TrialStats; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; IfElse @[10] { desc="this stat must be called in plus phase when reward information is avail"; flags=; cond { expr="network.phase_no == 1"; var_expr="$#0#$.phase_no == 1"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MethodCall @[0] { desc="get external reward information"; flags=; result_var=NULL; obj=$62$; method=LeabraNetwork::Compute_ExtRew; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; }; }; NetUpdateView @[11] { desc="update network views, if update_net_view == true"; flags=; network_var=$62$; update_var=.projects[0].programs.gp[0][7].vars[2]$67$; }; }; }; Program @[8] { name="LeabraCycle"; tags="Leabra, Std"; desc="runs one cycle of leabra processing (updating net inputs and activations)"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="update_net_view"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="determines whether network views will be updated on a cycle-by-cycle basis (slow, but often quite useful for seeing how processing is proceeding)"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=ProgEl; el_def=0; }; prog_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="this does all the standard leabra processing for one cycle of activation updating"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][8].args[0]$68$; method=LeabraNetwork::Cycle_Run; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; NetUpdateView @[1] { desc="update network views if update_net_view == true"; flags=; network_var=$68$; update_var=.projects[0].programs.gp[0][8].vars[0]$69$; }; ProgramCall @[2] { desc=; flags=NON_STD; target=.projects[0].programs.gp[0][13]$70$; targ_ld_init="*Cycle_Monitor*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; }; }; Program @[9] { name="LeabraTestCycle"; tags=; desc="runs one cycle of leabra processing (updating net inputs and activations)"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="update_net_view"; var_type=T_Bool; bool_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="determines whether network views will be updated on a cycle-by-cycle basis (slow, but often quite useful for seeing how processing is proceeding)"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=ProgEl; el_def=0; }; prog_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="this does all the standard leabra processing for one cycle of activation updating"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][9].args[0]$71$; method=LeabraNetwork::Cycle_Run; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; NetUpdateView @[1] { desc="update network views if update_net_view == true"; flags=; network_var=$71$; update_var=.projects[0].programs.gp[0][9].vars[0]$72$; }; ProgramCall @[2] { desc=; flags=NON_STD; target=$70$; targ_ld_init="*Cycle_Monitor*"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; }; }; Program @[10] { name="ApplyInputs"; tags="Network, InputData, Apply"; desc="apply the current input data to the network as external input and target values"; flags=; objs { name=; el_typ=LayerWriter; el_def=0; LayerWriter @[0] { name="LayerWriter_0"; data=$7$; network=$6$; layer_data { name=; el_typ=LayerWriterEl; el_def=0; LayerWriterEl @[0] { chan_name="Input"; net_target=LAYER; layer_name="Input"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=EXT; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[1] { chan_name="Output"; net_target=LAYER; layer_name="Output"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=TARG; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[2] { chan_name="SNc"; net_target=LAYER; layer_name="SNc"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=EXT; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[3] { chan_name="Motor_Cortex"; net_target=LAYER; layer_name="Motor_Cortex"; offset {x=0: y=0: }; use_layer_type=0; ext_flags=COMP; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[4] { chan_name="Name"; net_target=TRIAL_NAME; layer_name="Name"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; }; }; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=Network; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc="network to apply inputs to -- typically set by calling program"; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$7$; objs_ptr=0; flags=NULL_CHECK; desc="input datatable containing input/output patterns"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="LayerWriter_0"; var_type=T_Object; object_type=LayerWriter; object_val=.projects[0].programs.gp[0][10].objs[0]$73$; objs_ptr=1; flags=CTRL_PANEL|NULL_CHECK; desc="this is a pointer to the LayerWriter object in objs -- edit that object to determine how information is presented to the network"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="sets the datatable and network for the layer writer, so it knows what to write to"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][10].vars[0]$74$; method=LayerWriter::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataBlock_ptr; type="DataBlock*"; name="db"; required=0; def_val=; expr { expr="input_data"; var_expr="$#0#$"; vars { }; var_names{ input_data;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=0; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[1] { desc="check the configuration of the layer writer -- will emit warnings and errors for missing or misconfigured items"; flags=; result_var=NULL; obj=$74$; method=taList_impl::CheckConfig; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="quiet"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="apply inputs to the network! layer writer has all the key specs"; flags=; result_var=NULL; obj=$74$; method=LayerWriter::ApplyInputData; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; Program @[11] { name="ApplyInputsTest"; tags=; desc="apply the current input data to the network as external input and target values"; flags=; objs { name=; el_typ=LayerWriter; el_def=0; LayerWriter @[0] { name="LayerWriter_0"; data=$8$; network=$6$; layer_data { name=; el_typ=LayerWriterEl; el_def=0; LayerWriterEl @[0] { chan_name="Input"; net_target=LAYER; layer_name="Input"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=EXT; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[1] { chan_name="Output"; net_target=LAYER; layer_name="Output"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=TARG; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[2] { chan_name="SNc"; net_target=LAYER; layer_name="SNc"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=EXT; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[3] { chan_name="Motor_Cortex"; net_target=LAYER; layer_name="Motor_Cortex"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=TARG; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[4] { chan_name="Name"; net_target=TRIAL_NAME; layer_name="Name"; offset {x=0: y=0: }; use_layer_type=1; ext_flags=; noise {name="": type=NONE: mean=0: var=0.5: par=1: }; }; }; }; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=Network; object_val=$6$; objs_ptr=0; flags=NULL_CHECK; desc="network to apply inputs to -- typically set by calling program"; }; ProgVar @[1] { name="TestWP"; var_type=T_Object; object_type=DataTable; object_val=$8$; objs_ptr=0; flags=NULL_CHECK; desc="input datatable containing input/output patterns"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="LayerWriter_0"; var_type=T_Object; object_type=LayerWriter; object_val=.projects[0].programs.gp[0][11].objs[0]$75$; objs_ptr=1; flags=CTRL_PANEL|NULL_CHECK; desc="this is a pointer to the LayerWriter object in objs -- edit that object to determine how information is presented to the network"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="sets the datatable and network for the layer writer, so it knows what to write to"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][11].vars[0]$76$; method=LayerWriter::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataBlock_ptr; type="DataBlock*"; name="db"; required=0; def_val=; expr { expr="TestWP"; var_expr="$#0#$"; vars { }; var_names{ TestWP;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=0; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[1] { desc="check the configuration of the layer writer -- will emit warnings and errors for missing or misconfigured items"; flags=; result_var=NULL; obj=$76$; method=taList_impl::CheckConfig; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="quiet"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="apply inputs to the network! layer writer has all the key specs"; flags=; result_var=NULL; obj=$76$; method=LayerWriter::ApplyInputData; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; Program @[12] { name="LeabraTrialMonitor"; tags="Leabra, Std, Monitor"; desc="monitor trial-level data from the network (and potentially other sources) -- stores results in datatable (TrialOutputData typically) that can be used for graph/grid views and further analysis "; flags=; objs { name=; el_typ=NetMonitor; el_def=0; NetMonitor @[0] { name="trial_netmon"; items { name=; el_typ=NetMonItem; el_def=0; NetMonItem @[0] { name="batch"; computed=0; object_type=LeabraNetwork; object=$6$; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[1] { name="epoch"; computed=0; object_type=LeabraNetwork; object=$6$; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[2] { name="trial"; computed=0; object_type=LeabraNetwork; object=$6$; variable="trial"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[3] { name="trial_name"; computed=0; object_type=LeabraNetwork; object=$6$; variable="trial_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[4] { name="group_name"; computed=0; object_type=LeabraNetwork; object=$6$; variable="group_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[5] { name="phase_no"; computed=0; object_type=LeabraNetwork; object=$6$; variable="phase_no"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[6] { name="minus_cycles"; computed=0; object_type=LeabraNetwork; object=$6$; variable="minus_cycles"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[7] { name="sse"; computed=0; object_type=LeabraNetwork; object=$6$; variable="sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[8] { name="ext_rew"; computed=0; object_type=LeabraNetwork; object=$6$; variable="ext_rew"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[9] { name="Output_sse"; computed=0; object_type=LeabraLayer; object=.projects[0].networks[0].layers[7]$77$; variable="sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=$6$; data=$27$; rmv_orphan_cols=1; }; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=Network; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to record data from"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="trial_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$27$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="data table to record trial-level data to (this program writes new data to this table!)"; }; ProgVar @[1] { name="trial_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects[0].programs.gp[0][12].objs[0]$78$; objs_ptr=1; flags=NULL_CHECK; desc="pointer to the NetMonitor object in objs secton of this program that contains configuration for what to record and where to get it"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="set the network and datatable for the NetMonitor"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][12].vars[1]$79$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=0; def_val=; expr { expr="trial_mon_data"; var_expr="$#0#$"; vars { }; var_names{ trial_mon_data;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=0; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[1] { desc="check the configuration of the network monitor -- will emit warnings and errors for misconfigurations"; flags=; result_var=NULL; obj=$79$; method=taBase::CheckConfig; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="quiet"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MethodCall @[2] { desc="update the monitor items and data schema based on current settings of the NetMonitor object"; flags=; result_var=NULL; obj=$79$; method=NetMonitor::UpdateMonitors; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="reset_first"; required=0; def_val="false"; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="add a new blank row to the data"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][12].vars[0]$80$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[1] { desc="get the new monitor data from the network and other sources -- this does the main work"; flags=; result_var=NULL; obj=$79$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[2] { desc="update views and other things after writing new data to monitor data table"; flags=; result_var=NULL; obj=$80$; method=DataBlock::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[3] { desc="only functional for dmem projects: synchronizes trial data across processes so that all distributed memory processors have the same trial-level data, despite having run only a subset of them each"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][12].args[0]$81$; method=Network::DMem_ShareTrialData; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=1; def_val=; expr { expr="trial_mon_data"; var_expr="$#0#$"; vars { }; var_names{ trial_mon_data;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=int; type="int"; name="n_rows"; required=0; def_val="1"; expr { expr="1"; var_expr="1"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; }; Program @[13] { name="Cycle_Monitor"; tags=; desc="monitor trial-level data from the network (and potentially other sources) -- stores results in datatable (TrialOutputData typically) that can be used for graph/grid views and further analysis "; flags=; objs { name=; el_typ=NetMonitor; el_def=0; NetMonitor @[0] { name="cycle_netmon"; items { name=; el_typ=NetMonItem; el_def=0; NetMonItem @[0] { name="batch"; computed=0; object_type=LeabraNetwork; object=$6$; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[1] { name="epoch"; computed=0; object_type=LeabraNetwork; object=$6$; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[2] { name="trial"; computed=0; object_type=LeabraNetwork; object=$6$; variable="trial"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[3] { name="trial_name"; computed=0; object_type=LeabraNetwork; object=$6$; variable="trial_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[4] { name="group_name"; computed=0; object_type=LeabraNetwork; object=$6$; variable="group_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[5] { name="phase_no"; computed=0; object_type=LeabraNetwork; object=$6$; variable="phase_no"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[6] { name="cycle"; computed=0; object_type=LeabraNetwork; object=$6$; variable="cycle"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[7] { name="sse"; computed=0; object_type=LeabraNetwork; object=$6$; variable="sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[8] { name="ext_rew"; computed=0; object_type=LeabraNetwork; object=$6$; variable="ext_rew"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[9] { name="STN_acts_avg"; computed=0; object_type=LeabraLayer; object=.projects[0].networks[0].layers[8]$82$; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[10] { name="Motor__acts_avg"; computed=0; object_type=LeabraLayer; object=.projects[0].networks[0].layers[6]$83$; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[11] { name="Thalam_acts_avg"; computed=0; object_type=LeabraLayer; object=.projects[0].networks[0].layers[5]$84$; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[12] { name="GP_Int_acts_avg"; computed=0; object_type=LeabraLayer; object=.projects[0].networks[0].layers[3]$85$; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[13] { name="GP_Ext_acts_avg"; computed=0; object_type=LeabraLayer; object=.projects[0].networks[0].layers[4]$86$; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[14] { name="Output_act"; computed=0; object_type=LeabraLayer; object=$77$; variable="act"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[15] { name="Output_units_0_act"; computed=0; object_type=LeabraLayer; object=$77$; variable="units[0].act"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=$6$; data=.projects[0].data.gp[1][2]$87$; rmv_orphan_cols=1; }; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=Network; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to record data from"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="cycle_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$87$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="data table to record trial-level data to (this program writes new data to this table!)"; }; ProgVar @[1] { name="cycle_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects[0].programs.gp[0][13].objs[0]$88$; objs_ptr=1; flags=NULL_CHECK; desc="pointer to the NetMonitor object in objs secton of this program that contains configuration for what to record and where to get it"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="set the network and datatable for the NetMonitor"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][13].vars[1]$89$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=0; def_val=; expr { expr="cycle_mon_data"; var_expr="$#0#$"; vars { }; var_names{ cycle_mon_data;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=0; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[1] { desc="check the configuration of the network monitor -- will emit warnings and errors for misconfigurations"; flags=; result_var=NULL; obj=$89$; method=taBase::CheckConfig; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="quiet"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MethodCall @[2] { desc="update the monitor items and data schema based on current settings of the NetMonitor object"; flags=; result_var=NULL; obj=$89$; method=NetMonitor::UpdateMonitors; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="reset_first"; required=0; def_val="false"; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; IfReturn @[0] { desc=; flags=; cond { expr="network.phase_no>0"; var_expr="$#0#$.phase_no>0"; vars { }; var_names{ network;}; bad_vars{ }; }; }; MethodCall @[1] { desc="add a new blank row to the data"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][13].vars[0]$90$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[2] { desc="get the new monitor data from the network and other sources -- this does the main work"; flags=; result_var=NULL; obj=$89$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[3] { desc="update views and other things after writing new data to monitor data table"; flags=; result_var=NULL; obj=$90$; method=DataBlock::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[4] { desc="only functional for dmem projects: synchronizes trial data across processes so that all distributed memory processors have the same trial-level data, despite having run only a subset of them each"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][13].args[0]$91$; method=Network::DMem_ShareTrialData; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=1; def_val=; expr { expr="cycle_mon_data"; var_expr="$#0#$"; vars { }; var_names{ cycle_mon_data;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=int; type="int"; name="n_rows"; required=0; def_val="1"; expr { expr="1"; var_expr="1"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; }; Program @[14] { name="LeabraEpochMonitor"; tags="Leabra, Std, Monitor"; desc="monitor epoch-level data from the network to a datatable (EpochOutputData typically) for use in graphing and viewing and further analysis"; flags=; objs { name=; el_typ=NetMonitor; el_def=0; NetMonitor @[0] { name="epoch_netmon"; items { name=; el_typ=NetMonItem; el_def=0; NetMonItem @[0] { name="batch"; computed=0; object_type=LeabraNetwork; object=$6$; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[1] { name="epoch"; computed=0; object_type=LeabraNetwork; object=$6$; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[2] { name="avg_sse"; computed=0; object_type=LeabraNetwork; object=$6$; variable="avg_sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[3] { name="cnt_err"; computed=0; object_type=LeabraNetwork; object=$6$; variable="cnt_err"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[4] { name="avg_ext_rew"; computed=0; object_type=LeabraNetwork; object=$6$; variable="avg_ext_rew"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @[5] { name="Output_sse"; computed=0; object_type=LeabraLayer; object=$77$; variable="sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; agg {name="": op=NONE: rel={name="": rel=LESSTHANOREQUAL: val=0: use_var=0: var=NULL: }: }; pre_proc_1 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="SimpleMathSpec": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=$6$; data=.projects[0].data.gp[1][1]$92$; rmv_orphan_cols=1; }; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=Network; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to get data from"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="epoch_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$92$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="data table to write the epoch data to"; }; ProgVar @[1] { name="epoch_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects[0].programs.gp[0][14].objs[0]$93$; objs_ptr=1; flags=NULL_CHECK; desc="network monitor object that contains full specs for what to record and where to get it"; }; ProgVar @[2] { name="epoch_timer"; var_type=T_Object; object_type=TimeUsed; object_val=$28$; objs_ptr=0; flags=NULL_CHECK; desc="pointer to the network's epoch-level timer, to record how long it took to process an epoch"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=AssignExpr; el_def=0; }; init_code { name=; el_typ=MethodCall; el_def=0; AssignExpr @[0] { desc="get the epoch timer from current network"; flags=; result_var=.projects[0].programs.gp[0][14].vars[2]$94$; expr { expr="network.epoch_time"; var_expr="$#0#$.epoch_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; MethodCall @[1] { desc="set data and network on NetMonitor object"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][14].vars[1]$95$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=0; def_val=; expr { expr="epoch_mon_data"; var_expr="$#0#$"; vars { }; var_names{ epoch_mon_data;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=0; def_val=; expr { expr="network"; var_expr="$#0#$"; vars { }; var_names{ network;}; bad_vars{ }; }; }; }; }; MethodCall @[2] { desc="check configuration and emit errors/warnings for problems"; flags=; result_var=NULL; obj=$95$; method=taBase::CheckConfig; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="quiet"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MethodCall @[3] { desc="update the monitor items and data schema based on current settings of NetMonitor"; flags=; result_var=NULL; obj=$95$; method=NetMonitor::UpdateMonitors; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=bool; type="bool"; name="reset_first"; required=0; def_val="false"; expr { expr="true"; var_expr="true"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; prog_code { name=; el_typ=MethodCall; el_def=0; MethodCall @[0] { desc="add a new blank row to the data"; flags=; result_var=NULL; obj=.projects[0].programs.gp[0][14].vars[0]$96$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; MethodCall @[1] { desc="get the new monitor data and stor it into the data table -- this does the main job here"; flags=; result_var=NULL; obj=$95$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; AssignExpr @[2] { desc="get the epoch timer from current network"; flags=; result_var=$94$; expr { expr="network.epoch_time"; var_expr="$#0#$.epoch_time"; vars { }; var_names{ network;}; bad_vars{ }; }; }; MethodCall @[3] { desc="update after writing new data to monitor data table"; flags=; result_var=NULL; obj=$96$; method=DataBlock::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; }; }; }; Program @[15] { name="SaveWeights"; tags="Network, Weights"; desc="save network's current weight values to file using WriteWeights function, with file name based on project name + batch + epoch values"; flags=; objs { name=; el_typ=taOBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=Network; object_val=NULL; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="tag"; var_type=T_String; string_val=; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="user-provided tag (startup script will set this!)"; }; ProgVar @[1] { name="wts_subdir"; var_type=T_String; string_val=; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="user-provided subdirectory to save weights in"; }; ProgVar @[2] { name="fname"; var_type=T_String; string_val=; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="final generated file name -- do not edit!"; }; ProgVar @[3] { name="epoch_str"; var_type=T_String; string_val="0036"; objs_ptr=0; flags=NULL_CHECK; desc="string rep of epoch with leading zeros"; }; ProgVar @[4] { name="batch_str"; var_type=T_String; string_val="03"; objs_ptr=0; flags=NULL_CHECK; desc="string rep of batch with leading zeros"; }; ProgVar @[5] { name="final_tag"; var_type=T_String; string_val=".03_0036"; objs_ptr=0; flags=NULL_CHECK; desc="batch + epoch"; }; }; functions { name=; el_typ=ProgEl; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=ProgEl; el_def=0; }; prog_code { name=; el_typ=MethodCall; el_def=0; IfReturn @[0] { desc="do not save if not the first dmem process (only relevant for dmem = distributed memory processing)"; flags=; cond { expr="taMisc::dmem_proc > 0"; var_expr="taMisc::dmem_proc > 0"; vars { }; var_names{ }; bad_vars{ }; }; }; MiscCall @[1] { desc="get current batch counter for file name, with leading zeros to length 3"; flags=; result_var=.projects[0].programs.gp[0][15].vars[4]$97$; object_type=taMisc; method=taMisc::LeadingZeros; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=int; type="int"; name="num"; required=0; def_val=; expr { expr="network.batch"; var_expr="$#0#$.batch"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=int; type="int"; name="len"; required=0; def_val=; expr { expr="2"; var_expr="2"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MiscCall @[2] { desc="get current epoch counter with leading zeros to length 4"; flags=; result_var=.projects[0].programs.gp[0][15].vars[3]$98$; object_type=taMisc; method=taMisc::LeadingZeros; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=int; type="int"; name="num"; required=0; def_val=; expr { expr="network.epoch"; var_expr="$#0#$.epoch"; vars { }; var_names{ network;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=int; type="int"; name="len"; required=0; def_val=; expr { expr="4"; var_expr="4"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; AssignExpr @[3] { desc="string 'tag' to identify the batch, epoch, and other user id info for the weights"; flags=; result_var=.projects[0].programs.gp[0][15].vars[5]$99$; expr { expr="tag + \".\" + batch_str + \"_\" + epoch_str"; var_expr="$#0#$ + \".\" + $#1#$ + \"_\" + $#2#$"; vars { }; var_names{ tag;batch_str;epoch_str;}; bad_vars{ }; }; }; MethodCall @[4] { desc="get a file name based on the project's current file name, for saving the weights"; flags=; result_var=.projects[0].programs.gp[0][15].vars[2]$100$; obj=.projects[0].programs.gp[0][15].args[0]$101$; method=taBase::GetFileNameFmProject; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=const_taString_ref; type="const taString&"; name="ext"; required=1; def_val=; expr { expr="\".wts.gz\""; var_expr="\".wts.gz\""; vars { }; var_names{ }; bad_vars{ }; }; }; ProgArg @[1] { arg_type=const_taString_ref; type="const taString&"; name="tag"; required=0; def_val="\"\""; expr { expr="final_tag"; var_expr="$#0#$"; vars { }; var_names{ final_tag;}; bad_vars{ }; }; }; ProgArg @[2] { arg_type=const_taString_ref; type="const taString&"; name="subdir"; required=0; def_val="\"\""; expr { expr="wts_subdir"; var_expr="$#0#$"; vars { }; var_names{ wts_subdir;}; bad_vars{ }; }; }; ProgArg @[3] { arg_type=bool; type="bool"; name="dmem_proc_no"; required=0; def_val="false"; expr { expr="false"; var_expr="false"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; MethodCall @[5] { desc="save the weights to that file name"; flags=; result_var=NULL; obj=$101$; method=Network::SaveWeights; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=const_taString_ref; type="const taString&"; name="fname"; required=0; def_val="\"\""; expr { expr="fname"; var_expr="$#0#$"; vars { }; var_names{ fname;}; bad_vars{ }; }; }; ProgArg @[1] { arg_type=Network::WtSaveFormat; type="Network::WtSaveFormat"; name="fmt"; required=0; def_val="Network::NET_FMT"; expr { expr="Network::NET_FMT"; var_expr="Network::NET_FMT"; vars { }; var_names{ }; bad_vars{ }; }; }; }; }; }; }; Program @[16] { name="DA_Rew_Punish"; tags=; desc=; flags=; objs { name=; el_typ=taNBase; el_def=0; }; types { name=; el_typ=ProgType; el_def=0; }; args { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$6$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="network to train"; }; ProgVar @[1] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$8$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc="datatable with training patterns"; }; }; vars { name=; el_typ=ProgVar; el_def=0; ProgVar @[0] { name="num_intact_snc_units"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[1] { name="snc_size"; var_type=T_Int; int_val=4; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[2] { name="k"; var_type=T_Real; real_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[3] { name="sse"; var_type=T_Real; real_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[4] { name="act0"; var_type=T_Real; real_val=2.585929053111613e-07; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[5] { name="act1"; var_type=T_Real; real_val=0.9375092387199402; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[6] { name="SNc"; var_type=T_Object; object_type=LeabraLayer; object_val=$16$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[7] { name="Output"; var_type=T_Object; object_type=LeabraLayer; object_val=$77$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[8] { name="Motor_Cortex"; var_type=T_Object; object_type=LeabraLayer; object_val=$83$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[9] { name="matrisom_unitspec"; var_type=T_Object; object_type=LeabraUnitSpec; object_val=.projects[0].networks[0].specs.gp[2][0].children[3].children[0]$102$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[10] { name="i"; var_type=T_Int; int_val=4; objs_ptr=0; flags=NULL_CHECK; desc=; }; ProgVar @[11] { name="tonic_DA"; var_type=T_Real; real_val=0.03; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[12] { name="op_sse"; var_type=T_Int; int_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[13] { name="DA_dip_val"; var_type=T_Real; real_val=0; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; ProgVar @[14] { name="DA_burst_val"; var_type=T_Real; real_val=1; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK; desc=; }; }; functions { name=; el_typ=Function; el_def=0; }; load_code { name=; el_typ=ProgEl; el_def=0; }; init_code { name=; el_typ=ProgEl; el_def=0; }; prog_code { name=; el_typ=ProgEl; el_def=0; AssignExpr @[0] { desc=; flags=; result_var=.projects[0].programs.gp[0][16].vars[1]$103$; expr { expr="SNc.units.size"; var_expr="$#0#$.units.size"; vars { }; var_names{ SNc;}; bad_vars{ }; }; }; AssignExpr @[1] { desc=; flags=; result_var=.projects[0].programs.gp[0][16].vars[2]$104$; expr { expr="(float)num_intact_snc_units/ snc_size"; var_expr="(float)$#0#$/ $#1#$"; vars { }; var_names{ num_intact_snc_units;snc_size;}; bad_vars{ }; }; }; AssignExpr @[2] { desc=; flags=; result_var=.projects[0].programs.gp[0][16].vars[3]$105$; expr { expr="network.sse"; var_expr="$#0#$.sse"; vars { }; var_names{ network;}; bad_vars{ }; }; }; IfElse @[3] { desc="apply phasic DA in plus phase"; flags=; cond { expr="network.phase==LeabraNetwork::PLUS_PHASE"; var_expr="$#0#$.phase==LeabraNetwork::PLUS_PHASE"; vars { }; var_names{ network;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; IfElse @[0] { desc="if error is below threshold, given DA burst"; flags=; cond { expr="k>0&&Output.sse<0.5"; var_expr="$#0#$>0&&$#1#$.sse<0.5"; vars { }; var_names{ k;Output;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=; loop_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="set external input on SNC to high value for DA burst"; flags=; obj=.projects[0].programs.gp[0][16].vars[6]$106$; path="units[i].ext"; expr { expr="DA_burst_val"; var_expr="$#0#$"; vars { }; var_names{ DA_burst_val;}; bad_vars{ }; }; update_after=0; }; }; init { expr="i = 0"; var_expr="$#0#$ = 0"; vars { }; var_names{ i;}; bad_vars{ }; }; test { expr="i < snc_size"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ i;snc_size;}; bad_vars{ }; }; iter { expr="i++"; var_expr="$#0#$++"; vars { }; var_names{ i;}; bad_vars{ }; }; }; MemberAssign @[1] { desc="set striatal gain in proportion to DA and # intact Snc units"; flags=; obj=.projects[0].programs.gp[0][16].vars[9]$107$; path="act.gain"; expr { expr="k*10000"; var_expr="$#0#$*10000"; vars { }; var_names{ k;}; bad_vars{ }; }; update_after=0; }; }; false_code { name=; el_typ=ProgEl; el_def=0; ForLoop @[0] { desc=; flags=; loop_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="set DA units to 0 for DA dip"; flags=; obj=$106$; path="units[i].ext"; expr { expr="DA_dip_val"; var_expr="$#0#$"; vars { }; var_names{ DA_dip_val;}; bad_vars{ }; }; update_after=0; }; }; init { expr="i = 0"; var_expr="$#0#$ = 0"; vars { }; var_names{ i;}; bad_vars{ }; }; test { expr="i < snc_size"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ i;snc_size;}; bad_vars{ }; }; iter { expr="i++"; var_expr="$#0#$++"; vars { }; var_names{ i;}; bad_vars{ }; }; }; MemberAssign @[1] { desc="set striatal gain to be lower for DA dip (less D1 contrast enhancement)"; flags=; obj=$107$; path="act.gain"; expr { expr="600-k*300"; var_expr="600-$#0#$*300"; vars { }; var_names{ k;}; bad_vars{ }; }; update_after=0; }; }; }; AssignExpr @[1] { desc="store minus phase activation of motor ctx unit 0"; flags=; result_var=.projects[0].programs.gp[0][16].vars[4]$108$; expr { expr="Motor_Cortex.units[0].act_m"; var_expr="$#0#$.units[0].act_m"; vars { }; var_names{ Motor_Cortex;}; bad_vars{ }; }; }; AssignExpr @[2] { desc="store minus phase act of motor unit 1"; flags=; result_var=.projects[0].programs.gp[0][16].vars[5]$109$; expr { expr="Motor_Cortex.units[1].act_m"; var_expr="$#0#$.units[1].act_m"; vars { }; var_names{ Motor_Cortex;}; bad_vars{ }; }; }; IfElse @[3] { desc="if model selected R1"; flags=; cond { expr="act0>act1"; var_expr="$#0#$>$#1#$"; vars { }; var_names{ act0;act1;}; bad_vars{ }; }; true_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=.projects[0].programs.gp[0][16].vars[8]$110$; path="units[0].ext"; expr { expr="1.0"; var_expr="1.0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; MemberAssign @[1] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[1].ext"; expr { expr="0.0"; var_expr="0.0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; MemberAssign @[2] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[2].ext"; expr { expr="1.0"; var_expr="1.0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; MemberAssign @[3] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[3].ext"; expr { expr="0"; var_expr="0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; }; false_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[0].ext"; expr { expr="0"; var_expr="0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; MemberAssign @[1] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[1].ext"; expr { expr="1.0"; var_expr="1.0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; MemberAssign @[2] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[2].ext"; expr { expr="0"; var_expr="0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; MemberAssign @[3] { desc="set plus phase acts to reflect minus phase response"; flags=; obj=$110$; path="units[3].ext"; expr { expr="1.0"; var_expr="1.0"; vars { }; var_names{ }; bad_vars{ }; }; update_after=0; }; }; }; }; false_code { name=; el_typ=ProgEl; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=; loop_code { name=; el_typ=ProgEl; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=; obj=$106$; path="units[i].ext"; expr { expr="tonic_DA"; var_expr="$#0#$"; vars { }; var_names{ tonic_DA;}; bad_vars{ }; }; update_after=0; }; MemberAssign @[1] { desc="set striatal gain in proportion to DA and # intact Snc units"; flags=; obj=$107$; path="act.gain"; expr { expr="k*2500"; var_expr="$#0#$*2500"; vars { }; var_names{ k;}; bad_vars{ }; }; update_after=0; }; }; init { expr="i = 0"; var_expr="$#0#$ = 0"; vars { }; var_names{ i;}; bad_vars{ }; }; test { expr="i < snc_size"; var_expr="$#0#$ < $#1#$"; vars { }; var_names{ i;snc_size;}; bad_vars{ }; }; iter { expr="i++"; var_expr="$#0#$++"; vars { }; var_names{ i;}; bad_vars{ }; }; }; }; }; }; }; }; }; viewers { name=; el_typ=TopLevelViewer; el_def=0; MainWindowViewer @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="view_win_lft"; value 6 0=0; }; UserDataItem @[1] { name="view_win_top"; value 6 0=0; }; UserDataItem @[2] { name="view_win_wd"; value 6 0=1; }; UserDataItem @[3] { name="view_win_ht"; value 6 0=0.8306772708892822; }; UserDataItem @[4] { name="view_win_iconified"; value 1 0=0; }; UserDataItem @[5] { name="view_splitter_state"; value 9 0="AAAA/wAAAAAAAAADAAAAyQAAAhkAAAM6AQAAAAYBAAAAAQ=="; }; }; m_data=.projects[0]$111$; name="Browser"; visible=1; m_is_root=0; m_is_viewer_xor_browser=0; m_is_proj_viewer=1; m_is_dialog=0; toolbars { name=; el_typ=ToolBar; el_def=0; ToolBar @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="view_win_visible"; value 1 0=1; }; }; m_data=NULL; name="Application"; visible=0; lft=0; top=0.03087649; o=Horizontal; }; }; frames { name=; el_typ=FrameViewer; el_def=0; tabBrowseViewer @[0] { m_data=NULL; name="Tree"; visible=1; root_typ=LeabraProject; root_md=NULL; m_root=$111$; }; PanelViewer @[1] { m_data=NULL; name="Panels"; visible=1; }; T3DataViewer @[2] { m_data=NULL; name="T3Frames"; visible=1; frames { name=; el_typ=T3DataViewFrame; el_def=0; T3DataViewFrame @[0] { m_data=NULL; name="Frame2"; visible=1; root_view { m_data=NULL; m_transform=NULL; children { name=; el_typ=T3DataView; el_def=0; NetView @[0] { m_data=$6$; FloatTransform @*(.m_transform) {scale={x=1: y=1: z=1: }: rotate={x=1: y=0: z=0: rot=0.35: }: translate={x=0: y=0: z=0: }: }; main_xform {scale={x=1: y=1: z=1: }: rotate={x=1: y=0: z=0: rot=0.35: }: translate={x=0: y=0: z=0: }: }; lay_disp_modes{ Input=0;Striatum=0;SNc=0;GP_Int=0;GP_Ext=0;Thalamus=0;Motor_Cortex=0;Output=0;STN=0;}; scale { name="ColorScale"; chunks=133; min=-1; max=1; range=1; zero=0; spec=.colorspecs[0]$112$; auto_scale=0; }; scale_ranges { name=; el_typ=ScaleRange; el_def=0; ScaleRange @[0] { name="act"; auto_scale=0; min=-1; max=1; }; ScaleRange @[1] { name="r.wt"; auto_scale=0; min=-1; max=1; }; ScaleRange @[2] { name="net"; auto_scale=0; min=-1; max=1; }; ScaleRange @[3] { name="vcb.hyst"; auto_scale=0; min=-1; max=1; }; ScaleRange @[4] { name="spk_amp"; auto_scale=0; min=-1; max=1; }; ScaleRange @[5] { name="s.pdw"; auto_scale=0; min=-1; max=1; }; ScaleRange @[6] { name="r.pdw"; auto_scale=0; min=-1; max=1; }; ScaleRange @[7] { name="s.wt"; auto_scale=0; min=-1; max=1; }; ScaleRange @[8] { name="i_thr"; auto_scale=0; min=-1; max=1; }; ScaleRange @[9] { name="v_m"; auto_scale=0; min=-1; max=1; }; ScaleRange @[10] { name="I_net"; auto_scale=0; min=-1; max=1; }; ScaleRange @[11] { name="gc.a"; auto_scale=0; min=-1; max=1; }; ScaleRange @[12] { name="gc.h"; auto_scale=0; min=-1; max=1; }; ScaleRange @[13] { name="gc.i"; auto_scale=0; min=-1; max=1; }; ScaleRange @[14] { name="gc.l"; auto_scale=0; min=-1; max=1; }; ScaleRange @[15] { name="vcb.acc"; auto_scale=0; min=-1; max=1; }; ScaleRange @[16] { name="da"; auto_scale=0; min=-1; max=1; }; ScaleRange @[17] { name="act_dif"; auto_scale=0; min=-1; max=1; }; ScaleRange @[18] { name="act_p"; auto_scale=0; min=-1; max=1; }; ScaleRange @[19] { name="act_m"; auto_scale=0; min=-1; max=1; }; ScaleRange @[20] { name="act_avg"; auto_scale=0; min=-1; max=1; }; ScaleRange @[21] { name="act_eq"; auto_scale=0; min=-1; max=1; }; ScaleRange @[22] { name="wt_prjn"; auto_scale=0; min=-1; max=1; }; }; display=1; lay_mv=1; ordered_uvg_list{ act;}; unit_disp_mode=UDM_CYLINDER; unit_text_disp=UTD_NONE; max_size {x=14: y=9: z=3: }; font_sizes { net_name=0.05; net_vals=0.05; layer=0.04; layer_vals=0.03; prjn=0.01; unit=0.02; un_nm_len=3; }; view_params { xy_square=0; unit_spacing=0.05; prjn_disp=L_R_F; prjn_name=0; prjn_width=0.002; prjn_trans=0.5; lay_trans=0.5; unit_trans=0.6; }; wt_line_disp=0; wt_line_width=4; wt_line_thr=0.5; wt_line_swt=0; wt_prjn_lay=NULL; }; }; }; camera_pos {x=0.402234: y=0.6367046: z=1.43305: }; camera_orient {x=-0.8865634: y=-0.412627: z=-0.2091311: rot=0.1436121: }; camera_focdist=1.874225; bg_color {r=0.8: g=0.8: b=0.8: a=1: }; }; T3DataViewFrame @[1] { m_data=NULL; name="CycleOutputData"; visible=1; root_view { m_data=NULL; m_transform=NULL; children { name=; el_typ=T3DataView; el_def=0; GraphTableView @[0] { m_data=$87$; FloatTransform @*(.m_transform) {scale={x=1: y=1: z=1: }: rotate={x=0: y=0: z=1: rot=0: }: translate={x=1: y=0: z=0: }: }; children { name=; el_typ=GraphColView; el_def=0; GraphColView @[0] { m_data=.projects[0].data.gp[1][2].data[0]$113$; m_transform=NULL; name="batch"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[1] { m_data=.projects[0].data.gp[1][2].data[1]$114$; m_transform=NULL; name="epoch"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[2] { m_data=.projects[0].data.gp[1][2].data[2]$115$; m_transform=NULL; name="trial"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[3] { m_data=.projects[0].data.gp[1][2].data[3]$116$; m_transform=NULL; name="trial_name"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[4] { m_data=.projects[0].data.gp[1][2].data[4]$117$; m_transform=NULL; name="group_name"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[5] { m_data=.projects[0].data.gp[1][2].data[5]$118$; m_transform=NULL; name="phase_no"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[6] { m_data=.projects[0].data.gp[1][2].data[6]$119$; m_transform=NULL; name="cycle"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[7] { m_data=.projects[0].data.gp[1][2].data[7]$120$; m_transform=NULL; name="sse"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[8] { m_data=.projects[0].data.gp[1][2].data[8]$121$; m_transform=NULL; name="ext_rew"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[9] { m_data=.projects[0].data.gp[1][2].data[9]$122$; m_transform=NULL; name="STN_acts_avg"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[10] { m_data=.projects[0].data.gp[1][2].data[10]$123$; m_transform=NULL; name="Motor__acts_avg"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[11] { m_data=.projects[0].data.gp[1][2].data[11]$124$; m_transform=NULL; name="Thalam_acts_avg"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[12] { m_data=.projects[0].data.gp[1][2].data[12]$125$; m_transform=NULL; name="GP_Int_acts_avg"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[13] { m_data=.projects[0].data.gp[1][2].data[13]$126$; m_transform=NULL; name="GP_Ext_acts_avg"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[14] { m_data=.projects[0].data.gp[1][2].data[14]$127$; m_transform=NULL; name="Output_act"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[15] { m_data=.projects[0].data.gp[1][2].data[15]$128$; m_transform=NULL; name="Output_units_0_act"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; }; main_xform {scale={x=1: y=1: z=1: }: rotate={x=0: y=0: z=1: rot=0: }: translate={x=1: y=0: z=0: }: }; view_rows=10000; view_range {min=0: max=-1: }; display_on=0; manip_ctrl_on=1; x_axis { m_data=NULL; m_transform=NULL; on=1; axis=X; col_name="cycle"; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; row_num=0; }; z_axis { m_data=NULL; m_transform=NULL; on=0; axis=Z; col_name="batch"; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; row_num=0; }; plot_1 { m_data=NULL; m_transform=NULL; on=1; axis=Y; col_name="STN_acts_avg"; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=-6e-07: max=6e-07: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; plot_2 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name="Motor__acts_avg"; fixed_range {fix_min=0: min=0: fix_max=0: max=0.588618: }; color {name="red": r=1: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0.5886178: }; range {min=0: max=0.5886178: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=SQUARE; }; plot_3 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name="GP_Int_acts_avg"; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=DIAMOND; }; plot_4 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name="GP_Ext_acts_avg"; fixed_range {fix_min=0: min=5.69961e-10: fix_max=0: max=0.986826: }; color {name="green": r=0: g=1: b=0: a=1: desc="": }; data_range {min=5.699612e-10: max=0.9868261: }; range {min=5.699612e-10: max=0.9868261: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE; }; plot_5 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name="Thalam_acts_avg"; fixed_range {fix_min=0: min=0: fix_max=0: max=0.4855: }; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; data_range {min=0: max=0.4854995: }; range {min=0: max=0.4854995: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=PLUS; }; alt_y_2=0; alt_y_3=0; alt_y_4=0; alt_y_5=0; graph_type=XY; plot_style=LINE; line_width=2; point_size=MEDIUM; point_spacing=1; bar_space=0.2; color_mode=VALUE_COLOR; negative_draw=0; axis_font_size=0.05; label_font_size=0.04; label_spacing=-1; matrix_mode=SEP_GRAPHS; mat_layout=BOT_ZERO; mat_odd_vert=1; err_1 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_2 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_3 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_4 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_5 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_spacing=1; err_bar_width=0.02; color_axis { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; colorscale { name="ColorScale"; chunks=133; min=-1; max=1; range=0; zero=0; spec=$112$; auto_scale=0; }; raster_axis { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; thresh=0.5; thr_line_len=0.48; width=1; depth=1; two_d_font=0; two_d_font_scale=350; }; }; }; camera_pos {x=1.37625: y=0.4125: z=1.389598: }; camera_orient {x=0: y=0: z=1: rot=0: }; camera_focdist=1.899598; bg_color {r=0.8: g=0.8: b=0.8: a=1: }; }; T3DataViewFrame @[2] { m_data=NULL; name="EpochOutputData"; visible=1; root_view { m_data=NULL; m_transform=NULL; children { name=; el_typ=T3DataView; el_def=0; GraphTableView @[0] { m_data=$92$; FloatTransform @*(.m_transform) {scale={x=1: y=1: z=1: }: rotate={x=0: y=0: z=1: rot=0: }: translate={x=1: y=0: z=0: }: }; children { name=; el_typ=GraphColView; el_def=0; GraphColView @[0] { m_data=.projects[0].data.gp[1][1].data[0]$129$; m_transform=NULL; name="batch"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; data_range {min=0: max=0: }; }; GraphColView @[1] { m_data=.projects[0].data.gp[1][1].data[1]$130$; m_transform=NULL; name="epoch"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=4: }; data_range {min=0: max=0: }; }; GraphColView @[2] { m_data=.projects[0].data.gp[1][1].data[2]$131$; m_transform=NULL; name="avg_sse"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[3] { m_data=.projects[0].data.gp[1][1].data[3]$132$; m_transform=NULL; name="cnt_err"; visible=1; fixed_range {fix_min=1: min=0: fix_max=1: max=13: }; data_range {min=0: max=0: }; }; GraphColView @[4] { m_data=.projects[0].data.gp[1][1].data[4]$133$; m_transform=NULL; name="avg_ext_rew"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[5] { m_data=.projects[0].data.gp[1][1].data[5]$134$; m_transform=NULL; name="Output_sse"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; }; main_xform {scale={x=1: y=1: z=1: }: rotate={x=0: y=0: z=1: rot=0: }: translate={x=1: y=0: z=0: }: }; view_rows=10000; view_range {min=0: max=-1: }; display_on=0; manip_ctrl_on=1; x_axis { m_data=NULL; m_transform=NULL; on=1; axis=X; col_name="epoch"; fixed_range {fix_min=0: min=0: fix_max=0: max=4: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=4: }; range {min=0: max=4: }; n_ticks=10; axis_length=1; row_num=0; }; z_axis { m_data=NULL; m_transform=NULL; on=0; axis=Z; col_name="batch"; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; row_num=0; }; plot_1 { m_data=NULL; m_transform=NULL; on=1; axis=Y; col_name="cnt_err"; fixed_range {fix_min=1: min=0: fix_max=1: max=13: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=13: }; range {min=0: max=13: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; plot_2 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="red": r=1: g=0: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=SQUARE; }; plot_3 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=DIAMOND; }; plot_4 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="green3": r=0: g=0.8039216: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE; }; plot_5 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=PLUS; }; alt_y_2=0; alt_y_3=0; alt_y_4=0; alt_y_5=0; graph_type=XY; plot_style=LINE; line_width=2; point_size=MEDIUM; point_spacing=1; bar_space=0.2; color_mode=VALUE_COLOR; negative_draw=0; axis_font_size=0.05; label_font_size=0.04; label_spacing=-1; matrix_mode=SEP_GRAPHS; mat_layout=BOT_ZERO; mat_odd_vert=1; err_1 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_2 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_3 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_4 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_5 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_spacing=1; err_bar_width=0.02; color_axis { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; colorscale { name="ColorScale"; chunks=133; min=-1; max=1; range=0; zero=0; spec=$112$; auto_scale=0; }; raster_axis { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; thresh=0.5; thr_line_len=0.48; width=1; depth=1; two_d_font=0; two_d_font_scale=350; }; }; }; camera_pos {x=1.4275: y=1.095: z=2.27914: }; camera_orient {x=0: y=0: z=1: rot=0: }; camera_focdist=2.76914; bg_color {r=0.8: g=0.8: b=0.8: a=1: }; }; T3DataViewFrame @[3] { m_data=NULL; name="EpochOutputData_Group"; visible=1; root_view { m_data=NULL; m_transform=NULL; children { name=; el_typ=T3DataView; el_def=0; GraphTableView @[0] { m_data=.projects[0].data.gp[2][0]$135$; FloatTransform @*(.m_transform) {scale={x=1: y=1: z=1: }: rotate={x=0: y=0: z=1: rot=0: }: translate={x=1: y=0: z=0: }: }; children { name=; el_typ=GraphColView; el_def=0; GraphColView @[0] { m_data=.projects[0].data.gp[2][0].data[0]$136$; m_transform=NULL; name="epoch_group"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=4: }; data_range {min=0: max=0: }; }; GraphColView @[1] { m_data=.projects[0].data.gp[2][0].data[1]$137$; m_transform=NULL; name="batch_mean"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[2] { m_data=.projects[0].data.gp[2][0].data[2]$138$; m_transform=NULL; name="batch_sem"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[3] { m_data=.projects[0].data.gp[2][0].data[3]$139$; m_transform=NULL; name="avg_sse_mean"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[4] { m_data=.projects[0].data.gp[2][0].data[4]$140$; m_transform=NULL; name="avg_sse_sem"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[5] { m_data=.projects[0].data.gp[2][0].data[5]$141$; m_transform=NULL; name="cnt_err_mean"; visible=1; fixed_range {fix_min=1: min=0: fix_max=1: max=7: }; data_range {min=0: max=0: }; }; GraphColView @[6] { m_data=.projects[0].data.gp[2][0].data[6]$142$; m_transform=NULL; name="cnt_err_sem"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[7] { m_data=.projects[0].data.gp[2][0].data[7]$143$; m_transform=NULL; name="avg_ext_rew_mean"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[8] { m_data=.projects[0].data.gp[2][0].data[8]$144$; m_transform=NULL; name="avg_ext_rew_sem"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[9] { m_data=.projects[0].data.gp[2][0].data[9]$145$; m_transform=NULL; name="Output_sse_mean"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @[10] { m_data=.projects[0].data.gp[2][0].data[10]$146$; m_transform=NULL; name="Output_sse_sem"; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; }; main_xform {scale={x=1: y=1: z=1: }: rotate={x=0: y=0: z=1: rot=0: }: translate={x=1: y=0: z=0: }: }; view_rows=10000; view_range {min=0: max=4: }; display_on=1; manip_ctrl_on=1; x_axis { m_data=NULL; m_transform=NULL; on=1; axis=X; col_name="epoch_group"; fixed_range {fix_min=0: min=0: fix_max=0: max=4: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=4: }; range {min=0: max=4: }; n_ticks=10; axis_length=1; row_num=0; }; z_axis { m_data=NULL; m_transform=NULL; on=0; axis=Z; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; plot_1 { m_data=NULL; m_transform=NULL; on=1; axis=Y; col_name="cnt_err_mean"; fixed_range {fix_min=1: min=0: fix_max=1: max=7: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=7: }; range {min=0: max=7: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; plot_2 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="red": r=1: g=0: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=SQUARE; }; plot_3 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=DIAMOND; }; plot_4 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="green3": r=0: g=0.8039216: b=0: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE; }; plot_5 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; data_range {min=0: max=1: }; range {min=0: max=1: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=PLUS; }; alt_y_2=0; alt_y_3=0; alt_y_4=0; alt_y_5=0; graph_type=XY; plot_style=LINE; line_width=2; point_size=MEDIUM; point_spacing=1; bar_space=0.2; color_mode=FIXED_COLOR; negative_draw=0; axis_font_size=0.05; label_font_size=0.04; label_spacing=-1; matrix_mode=SEP_GRAPHS; mat_layout=BOT_ZERO; mat_odd_vert=1; err_1 { m_data=NULL; m_transform=NULL; on=1; axis=Y; col_name="cnt_err_sem"; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_2 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_3 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_4 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_5 { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; }; err_spacing=1; err_bar_width=0.02; color_axis { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; colorscale { name="ColorScale"; chunks=133; min=-1; max=1; range=0; zero=0; spec=$112$; auto_scale=0; }; raster_axis { m_data=NULL; m_transform=NULL; on=0; axis=Y; col_name=; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; color {name="black": r=0: g=0: b=0: a=1: desc="": }; data_range {min=0: max=0: }; range {min=0: max=0: }; n_ticks=10; axis_length=1; row_num=0; }; thresh=0.5; thr_line_len=0.48; width=1; depth=1; two_d_font=0; two_d_font_scale=350; }; }; }; camera_pos {x=1.406748: y=0.445: z=1.648402: }; camera_orient {x=0: y=0: z=1: rot=0: }; camera_focdist=1.660902; bg_color {r=0.8: g=0.8: b=0.8: a=1: }; }; }; }; }; docks { name=; el_typ=DockViewer; el_def=0; ToolBoxDockViewer @[0] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @[0] { name="view_win_lft"; value 6 0=0; }; UserDataItem @[1] { name="view_win_top"; value 6 0=0.06474103778600693; }; UserDataItem @[2] { name="view_win_wd"; value 6 0=0.0535714291036129; }; UserDataItem @[3] { name="view_win_ht"; value 6 0=0.7131474018096924; }; UserDataItem @[4] { name="view_win_iconified"; value 1 0=0; }; UserDataItem @[5] { name="view_visible"; value 1 0=1; }; }; m_data=NULL; name="Tools"; visible=1; dock_flags=DV_MOVABLE|DV_FLOATABLE; dock_area=1; }; }; }; }; use_change_log=0; last_change_desc=" "; networks { name=; el_typ=LeabraNetwork; el_def=0; LeabraNetwork @[0] { name="IntactNet"; desc=; specs { name=; el_typ=ConSpec; el_def=0; ConSpec @[0] { name="ConSpec_0"; desc=; unique{ }; children { name=; el_typ=ConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0: var=0.5: par=1: }; wt_limits {type=NONE: min=-1: max=1: sym=0: }; }; UniformRndPrjnSpec @[1] { name="STN_GPe_RndPrjnSpec_0"; desc=; unique{ }; children { name=; el_typ=UniformRndPrjnSpec; el_def=0; }; self_con=0; init_wts=0; p_con=1; sym_self=1; same_seed=0; rndm_seed { name=; seed{ 1942590695;1834211083;377798523;839440218;-583226373;705799995;-1978402924;1154338458;-462115379;246653898;1399794034;-1499780727;-1523899271;930991332;1290781086;1827104268;-716397506;1983718083;1167094774;951783845;-409479048;-735831888;435869947;-904086293;2026496515;403361634;-1944445990;-1372202487;2126959386;162557442;1012427038;1588232218;-1146450552;-853562653;-1656209805;-1888253373;1759765356;1728652414;-337014879;-1280803374;-575509963;-1765188122;-384524531;-821312351;-1870977276;1513531657;1301908149;699607679;871722190;941230124;480719736;-879564786;-698046303;1521335322;-1447079851;-716252964;526031609;1993676142;1340787872;1530654116;-969427509;1134915315;2122089688;-994370515;560929468;389650548;-1122373860;166734577;-286623372;-120943880;891391534;1880819345;-178283282;540924398;-472340061;2110112996;-1254638769;1538060551;1673190834;691970619;-959237381;-1357813313;1768507679;-1214978919;785612098;1900739683;2119690407;432529262;1597777345;-76740981;1752989913;507595810;1970077571;2120922148;-975091467;-1195485087;-2116172007;-1448521787;-1611468311;1523616406;1943148525;-1864229143;-937095503;-909740123;1292237191;387974384;538406262;509446046;-1972547268;-1733600336;-62144424;-1546025606;-1876304799;1885604132;1402880751;-482628413;1554473651;267768126;-629382805;-1249311349;-1924387261;1461040170;509667270;-779074633;-17507771;918255996;-143015157;-2090640919;315301152;702021484;808635402;-2068859673;-1347883889;1693940293;1805057885;-1668427604;-2137413199;-1104482850;208495526;118430790;-722180698;-1217415633;-224256734;1932248267;-1065779137;-10863097;487580081;-196290919;680669227;1979774005;-2037050706;21949689;-156516075;1715173136;1755205487;1472371560;1309034448;-829238765;-135616049;-2013309212;-1082863329;-899363014;-1287869739;-870456151;581622390;-1908234714;-1126900746;764733716;-925858573;-1751091051;-463341148;644681747;-1914494877;373038127;1588478313;1485299105;661291536;-1180395328;-1144161539;94598643;-1088175949;1032986199;-1100837220;407686955;-1082470443;1911682705;1627415103;310787166;1264015414;424266369;-2027001547;-1752167701;-228113290;1600850810;-2083186300;-1987228633;2000848866;-1395386373;80656148;317238254;-1145747623;-511425939;1346724944;180295410;-544883384;1732680478;-1525854862;236088797;1630557266;1645104332;445726791;1077576696;-2008807651;-2004400849;1274587809;1448655060;1550063216;454064067;-221087611;-594550512;-1272829249;1417249337;463284529;432100395;1078285484;-959540334;21248325;-866258652;-1081481128;-1833368508;-1379133116;-1920337657;-1251994147;1350814969;1508926409;1457463506;-436457777;-104638987;-300707471;-917721278;-620891785;523732153;445406412;1634813528;463926328;1581054136;170598643;-416905380;-1864557289;-202014810;1443533836;-1579728646;-1569783365;398032325;603645793;1459091613;-89353942;-1032688516;-1615894428;-767185823;-1946032362;931360128;-836341533;-1238311242;26872554;-1198342849;223875202;1787898723;1347039535;1426899535;712166878;1007370589;-2121265931;1279068215;1048275580;665564878;-854576448;1115606454;-1938871068;437377701;1893989311;60057612;-1411480578;-1802660403;-1229197402;-1114162509;1246510289;-100045555;-771237462;-321537560;1645429527;876081854;-344012824;613155858;-58817405;150811542;-10210852;2112860797;-528954460;-50850354;-649972970;1499955930;1421666445;1351215729;-1262602010;-980699257;1941355339;-961944897;-413046848;-411502877;522743470;-1432644237;-1120760559;-776500101;-1809149014;2127519490;470896056;662683123;-567303983;121758873;-1581863489;-91906121;-996490915;1435662432;1657906168;-1808273636;-1008367748;1370467542;775127407;336430775;908983458;-1287820551;2018562582;684733517;1364159782;839309547;1634308483;-497817377;118348535;-1269053010;955697418;-461911650;286131813;-300370221;1037538534;2023161463;-259022712;-1784489335;970316778;1578200481;500283714;1165730615;1099858613;850929875;-122366113;1415506233;-119359212;-2033313111;2063284557;168272506;1014246244;1972611072;1049837341;2120277277;-1358473916;867839429;1548671628;375995816;335745466;-92761852;-1313606594;983851877;957484913;-786771928;1174167013;457619777;1577173252;29408666;-1853196004;-954511750;-9741238;1764765760;-1106091459;418868525;1218646124;244543749;1280742435;-1669454769;1391623016;-1782787888;1672996012;-660347923;1734104018;-70130822;-1181208948;-285723476;-1959961034;42073851;-1354695576;-548612189;-692983842;1398992433;-1954474622;-414265610;1827986420;-1740813210;392408431;812967600;306150025;1150550306;-1577525793;522329421;-1905599679;1183746118;1873227418;113271279;-118624832;2064640613;91279896;-1296994070;923686864;-1237563925;-671532219;432504743;376157897;-1964026811;-509307951;-1291095292;-92298376;-440266966;742491999;-363297213;907719292;-2097711796;-72292200;797405338;-902353499;-166246906;-943459407;-1618209704;296966888;276718739;881687730;-63517562;-481360418;-1200473828;-144528583;2055425204;425514158;-972984629;-437772543;955225817;-1571664087;1255280381;-1520917476;411210494;-1044569805;1196139168;1000345811;314304961;788619297;-1721237341;1855193732;-688848034;-560160224;110451616;205166806;1045130054;606457223;-106064310;-350539693;-1199925658;-1553567608;1827860289;-495518821;-289479856;-1888403873;66174658;-1741606928;-1734480553;1792669379;2112354548;649961546;-1072485902;1950021075;-145032130;-1448841129;-455451267;-1966366114;-1298920795;837046384;-1783493271;1554055716;544335337;-302006934;-149606522;2022999324;826072250;-549276476;1862748770;1989186214;1089115433;956552701;1745621701;-2034815611;614102796;1479888671;-146686913;-690079684;-1114868597;-2016690506;2090920277;-830594320;-1261017876;2072821639;194345641;-1605828714;484660319;-454560202;1794417171;511341824;-1255389158;-669363423;1164033229;-1107097310;828519990;1450362036;476068860;1972265003;-1879752310;1894610209;-2128722743;1301770305;-1624467838;-731973801;-337476939;-1809040191;1525193216;-2001741915;-2027225998;-1162995606;-717541281;2050620663;-1135005089;2015601957;-1661832271;334966618;-236871560;-2075212969;-2141684690;1078043241;1723366617;828122061;147352703;-1999649046;-903143402;-1024430520;1633016716;-1604804280;1647853874;1626223577;613437415;854959232;-1237163556;-230090669;-278438371;1723117265;500023237;-1216412905;1717506101;1373064296;1994723034;1814828511;2067592941;937637146;-1370177392;-1274587966;-48108349;-378201671;1262614325;62390688;164974972;-830307263;-1714046089;1359544797;2016161042;83584009;930716322;-497279679;2023049077;-206104661;1501245447;562523072;104611198;-46372430;298890283;2110698786;-1091302072;20052267;-1304541777;140132249;-1245355586;-727077616;-316829592;152731111;-154344094;1345278005;-558417490;1281066959;-1469762051;-383552934;199222085;413618054;1552260824;-576003758;105415137;2042323739;1646910169;1084993049;840296744;216680633;1409468883;-1555896089;734078106;}; mti=115; }; }; UniformRndPrjnSpec @[2] { name="GPe_STN_RndPrjnSpec_1"; desc=; unique{ }; children { name=; el_typ=UniformRndPrjnSpec; el_def=0; }; self_con=0; init_wts=0; p_con=0.4; sym_self=1; same_seed=0; rndm_seed { name=; seed{ 1942590695;1834211083;377798523;839440218;-583226373;705799995;-1978402924;1154338458;-462115379;246653898;1399794034;-1499780727;-1523899271;930991332;1290781086;1827104268;-716397506;1983718083;1167094774;951783845;-409479048;-735831888;435869947;-904086293;2026496515;403361634;-1944445990;-1372202487;2126959386;162557442;1012427038;1588232218;-1146450552;-853562653;-1656209805;-1888253373;1759765356;1728652414;-337014879;-1280803374;-575509963;-1765188122;-384524531;-821312351;-1870977276;1513531657;1301908149;699607679;871722190;941230124;480719736;-879564786;-698046303;1521335322;-1447079851;-716252964;526031609;1993676142;1340787872;1530654116;-969427509;1134915315;2122089688;-994370515;560929468;389650548;-1122373860;166734577;-286623372;-120943880;891391534;1880819345;-178283282;540924398;-472340061;2110112996;-1254638769;1538060551;1673190834;691970619;-959237381;-1357813313;1768507679;-1214978919;785612098;1900739683;2119690407;432529262;1597777345;-76740981;1752989913;507595810;1970077571;2120922148;-975091467;-1195485087;-2116172007;-1448521787;-1611468311;1523616406;1943148525;-1864229143;-937095503;-909740123;1292237191;387974384;538406262;509446046;-1972547268;-1733600336;-62144424;-1546025606;-1876304799;1885604132;1402880751;-482628413;1554473651;267768126;-629382805;-1249311349;-1924387261;1461040170;509667270;-779074633;-17507771;918255996;-143015157;-2090640919;315301152;702021484;808635402;-2068859673;-1347883889;1693940293;1805057885;-1668427604;-2137413199;-1104482850;208495526;118430790;-722180698;-1217415633;-224256734;1932248267;-1065779137;-10863097;487580081;-196290919;680669227;1979774005;-2037050706;21949689;-156516075;1715173136;1755205487;1472371560;1309034448;-829238765;-135616049;-2013309212;-1082863329;-899363014;-1287869739;-870456151;581622390;-1908234714;-1126900746;764733716;-925858573;-1751091051;-463341148;644681747;-1914494877;373038127;1588478313;1485299105;661291536;-1180395328;-1144161539;94598643;-1088175949;1032986199;-1100837220;407686955;-1082470443;1911682705;1627415103;310787166;1264015414;424266369;-2027001547;-1752167701;-228113290;1600850810;-2083186300;-1987228633;2000848866;-1395386373;80656148;317238254;-1145747623;-511425939;1346724944;180295410;-544883384;1732680478;-1525854862;236088797;1630557266;1645104332;445726791;1077576696;-2008807651;-2004400849;1274587809;1448655060;1550063216;454064067;-221087611;-594550512;-1272829249;1417249337;463284529;432100395;1078285484;-959540334;21248325;-866258652;-1081481128;-1833368508;-1379133116;-1920337657;-1251994147;1350814969;1508926409;1457463506;-436457777;-104638987;-300707471;-917721278;-620891785;523732153;445406412;1634813528;463926328;1581054136;170598643;-416905380;-1864557289;-202014810;1443533836;-1579728646;-1569783365;398032325;603645793;1459091613;-89353942;-1032688516;-1615894428;-767185823;-1946032362;931360128;-836341533;-1238311242;26872554;-1198342849;223875202;1787898723;1347039535;1426899535;712166878;1007370589;-2121265931;1279068215;1048275580;665564878;-854576448;1115606454;-1938871068;437377701;1893989311;60057612;-1411480578;-1802660403;-1229197402;-1114162509;1246510289;-100045555;-771237462;-321537560;1645429527;876081854;-344012824;613155858;-58817405;150811542;-10210852;2112860797;-528954460;-50850354;-649972970;1499955930;1421666445;1351215729;-1262602010;-980699257;1941355339;-961944897;-413046848;-411502877;522743470;-1432644237;-1120760559;-776500101;-1809149014;2127519490;470896056;662683123;-567303983;121758873;-1581863489;-91906121;-996490915;1435662432;1657906168;-1808273636;-1008367748;1370467542;775127407;336430775;908983458;-1287820551;2018562582;684733517;1364159782;839309547;1634308483;-497817377;118348535;-1269053010;955697418;-461911650;286131813;-300370221;1037538534;2023161463;-259022712;-1784489335;970316778;1578200481;500283714;1165730615;1099858613;850929875;-122366113;1415506233;-119359212;-2033313111;2063284557;168272506;1014246244;1972611072;1049837341;2120277277;-1358473916;867839429;1548671628;375995816;335745466;-92761852;-1313606594;983851877;957484913;-786771928;1174167013;457619777;1577173252;29408666;-1853196004;-954511750;-9741238;1764765760;-1106091459;418868525;1218646124;244543749;1280742435;-1669454769;1391623016;-1782787888;1672996012;-660347923;1734104018;-70130822;-1181208948;-285723476;-1959961034;42073851;-1354695576;-548612189;-692983842;1398992433;-1954474622;-414265610;1827986420;-1740813210;392408431;812967600;306150025;1150550306;-1577525793;522329421;-1905599679;1183746118;1873227418;113271279;-118624832;2064640613;91279896;-1296994070;923686864;-1237563925;-671532219;432504743;376157897;-1964026811;-509307951;-1291095292;-92298376;-440266966;742491999;-363297213;907719292;-2097711796;-72292200;797405338;-902353499;-166246906;-943459407;-1618209704;296966888;276718739;881687730;-63517562;-481360418;-1200473828;-144528583;2055425204;425514158;-972984629;-437772543;955225817;-1571664087;1255280381;-1520917476;411210494;-1044569805;1196139168;1000345811;314304961;788619297;-1721237341;1855193732;-688848034;-560160224;110451616;205166806;1045130054;606457223;-106064310;-350539693;-1199925658;-1553567608;1827860289;-495518821;-289479856;-1888403873;66174658;-1741606928;-1734480553;1792669379;2112354548;649961546;-1072485902;1950021075;-145032130;-1448841129;-455451267;-1966366114;-1298920795;837046384;-1783493271;1554055716;544335337;-302006934;-149606522;2022999324;826072250;-549276476;1862748770;1989186214;1089115433;956552701;1745621701;-2034815611;614102796;1479888671;-146686913;-690079684;-1114868597;-2016690506;2090920277;-830594320;-1261017876;2072821639;194345641;-1605828714;484660319;-454560202;1794417171;511341824;-1255389158;-669363423;1164033229;-1107097310;828519990;1450362036;476068860;1972265003;-1879752310;1894610209;-2128722743;1301770305;-1624467838;-731973801;-337476939;-1809040191;1525193216;-2001741915;-2027225998;-1162995606;-717541281;2050620663;-1135005089;2015601957;-1661832271;334966618;-236871560;-2075212969;-2141684690;1078043241;1723366617;828122061;147352703;-1999649046;-903143402;-1024430520;1633016716;-1604804280;1647853874;1626223577;613437415;854959232;-1237163556;-230090669;-278438371;1723117265;500023237;-1216412905;1717506101;1373064296;1994723034;1814828511;2067592941;937637146;-1370177392;-1274587966;-48108349;-378201671;1262614325;62390688;164974972;-830307263;-1714046089;1359544797;2016161042;83584009;930716322;-497279679;2023049077;-206104661;1501245447;562523072;104611198;-46372430;298890283;2110698786;-1091302072;20052267;-1304541777;140132249;-1245355586;-727077616;-316829592;152731111;-154344094;1345278005;-558417490;1281066959;-1469762051;-383552934;199222085;413618054;1552260824;-576003758;105415137;2042323739;1646910169;1084993049;840296744;216680633;1409468883;-1555896089;734078106;}; mti=115; }; }; BaseSpec_Group @.gp[0] { name="LeabraPrjns"; el_typ=LeabraUnitSpec; el_def=0; FullPrjnSpec @[0] { name="FullPrjnSpec_0"; desc=; unique{ }; children { name=; el_typ=FullPrjnSpec; el_def=0; }; self_con=1; init_wts=0; }; OneToOnePrjnSpec @[1] { name="OneToOne"; desc=; unique{ self_con;}; children { name=; el_typ=OneToOnePrjnSpec; el_def=0; }; self_con=0; init_wts=0; n_conns=-1; recv_start=0; send_start=0; }; TesselPrjnSpec @[2] { name="Striatum_GPext"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; TesselPrjnSpec @[0] { name="PFC_Act_Deep"; desc=; unique{ send_scale;}; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=0: }; send_border {x=1: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[3] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[5] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[6] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[7] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[8] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[9] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[10] { send_off {x=1: y=5: }; wt_val=1; }; TessEl @[11] { send_off {x=1: y=5: }; wt_val=1; }; TessEl @[12] { send_off {x=1: y=6: }; wt_val=1; }; TessEl @[13] { send_off {x=1: y=6: }; wt_val=1; }; TessEl @[14] { send_off {x=1: y=7: }; wt_val=1; }; TessEl @[15] { send_off {x=1: y=7: }; wt_val=1; }; TessEl @[16] { send_off {x=1: y=8: }; wt_val=1; }; TessEl @[17] { send_off {x=1: y=8: }; wt_val=1; }; }; }; }; self_con=0; init_wts=0; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_border {x=1: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[3] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[5] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[6] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[7] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[8] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[9] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[10] { send_off {x=1: y=5: }; wt_val=1; }; TessEl @[11] { send_off {x=1: y=5: }; wt_val=1; }; TessEl @[12] { send_off {x=1: y=6: }; wt_val=1; }; TessEl @[13] { send_off {x=1: y=6: }; wt_val=1; }; TessEl @[14] { send_off {x=1: y=7: }; wt_val=1; }; TessEl @[15] { send_off {x=1: y=7: }; wt_val=1; }; TessEl @[16] { send_off {x=1: y=8: }; wt_val=1; }; TessEl @[17] { send_off {x=1: y=8: }; wt_val=1; }; }; }; TesselPrjnSpec @[3] { name="dMatrosomesGP"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=9: }; wrap=0; send_scale {x=1: y=1: }; send_border {x=0: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=0: y=1: }; wt_val=1; }; TessEl @[2] { send_off {x=0: y=2: }; wt_val=1; }; TessEl @[3] { send_off {x=0: y=3: }; wt_val=1; }; TessEl @[4] { send_off {x=0: y=4: }; wt_val=1; }; TessEl @[5] { send_off {x=0: y=5: }; wt_val=1; }; TessEl @[6] { send_off {x=0: y=6: }; wt_val=1; }; TessEl @[7] { send_off {x=0: y=7: }; wt_val=1; }; TessEl @[8] { send_off {x=0: y=8: }; wt_val=1; }; }; }; TesselPrjnSpec @[4] { name="SNc_GO"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=0: y=0: }; recv_n {x=2: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_border {x=0: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=0: y=1: }; wt_val=1; }; TessEl @[3] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=0: y=2: }; wt_val=1; }; TessEl @[5] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[6] { send_off {x=0: y=3: }; wt_val=1; }; TessEl @[7] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[8] { send_off {x=0: y=4: }; wt_val=1; }; TessEl @[9] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[10] { send_off {x=0: y=5: }; wt_val=1; }; TessEl @[11] { send_off {x=1: y=5: }; wt_val=1; }; }; }; TesselPrjnSpec @[5] { name="MotorCortex_Striatum"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=9: }; wrap=1; send_scale {x=1: y=1: }; send_border {x=0: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=0: y=1: }; wt_val=1; }; }; }; TesselPrjnSpec @[6] { name="SNc_NOGO"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=2: y=0: }; recv_n {x=2: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_border {x=0: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=0: y=1: }; wt_val=1; }; TessEl @[3] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=0: y=2: }; wt_val=1; }; TessEl @[5] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[6] { send_off {x=0: y=3: }; wt_val=1; }; TessEl @[7] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[8] { send_off {x=0: y=4: }; wt_val=1; }; TessEl @[9] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[10] { send_off {x=0: y=5: }; wt_val=1; }; TessEl @[11] { send_off {x=1: y=5: }; wt_val=1; }; }; }; TesselPrjnSpec @[7] { name="Striatum_GPInt"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=5: }; wrap=0; send_scale {x=1: y=1: }; send_border {x=0: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=0: y=1: }; wt_val=1; }; TessEl @[2] { send_off {x=0: y=2: }; wt_val=1; }; TessEl @[3] { send_off {x=0: y=3: }; wt_val=1; }; TessEl @[4] { send_off {x=0: y=4: }; wt_val=1; }; TessEl @[5] { send_off {x=0: y=5: }; wt_val=1; }; TessEl @[6] { send_off {x=0: y=6: }; wt_val=1; }; TessEl @[7] { send_off {x=0: y=7: }; wt_val=1; }; TessEl @[8] { send_off {x=0: y=8: }; wt_val=1; }; }; }; TesselPrjnSpec @[8] { name="MotorCortex_NoGoStriatum"; desc=; unique{ }; children { name=; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; recv_off {x=2: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=9: }; wrap=1; send_scale {x=1: y=1: }; send_border {x=0: y=0: }; send_offs { name=; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=0: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=0: y=2: }; wt_val=1; }; TessEl @[3] { send_off {x=0: y=3: }; wt_val=1; }; }; }; OneToOnePrjnSpec @[9] { name="OneToOne_2"; desc=; unique{ self_con;}; children { name=; el_typ=OneToOnePrjnSpec; el_def=0; }; self_con=0; init_wts=0; n_conns=-1; recv_start=0; send_start=2; }; }; BaseSpec_Group @.gp[1] { name="Connections"; el_typ=LeabraUnitSpec; el_def=0; LeabraBiasSpec @[0] { name="LearnBias"; desc=; unique{ rnd;wt_limits;wt_scale;wt_scale_init;}; children { name=; el_typ=LeabraBiasSpec; el_def=0; LeabraBiasSpec @[0] { name="FixedBias"; desc=; unique{ lrate;wt_limits;wt_scale;wt_scale_init;}; children { name=; el_typ=LeabraBiasSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0: var=0: par=1: }; wt_limits {type=NONE: min=-1: max=5: sym=0: }; inhib=0; wt_scale {abs=1: rel=1: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0: err=1: err_sb=1: }; savg_cor {cor=1: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; dwt_thresh=0.1; }; }; rnd {name="": type=UNIFORM: mean=0: var=0: par=1: }; wt_limits {type=NONE: min=-1: max=5: sym=0: }; inhib=0; wt_scale {abs=1: rel=1: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0.01; cur_lrate=0.01; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0: err=1: err_sb=1: }; savg_cor {cor=1: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; dwt_thresh=0.1; }; LeabraConSpec @[1] { name="FixedFull"; desc=; unique{ rnd;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=1: rel=3: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=1: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[2] { name="GPeGPiInhib"; desc=; unique{ rnd;inhib;}; children { name=; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @[0] { name="ThalInhib"; desc=; unique{ wt_scale;wt_sig;savg_cor;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; inhib=1; wt_scale {abs=1: rel=2: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[1] { name="Inhib_Learn"; desc=; unique{ rnd;wt_scale;lrate;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.35: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; inhib=1; wt_scale {abs=8: rel=2: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=1e-05; cur_lrate=1e-05; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=1: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; }; rnd {name="": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; inhib=1; wt_scale {abs=1.75: rel=1.5: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=1: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[3] { name="Fixed"; desc=; unique{ rnd;}; children { name=; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @[0] { name="STNcons"; desc=; unique{ rnd;wt_scale;lrate;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.5: var=0.21: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=1: rel=0.7: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0.001; cur_lrate=0.001; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[1] { name="MotorCortex_Striatum"; desc=; unique{ rnd;wt_limits;wt_scale;savg_cor;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.5: var=0.06: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; inhib=0; wt_scale {abs=1: rel=1.5: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0.001; cur_lrate=0.001; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[2] { name="Motor_NoGo"; desc=; unique{ rnd;wt_limits;wt_scale;savg_cor;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.5: var=0.06: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; inhib=0; wt_scale {abs=1: rel=0.5: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0.001; cur_lrate=0.001; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[3] { name="Input_Motor_Prepotent_"; desc=; unique{ rnd;wt_scale;lrate;lmix;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.35: var=0.005: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=3: rel=1: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=1e-06; cur_lrate=1e-06; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=1: err=0: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[4] { name="InputStriatum"; desc=; unique{ rnd;wt_scale;lrate;savg_cor;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.5: var=0.25: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=1: rel=1: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0.001; cur_lrate=0.001; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=1: thresh=0.001: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[5] { name="STN_GPi"; desc=; unique{ rnd;wt_scale;lrate;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.5: var=0.21: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=1: rel=0.55: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=1e-04; cur_lrate=1e-04; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[6] { name="Mtr_STNcons"; desc=; unique{ rnd;wt_scale;lrate;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.65: var=0.2: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=1: rel=2: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; }; rnd {name="": type=UNIFORM: mean=0.1: var=0.01: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=1: rel=1: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0.001; cur_lrate=0.0075; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[4] { name="Dopamine_D1_"; desc=; unique{ rnd;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.5: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=0; wt_scale {abs=0.5: rel=1: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[5] { name="SNc_Inhib_D2_"; desc=; unique{ rnd;inhib;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; inhib=1; wt_scale {abs=0.5: rel=0.75: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=0.4: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; LeabraConSpec @[6] { name="Inhib"; desc=; unique{ rnd;inhib;}; children { name=; el_typ=LeabraConSpec; el_def=0; }; rnd {name="": type=UNIFORM: mean=0.7: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; inhib=1; wt_scale {abs=3: rel=2.25: }; wt_scale_init {init=0: abs=1: rel=1: }; wt_sig {gain=6: off=1.25: }; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=0; cur_val=0; }; lmix {hebb=0.01: err=0.99: err_sb=1: }; savg_cor {cor=1: thresh=0.01: norm_con_n=0: }; rel_net_adapt { on=0; trg_fm_input=0.85; trg_fm_output=0.15; trg_lateral=0; trg_sum=1; tol_lg=0.05; tol_sm=0.2; rel_lrate=0.1; }; }; }; BaseSpec_Group @.gp[2] { name="Units"; el_typ=LeabraUnitSpec; el_def=0; LeabraUnitSpec @[0] { name="FixedBiasUnitSpec"; desc=; unique{ opt_thresh;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; LeabraUnitSpec @[0] { name="GPExt_UnitSpec"; desc=; unique{ bias_spec;act;opt_thresh;v_m_init;dt;g_bar;e_rev;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=.projects[0].networks[0].specs.gp[1][0].children[0]$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.26: var=0: par=1: }; dt {vm=0.1: net=0.7: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=1: i=2.5: h=0.1: a=0.5: }; e_rev {e=1: l=0.255: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; LeabraUnitSpec @[1] { name="OutputUnitSpec"; desc=; unique{ bias_spec;act;opt_thresh;g_bar;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.2: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.1: net=0.7: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=1: i=1: h=0.1: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; LeabraUnitSpec @[2] { name="Thalamus"; desc=; unique{ bias_spec;opt_thresh;dt;g_bar;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.05: net=0.4: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=0.5: l=0.07: i=1.7: h=0.2: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; LeabraUnitSpec @[3] { name="LearnBiasUnitSpec"; desc=; unique{ bias_spec;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; LeabraUnitSpec @[0] { name="matrisom_unitspec"; desc=; unique{ bias_spec;act;opt_thresh;g_bar;act_reg;noise_type;noise;dt;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.26: gain=2500: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.05: net=0.5: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=1: i=1: h=1.2: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=1: min=0.001: max=0.35: wt_dt=0.1: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=VM_NOISE; noise {name="": type=GAUSSIAN: mean=0.001: var=0: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; LeabraUnitSpec @[1] { name="Motor_Cortex_unitspec"; desc=; unique{ bias_spec;opt_thresh;dt;acc;noise_type;noise;noise_sched;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.05: net=0.7: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=0.1: i=1: h=1.2: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.005: b_dec_dt=0.01: a_thr=0.25: d_thr=0.1: g_dt=0.1: init=1: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=VM_NOISE; noise {name="": type=GAUSSIAN: mean=0.0015: var=0.0015: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; SchedItem @[0] { start_ctr=0; start_val=1; duration=25; step=0; }; SchedItem @[1] { start_ctr=25; start_val=1; duration=55; step=-0.009090909; }; SchedItem @[2] { start_ctr=80; start_val=0.5; duration=20; step=-0.015; }; SchedItem @[3] { start_ctr=100; start_val=0.2; duration=1; step=1; }; }; }; LeabraUnitSpec @[2] { name="STN_unitspec"; desc=; unique{ bias_spec;act;opt_thresh;v_m_init;dt;g_bar;e_rev;noise_type;noise;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.25: var=0: par=1: }; dt {vm=0.045: net=0.17: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=1: i=1: h=0.1: a=0.5: }; e_rev {e=1: l=0.2: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0.0015: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=.projects[0].networks[0].specs.gp[1][0]$148$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.1: net=0.7: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=0.1: i=1: h=1.2: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; LeabraUnitSpec @[4] { name="GPInt_UnitSpec"; desc=; unique{ bias_spec;opt_thresh;v_m_init;dt;g_bar;e_rev;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.26: var=0: par=1: }; dt {vm=0.2: net=0.7: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=3: i=1: h=0.1: a=0.5: }; e_rev {e=1: l=0.275: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.1: net=0.7: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=0.1: i=1: h=1.2: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NO_NOISE; noise {name="": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; LeabraUnitSpec @[1] { name="SNc_UnitSpec"; desc=; unique{ opt_thresh;}; children { name=; el_typ=LeabraUnitSpec; el_def=0; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$147$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {thr=0.25: gain=100: nvar=0.005: avg_dt=0.005: i_thr=STD: }; spike {decay=0.05: v_m_r=0: eq_gain=10: eq_dt=0.02: hard_gain=0.4: }; depress {p_spike=P_NXX1: rec=0.2: asymp_act=0.5: depl=0.2105263: max_amp=2: }; opt_thresh {send=0.1: delta=0.005: learn=0: updt_wts=0: phase_dif=0: }; clamp_range {min=0: max=0.95: range=0.95: scale=1.052632: }; vm_range {min=0: max=1: range=1: scale=1: }; v_m_init {name="": type=UNIFORM: mean=0.15: var=0: par=1: }; dt {vm=0.95: net=1: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: }; g_bar {e=1: l=0.1: i=1: h=1.2: a=0.5: }; e_rev {e=1: l=0.15: i=0.15: h=1: a=0: }; hyst {on=0: b_inc_dt=0.05: b_dec_dt=0.05: a_thr=0.8: d_thr=0.7: g_dt=0.1: init=1: trl=0: }; acc {on=0: b_inc_dt=0.01: b_dec_dt=0.01: a_thr=0.5: d_thr=0.1: g_dt=0.1: init=0: trl=0: }; act_reg {on=0: min=0.001: max=0.35: wt_dt=0.2: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; noise_type=NETIN_NOISE; noise {name="": type=GAUSSIAN: mean=0.0015: var=0.002: par=1: }; noise_sched { name=; el_typ=SchedItem; el_def=0; last_ctr=-1; default_val=1; interpolate=1; cur_val=0; }; }; }; BaseSpec_Group @.gp[3] { name="LayerSpecs"; el_typ=LeabraUnitSpec; el_def=0; LeabraLayerSpec @[0] { name="LayerSpec_0"; desc=; unique{ kwta;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; LeabraLayerSpec @[0] { name="Matrisome_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;clamp;decay;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.5; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=3: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=1: phase=0: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[1] { name="GP_layerspec"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=0: gain=0.5: d_gain=0: }; decay {event=1: phase=1: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[2] { name="Thalamus_layerspec"; desc=; unique{ kwta;compute_i;decay;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=1: phase=0: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[3] { name="Output_layerspec"; desc=; unique{ kwta;inhib_group;compute_i;i_kwta_pt;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=1: phase=1: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[4] { name="PFC_Out_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=LAY_AND_GPS; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.5; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=1: phase=1: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[5] { name="InputLayer"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.25; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=1: phase=1: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[6] { name="SNc_layerspec"; desc=; unique{ kwta;compute_i;clamp;inhib;decay;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=0: gain=0.5: d_gain=0: }; decay {event=1: phase=0: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.6; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=3: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=1: phase=1: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[1] { name="NoDecayLayers"; desc=; unique{ }; children { name=; el_typ=LeabraLayerSpec; el_def=0; LeabraLayerSpec @[0] { name="STN"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=0: phase=0: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @[1] { name="PFCIn_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib;}; children { name=; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=LAY_AND_GPS; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.6; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=5: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=0: phase=0: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.25; min_i=0; comp_thr=0.5; comp_gain=2; gp_pt=0.2; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: diff_act_pct=0: act_pct=0.1: gp_i=0: gp_g=0.5: }; tie_brk {on=0: k_thr=1: diff_thr=0.2: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; clamp {hard=1: gain=0.5: d_gain=0: }; decay {event=0: phase=0: phase2=0: clamp_phase2=0: }; net_rescale {on=0: max_net=0.8: net_extra=0.2: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; }; }; layers { name=; el_typ=LeabraLayer; el_def=0; pos {x=0: y=0: z=0: }; LeabraLayer @[0] { name="Input"; flags=; layer_type=INPUT; pos {x=1: y=0: z=2: }; un_geom {x=5: y=5: n_not_xy=0: n=25: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=5: y=5: n_not_xy=0: n=25: }; projections { name=; el_typ=LeabraPrjn; el_def=0; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[1].projections[0]; Projection_Group @. = [1] = LeabraPrjn .projects[0].networks[0].layers[6].projections[1]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=5: y=5: n_not_xy=0: n=25: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0]$149$: }; ext_flag=EXT; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name=; sse=0; icon_value=0; netin {avg=0: max=0: max_i=-1: }; i_thrs {avg=0: max=0: max_i=-1: }; acts {avg=0.38: max=0.95: max_i=0: }; acts_p {avg=0.38: max=0.95: max_i=1: }; acts_m {avg=0.38: max=0.95: max_i=1: }; phase_dif_ratio=1; kwta {k=1: pct=0.04: pct_c=0.96: adth_k=1: k_ithr=-0.1: k1_ithr=-0.1: ithr_r=0: ithr_diff=-0: tie_brk=0: }; i_val {kwta=0: g_i=0.25: gp_g_i=0: g_i_orig=0.25: }; un_g_i {avg=0: max=0: max_i=-1: }; adapt_i {avg_avg=0.04: i_kwta_pt=0.25: g_bar_i=1: g_bar_l=0.1: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0].children[5]$150$: }; stm_gain=0.5; hard_clamped=1; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[1] { name="Striatum"; flags=; layer_type=HIDDEN; pos {x=1: y=0: z=1: }; un_geom {x=4: y=9: n_not_xy=0: n=36: }; unit_groups=0; gp_geom {x=2: y=2: n_not_xy=0: n=4: }; gp_spc {x=0: y=0: }; act_geom {x=4: y=9: n_not_xy=0: n=36: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_Input"; from_type=CUSTOM; from=.projects[0].networks[0].layers[0]$151$; spec {type=FullPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][0]$152$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[4]$153$: }; recv_idx=0; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_SNc"; from_type=CUSTOM; from=$16$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][4]$154$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][4]$155$: }; recv_idx=1; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[2] { name="Fm_SNc"; from_type=CUSTOM; from=$16$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][6]$156$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][5]$157$: }; recv_idx=2; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[3] { name="Fm_Motor_Cortex"; from_type=CUSTOM; from=$83$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][8]$158$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[2]$159$: }; recv_idx=3; send_idx=4; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[4] { name="Fm_Motor_Cortex"; from_type=CUSTOM; from=$83$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][5]$160$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[1]$161$: }; recv_idx=4; send_idx=5; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[3].projections[0]; Projection_Group @. = [1] = LeabraPrjn .projects[0].networks[0].layers[4].projections[0]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=4: y=9: n_not_xy=0: n=36: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=$102$: }; ext_flag=; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name="Go-R1"; sse=0; icon_value=0; netin {avg=1.510151: max=1.842934: max_i=29: }; i_thrs {avg=9.159199: max=11.39792: max_i=29: }; acts {avg=0.0782505: max=0.7843618: max_i=29: }; acts_p {avg=0.08607803: max=0.7926073: max_i=13: }; acts_m {avg=0.08607803: max=0.7926073: max_i=13: }; phase_dif_ratio=1; kwta {k=3: pct=0.08333334: pct_c=0.9166667: adth_k=1: k_ithr=11.0303: k1_ithr=10.9997: ithr_r=0.002778362: ithr_diff=0.002774485: tie_brk=0: }; i_val {kwta=11.015: g_i=11.015: gp_g_i=0: g_i_orig=11.015: }; un_g_i {avg=11.01501: max=11.015: max_i=0: }; adapt_i {avg_avg=0.08333334: i_kwta_pt=0.5: g_bar_i=1: g_bar_l=1: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0].children[0]$162$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[2] { name="SNc"; flags=; layer_type=INPUT; pos {x=2: y=0: z=0: }; un_geom {x=2: y=2: n_not_xy=0: n=4: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=2: y=2: n_not_xy=0: n=4: }; projections { name=; el_typ=LeabraPrjn; el_def=0; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[1].projections[1]; Projection_Group @. = [1] = LeabraPrjn .projects[0].networks[0].layers[1].projections[2]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=2: y=2: n_not_xy=0: n=4: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][1]$163$: }; ext_flag=EXT; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name=; sse=0; icon_value=0; netin {avg=0.01537416: max=0.01731166: max_i=3: }; i_thrs {avg=0.01530618: max=0.02983745: max_i=3: }; acts {avg=0.647215: max=0.6955121: max_i=3: }; acts_p {avg=0.6431079: max=0.6897681: max_i=1: }; acts_m {avg=0.6431079: max=0.6897681: max_i=1: }; phase_dif_ratio=1; kwta {k=1: pct=0.25: pct_c=0.75: adth_k=1: k_ithr=0: k1_ithr=0: ithr_r=0: ithr_diff=0: tie_brk=0: }; i_val {kwta=0: g_i=0: gp_g_i=0: g_i_orig=0: }; un_g_i {avg=0: max=0: max_i=0: }; adapt_i {avg_avg=0.25: i_kwta_pt=0.6: g_bar_i=1: g_bar_l=0.1: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0].children[6]$164$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[3] { name="GP_Int"; flags=; layer_type=HIDDEN; pos {x=6: y=0: z=0: }; un_geom {x=2: y=2: n_not_xy=0: n=4: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=2: y=2: n_not_xy=0: n=4: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_Striatum"; from_type=CUSTOM; from=$17$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][7]$165$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][2].children[1]$166$: }; recv_idx=0; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_GP_Ext"; from_type=CUSTOM; from=$86$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][2]$167$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][2]$168$: }; recv_idx=1; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[2] { name="Fm_STN"; from_type=CUSTOM; from=$82$; spec {type=FullPrjnSpec: spec=$152$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[5]$169$: }; recv_idx=2; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[5].projections[0]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=2: y=2: n_not_xy=0: n=4: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0].children[4]$170$: }; ext_flag=; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name="R2"; sse=0; icon_value=0; netin {avg=0.07113075: max=0.0855621: max_i=2: }; i_thrs {avg=1.283481: max=1.391716: max_i=2: }; acts {avg=0.4611043: max=0.9236104: max_i=2: }; acts_p {avg=0.4150822: max=0.8454967: max_i=2: }; acts_m {avg=0.4150822: max=0.8454967: max_i=2: }; phase_dif_ratio=1; kwta {k=1: pct=0.25: pct_c=0.75: adth_k=1: k_ithr=1.09251: k1_ithr=1.09251: ithr_r=0: ithr_diff=0: tie_brk=0: }; i_val {kwta=0: g_i=0: gp_g_i=0: g_i_orig=0: }; un_g_i {avg=1.14268: max=1.78849: max_i=3: }; adapt_i {avg_avg=0.25: i_kwta_pt=0.5: g_bar_i=1: g_bar_l=3: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0].children[1]$171$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[4] { name="GP_Ext"; flags=; layer_type=HIDDEN; pos {x=6: y=4: z=0: }; un_geom {x=2: y=1: n_not_xy=0: n=2: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=2: y=1: n_not_xy=0: n=2: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_Striatum"; from_type=CUSTOM; from=$17$; spec {type=TesselPrjnSpec: spec=$167$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][6]$172$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_STN"; from_type=CUSTOM; from=$82$; spec {type=UniformRndPrjnSpec: spec=.projects[0].networks[0].specs[1]$173$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[0]$174$: }; recv_idx=1; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[3].projections[1]; Projection_Group @. = [1] = LeabraPrjn .projects[0].networks[0].layers[8].projections[1]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=2: y=1: n_not_xy=0: n=2: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0].children[0]$175$: }; ext_flag=; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name="R1"; sse=0; icon_value=0; netin {avg=0.1256137: max=0.1608976: max_i=1: }; i_thrs {avg=0.9921025: max=1.256732: max_i=1: }; acts {avg=0.9708879: max=0.9711923: max_i=1: }; acts_p {avg=0.9079125: max=0.9562136: max_i=0: }; acts_m {avg=0.9079125: max=0.9562136: max_i=0: }; phase_dif_ratio=1; kwta {k=1: pct=0.5: pct_c=0.5: adth_k=1: k_ithr=0.0999999: k1_ithr=0.0999999: ithr_r=0: ithr_diff=0: tie_brk=0: }; i_val {kwta=0: g_i=0: gp_g_i=0: g_i_orig=0: }; un_g_i {avg=0.06431491: max=0.1286298: max_i=1: }; adapt_i {avg_avg=0.5: i_kwta_pt=0.5: g_bar_i=2.5: g_bar_l=1: }; spec {type=LeabraLayerSpec: spec=$171$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[5] { name="Thalamus"; flags=; layer_type=HIDDEN; pos {x=12: y=0: z=1: }; un_geom {x=2: y=1: n_not_xy=0: n=2: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=2: y=1: n_not_xy=0: n=2: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_GP_Int"; from_type=CUSTOM; from=$85$; spec {type=TesselPrjnSpec: spec=.projects[0].networks[0].specs.gp[0][3]$176$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][2].children[0]$177$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_Motor_Cortex"; from_type=CUSTOM; from=$83$; spec {type=TesselPrjnSpec: spec=$176$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][1]$178$: }; recv_idx=1; send_idx=3; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[6].projections[0]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=2: y=1: n_not_xy=0: n=2: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0].children[2]$179$: }; ext_flag=; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name="R1"; sse=0; icon_value=0; netin {avg=0.1785989: max=0.3571934: max_i=1: }; i_thrs {avg=1.269492: max=2.60895: max_i=1: }; acts {avg=0.4922692: max=0.9845384: max_i=1: }; acts_p {avg=0.4962071: max=0.9924142: max_i=1: }; acts_m {avg=0.4962071: max=0.9924142: max_i=1: }; phase_dif_ratio=1; kwta {k=1: pct=0.5: pct_c=0.5: adth_k=1: k_ithr=0.979331: k1_ithr=0.746659: ithr_r=0.271261: ithr_diff=0: tie_brk=0: }; i_val {kwta=0: g_i=0: gp_g_i=0: g_i_orig=0: }; un_g_i {avg=0.3659378: max=0.7309765: max_i=0: }; adapt_i {avg_avg=0.5: i_kwta_pt=0.6: g_bar_i=1.7: g_bar_l=0.07: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0].children[2]$180$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[6] { name="Motor_Cortex"; flags=NO_ADD_SSE|NO_ADD_COMP_SSE; layer_type=TARGET; pos {x=10: y=0: z=2: }; un_geom {x=2: y=2: n_not_xy=0: n=4: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=2: y=2: n_not_xy=0: n=4: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_Thalamus"; from_type=CUSTOM; from=$84$; spec {type=TesselPrjnSpec: spec=$176$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$178$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_Input"; from_type=CUSTOM; from=$151$; spec {type=FullPrjnSpec: spec=$152$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[3]$181$: }; recv_idx=1; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[5].projections[1]; Projection_Group @. = [1] = LeabraPrjn .projects[0].networks[0].layers[7].projections[0]; Projection_Group @. = [2] = LeabraPrjn .projects[0].networks[0].layers[7].projections[1]; Projection_Group @. = [3] = LeabraPrjn .projects[0].networks[0].layers[8].projections[0]; Projection_Group @. = [4] = LeabraPrjn .projects[0].networks[0].layers[1].projections[3]; Projection_Group @. = [5] = LeabraPrjn .projects[0].networks[0].layers[1].projections[4]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=2: y=2: n_not_xy=0: n=4: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0].children[3].children[1]$182$: }; ext_flag=TARG; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name="R1"; sse=0; icon_value=0; netin {avg=2.868245: max=3.241691: max_i=1: }; i_thrs {avg=21.41184: max=24.21268: max_i=1: }; acts {avg=0.4489419: max=0.8953166: max_i=3: }; acts_p {avg=0.4449383: max=0.8887834: max_i=3: }; acts_m {avg=0.4449383: max=0.8887834: max_i=3: }; phase_dif_ratio=1; kwta {k=3: pct=0.75: pct_c=0.25: adth_k=1: k_ithr=22.35889: k1_ithr=18.57069: ithr_r=0.1856392: ithr_diff=0.1694268: tie_brk=0: }; i_val {kwta=20.84361: g_i=20.84361: gp_g_i=0: g_i_orig=20.84361: }; un_g_i {avg=20.84361: max=20.84361: max_i=0: }; adapt_i {avg_avg=0.75: i_kwta_pt=0.6: g_bar_i=1: g_bar_l=0.1: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0]$183$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[7] { name="Output"; flags=; layer_type=TARGET; pos {x=8: y=6: z=2: }; un_geom {x=2: y=1: n_not_xy=0: n=2: }; unit_groups=0; gp_geom {x=0: y=0: n_not_xy=0: n=0: }; gp_spc {x=0: y=0: }; act_geom {x=2: y=1: n_not_xy=0: n=2: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_Motor_Cortex"; from_type=CUSTOM; from=$83$; spec {type=TesselPrjnSpec: spec=$165$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$178$: }; recv_idx=0; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_Motor_Cortex"; from_type=CUSTOM; from=$83$; spec {type=OneToOnePrjnSpec: spec=.projects[0].networks[0].specs.gp[0][9]$184$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$178$: }; recv_idx=1; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=2: y=1: n_not_xy=0: n=2: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0].children[1]$185$: }; ext_flag=TARG; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name=; sse=1.984406; icon_value=0; netin {avg=0.223297: max=0.4465939: max_i=1: }; i_thrs {avg=2.572752: max=6.145503: max_i=1: }; acts {avg=0.4959215: max=0.991843: max_i=1: }; acts_p {avg=0.4960862: max=0.9921724: max_i=1: }; acts_m {avg=0.4960862: max=0.9921724: max_i=1: }; phase_dif_ratio=1; kwta {k=1: pct=0.5: pct_c=0.5: adth_k=1: k_ithr=6.145503: k1_ithr=-1: ithr_r=0: ithr_diff=1.162721: tie_brk=0: }; i_val {kwta=0: g_i=0: gp_g_i=0: g_i_orig=0: }; un_g_i {avg=0: max=0: max_i=0: }; adapt_i {avg_avg=0.5: i_kwta_pt=0: g_bar_i=1: g_bar_l=1: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][0].children[3]$186$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; LeabraLayer @[8] { name="STN"; flags=; layer_type=HIDDEN; pos {x=7: y=1: z=1: }; un_geom {x=3: y=3: n_not_xy=0: n=9: }; unit_groups=0; gp_geom {x=2: y=1: n_not_xy=0: n=2: }; gp_spc {x=0: y=0: }; act_geom {x=3: y=3: n_not_xy=0: n=9: }; projections { name=; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @[0] { name="Fm_Motor_Cortex"; from_type=CUSTOM; from=$83$; spec {type=FullPrjnSpec: spec=$152$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects[0].networks[0].specs.gp[1][3].children[6]$187$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; LeabraPrjn @[1] { name="Fm_GP_Ext"; from_type=CUSTOM; from=$86$; spec {type=UniformRndPrjnSpec: spec=.projects[0].networks[0].specs[2]$188$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$172$: }; recv_idx=1; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; netin_avg=0; netin_rel=0; avg_netin_avg=0; avg_netin_avg_sum=0; avg_netin_rel=0; avg_netin_rel_sum=0; avg_netin_n=0; trg_netin_rel=-1; }; }; send_prjns { name=; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects[0].networks[0].layers[3].projections[2]; Projection_Group @. = [1] = LeabraPrjn .projects[0].networks[0].layers[4].projections[1]; }; units { name=; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; unique_geom=0; geom {x=3: y=3: n_not_xy=0: n=9: }; units_lesioned=0; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects[0].networks[0].specs.gp[2][0].children[3].children[2]$189$: }; ext_flag=; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; output_name=; sse=0; icon_value=0; netin {avg=0.1796961: max=0.2133077: max_i=3: }; i_thrs {avg=0.8477212: max=1.099808: max_i=3: }; acts {avg=0.2072951: max=0.8850191: max_i=3: }; acts_p {avg=0.0886254: max=0.5460718: max_i=3: }; acts_m {avg=0.0886254: max=0.5460718: max_i=3: }; phase_dif_ratio=1; kwta {k=2: pct=0.2222222: pct_c=0.7777778: adth_k=1: k_ithr=1.60686: k1_ithr=1.38061: ithr_r=0.151759: ithr_diff=0: tie_brk=0: }; i_val {kwta=0: g_i=0: gp_g_i=0: g_i_orig=0: }; un_g_i {avg=1.017167: max=1.059605: max_i=0: }; adapt_i {avg_avg=0.2222222: i_kwta_pt=0.5: g_bar_i=1: g_bar_l=1: }; spec {type=LeabraLayerSpec: spec=.projects[0].networks[0].specs.gp[3][1].children[0]$190$: }; stm_gain=0.5; hard_clamped=0; dav=0; net_rescale=1; avg_netin {avg=0: max=0: max_i=-1: }; avg_netin_sum {avg=0: max=0: max_i=-1: }; avg_netin_n=0; da_updt=0; misc_iar{ }; }; }; view_objs { name=; el_typ=NetViewObj; el_def=0; }; flags=; auto_build=AUTO_BUILD; train_mode=TEST; wt_update=ON_LINE; small_batch_n=10; batch=0; epoch=0; group=0; trial=0; tick=0; cycle=77; time=0; group_name=; trial_name="1100_09_889"; output_name=; sse_unit_avg=0; sse_sqrt=0; sse=0; sum_sse=0; avg_sse=0; cnt_err_tol=0.4; cnt_err=0; cur_sum_sse=0; avg_sse_n=0; cur_cnt_err=0; train_time {name="train_time": start={usr=1455: sys=43: tot=723144884: }: end={usr=826668: sys=208224: tot=722144431: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; epoch_time {name="epoch_time": start={usr=1458: sys=43: tot=723144888: }: end={usr=826668: sys=208224: tot=722144431: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; trial_time {name="trial_time": start={usr=0: sys=0: tot=0: }: end={usr=0: sys=0: tot=0: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; settle_time {name="settle_time": start={usr=0: sys=0: tot=0: }: end={usr=0: sys=0: tot=0: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; cycle_time {name="cycle_time": start={usr=0: sys=0: tot=0: }: end={usr=0: sys=0: tot=0: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; wt_sync_time {name="wt_sync_time": start={usr=0: sys=0: tot=0: }: end={usr=0: sys=0: tot=0: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; misc_time {name="misc_time": start={usr=0: sys=0: tot=0: }: end={usr=0: sys=0: tot=0: }: used={usr=0: sys=0: tot=0: }: s_used=0: n_used=0: }; dmem_sync_level=DMEM_SYNC_NETWORK; dmem_nprocs=1; usr1_save_fmt=FULL_NET; wt_save_fmt=TEXT; lay_layout=THREE_D; n_units=88; n_cons=1427; max_size {x=14: y=9: z=3: }; font_sizes { net_name=0.05; net_vals=0.05; layer=0.04; layer_vals=0.03; prjn=0.01; unit=0.02; un_nm_len=3; }; view_params { xy_square=0; unit_spacing=0.05; prjn_disp=L_R_F; prjn_name=0; prjn_width=0.002; prjn_trans=0.5; lay_trans=0.5; unit_trans=0.6; }; phase_order=MINUS_PLUS; no_plus_test=1; trial_init=DECAY_STATE; sequence_init=DO_NOTHING; first_plus_dwt=ONLY_FIRST_DWT; phase=MINUS_PHASE; nothing_phase=0; phase_no=0; phase_max=1; cycle_max=100; min_cycles=15; min_cycles_phase2=35; minus_cycles=0; avg_cycles=0; avg_cycles_sum=0; avg_cycles_n=0; netin_mod=1; send_delta=0; send_pct=0.3174603; send_pct_n=20; send_pct_tot=63; avg_send_pct=0; avg_send_pct_sum=28.28574; avg_send_pct_n=78; maxda_stopcrit=0.005; maxda=0.04341922; trg_max_act_stopcrit=1; trg_max_act=0.991843; ext_rew=0; avg_ext_rew=0; avg_ext_rew_sum=0; avg_ext_rew_n=0; }; }; };