// ta_Dump File v3.0 -- code v7.1.0.0 rev10018 LeabraProject .projects["BG_9060_4010"] { Doc_Group @.docs = [1] { taDoc @["ProjectDocs"] { UserDataItem_List @*(.user_data_) { UserDataItem @["user_pinned"] { }; }; }; }; Wizard_Group @.wizards = [1] { LeabraWizard @["LeabraWizard_2"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NO_CLIP"] { }; }; }; }; ControlPanel_Group @.ctrl_panels = [2] { ControlPanel @["MasterControl"] { UserDataItem_List @*(.user_data_) { UserDataItem @["user_pinned"] { }; }; EditMbrItem_Group @.mbrs = [7] { EditMbrItem @[0] { }; EditMbrItem @[1] { }; EditMbrItem @[2] { }; EditMbrItem @[3] { }; EditMbrItem @[4] { }; EditMbrItem @[5] { }; EditMbrItem @[6] { }; }; EditMthItem_Group @.mths = [4] { EditMthItem @[0] { }; EditMthItem @[1] { }; EditMthItem @[2] { }; EditMthItem @[3] { }; }; }; ClusterRun @["ClusterRun"] { UserDataItem_List @*(.user_data_) { UserDataItem @["user_pinned"] { }; }; EditMbrItem_Group @.mbrs = [0] { }; EditMthItem_Group @.mths = [0] { }; DataTableCols @.jobs_running.data = [33] { String_Data @["cluster"] { }; String_Data @["user"] { }; String_Data @["tag"] { }; String_Data @["status"] { }; String_Data @["label"] { }; String_Data @["notes"] { }; String_Data @["filename"] { }; String_Data @["params"] { }; String_Data @["status_info"] { }; String_Data @["submit_time"] { }; String_Data @["start_time"] { }; String_Data @["end_time"] { }; String_Data @["running_time"] { }; String_Data @["job_no"] { }; String_Data @["job_out"] { }; String_Data @["job_out_file"] { }; String_Data @["dat_files"] { }; String_Data @["other_files"] { }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["command"] { }; String_Data @["repo_url"] { }; String_Data @["queue"] { }; String_Data @["run_time"] { }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["submit_svn"] { }; String_Data @["submit_job"] { }; String_Data @["done_svn"] { }; String_Data @["last_svn"] { }; }; DataOpList @.jobs_running.last_sort_spec.ops = [0] { }; DataTableCell_List @.jobs_running.control_panel_cells = [0] { }; DataTableCols @.jobs_done.data = [33] { String_Data @["cluster"] { }; String_Data @["user"] { }; String_Data @["tag"] { }; String_Data @["status"] { }; String_Data @["label"] { }; String_Data @["notes"] { }; String_Data @["filename"] { }; String_Data @["params"] { }; String_Data @["status_info"] { }; String_Data @["submit_time"] { }; String_Data @["start_time"] { }; String_Data @["end_time"] { }; String_Data @["running_time"] { }; String_Data @["job_no"] { }; String_Data @["job_out"] { }; String_Data @["job_out_file"] { }; String_Data @["dat_files"] { }; String_Data @["other_files"] { }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["command"] { }; String_Data @["repo_url"] { }; String_Data @["queue"] { }; String_Data @["run_time"] { }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["submit_svn"] { }; String_Data @["submit_job"] { }; String_Data @["done_svn"] { }; String_Data @["last_svn"] { }; }; DataOpList @.jobs_done.last_sort_spec.ops = [0] { }; DataTableCell_List @.jobs_done.control_panel_cells = [0] { }; DataTableCols @.jobs_deleted.data = [33] { String_Data @["cluster"] { }; String_Data @["user"] { }; String_Data @["tag"] { }; String_Data @["status"] { }; String_Data @["label"] { }; String_Data @["notes"] { }; String_Data @["filename"] { }; String_Data @["params"] { }; String_Data @["status_info"] { }; String_Data @["submit_time"] { }; String_Data @["start_time"] { }; String_Data @["end_time"] { }; String_Data @["running_time"] { }; String_Data @["job_no"] { }; String_Data @["job_out"] { }; String_Data @["job_out_file"] { }; String_Data @["dat_files"] { }; String_Data @["other_files"] { }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["command"] { }; String_Data @["repo_url"] { }; String_Data @["queue"] { }; String_Data @["run_time"] { }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["submit_svn"] { }; String_Data @["submit_job"] { }; String_Data @["done_svn"] { }; String_Data @["last_svn"] { }; }; DataOpList @.jobs_deleted.last_sort_spec.ops = [0] { }; DataTableCell_List @.jobs_deleted.control_panel_cells = [0] { }; DataTableCols @.jobs_archive.data = [33] { String_Data @["cluster"] { }; String_Data @["user"] { }; String_Data @["tag"] { }; String_Data @["status"] { }; String_Data @["label"] { }; String_Data @["notes"] { }; String_Data @["filename"] { }; String_Data @["params"] { }; String_Data @["status_info"] { }; String_Data @["submit_time"] { }; String_Data @["start_time"] { }; String_Data @["end_time"] { }; String_Data @["running_time"] { }; String_Data @["job_no"] { }; String_Data @["job_out"] { }; String_Data @["job_out_file"] { }; String_Data @["dat_files"] { }; String_Data @["other_files"] { }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["command"] { }; String_Data @["repo_url"] { }; String_Data @["queue"] { }; String_Data @["run_time"] { }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; }; }; String_Data @["submit_svn"] { }; String_Data @["submit_job"] { }; String_Data @["done_svn"] { }; String_Data @["last_svn"] { }; }; DataOpList @.jobs_archive.last_sort_spec.ops = [0] { }; DataTableCell_List @.jobs_archive.control_panel_cells = [0] { }; DataTableCols @.file_list.data = [11] { String_Data @["cluster"] { }; String_Data @["user"] { }; String_Data @["file_name"] { }; String_Data @["tag"] { }; String_Data @["size"] { }; String_Data @["kind"] { }; String_Data @["date_modified"] { }; String_Data @["date_created"] { }; String_Data @["svn_file_path"] { }; String_Data @["proj_file_path"] { }; String_Data @["file_path"] { }; }; DataOpList @.file_list.last_sort_spec.ops = [0] { }; DataTableCell_List @.file_list.control_panel_cells = [0] { }; DataTableCols @.cluster_info.data = [6] { String_Data @["queue"] { }; String_Data @["job_no"] { }; String_Data @["user"] { }; String_Data @["state"] { }; String_Data @["procs"] { }; String_Data @["start_time"] { }; }; DataOpList @.cluster_info.last_sort_spec.ops = [0] { }; DataTableCell_List @.cluster_info.control_panel_cells = [0] { }; ParamSearchAlgo_List @.search_algos = [0] { }; }; }; ParamSet_Group @.param_sets = [0] { }; DataTable_Group @.data = [0] { DataTable_Group @.gp["InputData"] = [2] { DataTable @["StdInputData"] { DataTableCols @.data = [8] { String_Data @["Name"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Motor_Cortex"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Output"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Input"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Context"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["SNc2"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["SNc"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["Name_No"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; DataTable @["TransferInputData"] { DataTableCols @.data = [8] { String_Data @["Name"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Motor_Cortex"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Output"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Input"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Context"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["SNc2"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["SNc"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["Name_No"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; }; DataTable_Group @.gp["OutputData"] = [3] { DataTable @["TrialOutputData"] { DataTableCols @.data = [8] { int_Data @["batch"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["epoch"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; String_Data @["trial_name"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["minus_cycles"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["r1"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["r2"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["r3"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["r4"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; DataTable @["EpochOutputData"] { DataTableCols @.data = [6] { int_Data @["batch"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["epoch"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_sse"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["cnt_err"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_ext_rew"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_cycles"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; DataTable @["CycleOutputData"] { DataTableCols @.data = [17] { int_Data @["batch"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["epoch"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["trial"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; String_Data @["trial_name"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; String_Data @["group_name"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["phase_no"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["cycle"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["sse"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["ext_rew"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["STN_acts_avg"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["PMC_acts_avg"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Thalam_acts_avg"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["GP_Int_acts_avg"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["GP_Ext_acts_avg"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Output_act"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["Output_units_0_act"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["SNc_acts_avg"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; }; DataTable_Group @.gp["AnalysisData"] = [4] { DataTable @["TrialOutputData_Group"] { DataTableCols @.data = [6] { String_Data @["trial_name_group"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["batch_group"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r1_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r2_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r3_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r4_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; DataTable @["trl_group"] { DataTableCols @.data = [10] { String_Data @["trial_name_group"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; int_Data @["epoch_group"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r1_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r2_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r3_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r4_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["minus_cycles_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r1_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r3_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["minus_cycles_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; DataTable @["Stats"] { DataTableCols @.data = [9] { String_Data @["trial_name_group_group"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r1_mean_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r1_mean_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r2_mean_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r2_mean_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r3_mean_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r3_mean_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r4_mean_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["r4_mean_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; DataTable @["EpochOutputData_Group"] { DataTableCols @.data = [11] { int_Data @["epoch_group"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["batch_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["batch_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["NARROW"] { }; UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_sse_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_sse_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["cnt_err_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["cnt_err_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_ext_rew_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_ext_rew_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_cycles_mean"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; float_Data @["avg_cycles_sem"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_wd"] { }; }; }; }; DataOpList @.last_sort_spec.ops = [0] { }; DataTableCell_List @.control_panel_cells = [0] { }; }; }; }; Program_TopGroup @.programs = [0] { Program_Group @.gp["LeabraAll_Std"] = [13] { Program @["LeabraBatch"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [3] { ProgVar @["FlatNetwork"] { }; ProgVar @["input_data"] { }; ProgVar @["NLoops"] { }; }; ProgVar_List @.vars = [10] { ProgVar @["network"] { }; ProgVar @["batch"] { }; ProgVar @["meds"] { }; ProgVar @["DA_dip_val"] { }; ProgVar @["trl_out_data"] { }; ProgVar @["trl_group"] { }; ProgVar @["trl_group2"] { }; ProgVar @["stats"] { }; ProgVar @["max_batch"] { }; ProgVar @["num_intact_snc_units"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [6] { NetCounterInit @[0] { }; If @[1] { ProgEl_List @.true_code = [2] { AssignExpr @[0] { }; OtherProgramVar @[1] { }; }; }; Else @[2] { ProgEl_List @.else_code = [2] { AssignExpr @[0] { }; OtherProgramVar @[1] { }; }; }; ResetDataRows @[3] { }; ResetDataRows @[4] { }; ResetDataRows @[5] { }; }; ProgEl_List @.prog_code = [6] { NetCounterInit @[0] { }; WhileLoop @[1] { ProgEl_List @.loop_code = [2] { ProgramCall @[0] { ProgArg_List @.prog_args = [4] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; ProgArg @[3] { }; }; }; NetCounterIncr @[1] { }; }; }; DataSelectRowsProg @[2] { DataOpList @.select_spec.ops = [1] { DataSelectEl @["minus_cycles_LESSTHAN__0"] { }; }; }; DataGroupProg @[3] { DataOpList @.group_spec.ops = [6] { DataGroupEl @["trial_name_GROUP_0"] { }; DataGroupEl @["batch_GROUP_1"] { }; DataGroupEl @["r1_MEAN_2"] { }; DataGroupEl @["r2_MEAN_3"] { }; DataGroupEl @["r3_MEAN_4"] { }; DataGroupEl @["r4_MEAN_5"] { }; }; }; DataGroupProg @[4] { DataOpList @.group_spec.ops = [9] { DataGroupEl @["trial_name_group_GROUP_0"] { }; DataGroupEl @["r1_mean_MEAN_1"] { }; DataGroupEl @["r1_mean_SEM_2"] { }; DataGroupEl @["r2_mean_MEAN_3"] { }; DataGroupEl @["r2_mean_SEM_4"] { }; DataGroupEl @["r3_mean_MEAN_5"] { }; DataGroupEl @["r3_mean_SEM_6"] { }; DataGroupEl @["r4_mean_MEAN_7"] { }; DataGroupEl @["r4_mean_SEM_8"] { }; }; }; DataGroupProg @[5] { DataOpList @.group_spec.ops = [10] { DataGroupEl @["trial_name_GROUP_0"] { }; DataGroupEl @["epoch_GROUP_1"] { }; DataGroupEl @["r1_MEAN_2"] { }; DataGroupEl @["r2_MEAN_3"] { }; DataGroupEl @["r3_MEAN_4"] { }; DataGroupEl @["r4_MEAN_5"] { }; DataGroupEl @["minus_cycles_MEAN_6"] { }; DataGroupEl @["r1_SEM_7"] { }; DataGroupEl @["r3_SEM_8"] { }; DataGroupEl @["minus_cycles_SEM_9"] { }; }; }; }; }; Program @["LeabraTrain"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [1] { RndSeed @["rnd_seed"] { }; }; ProgType_List @.types = [1] { DynEnumType @["RndInitType"] { DynEnumItem_List @.enums = [2] { DynEnumItem @["OLD_SEED"] { }; DynEnumItem @["NEW_SEED"] { }; }; }; }; ProgVar_List @.args = [4] { ProgVar @["network"] { }; ProgVar @["input_data"] { }; ProgVar @["FlatNetwork"] { }; ProgVar @["no_prompts"] { }; }; ProgVar_List @.vars = [23] { ProgVar @["max_epoch"] { }; ProgVar @["max_epoch_reel"] { }; ProgVar @["train_mode"] { }; ProgVar @["test_mode"] { }; ProgVar @["rnd_init"] { }; ProgVar @["epoch"] { }; ProgVar @["inside_epoch"] { }; ProgVar @["err_stopcrit"] { }; ProgVar @["rnd_seed"] { }; ProgVar @["Test"] { }; ProgVar @["train_timer"] { }; ProgVar @["j"] { }; ProgVar @["i"] { }; ProgVar @["periode"] { }; ProgVar @["num_intact_snc_units"] { }; ProgVar @["snc_size"] { }; ProgVar @["SNc"] { }; ProgVar @["StdInputData"] { }; ProgVar @["SuccessiveCor"] { }; ProgVar @["d2"] { }; ProgVar @["d1"] { }; ProgVar @["inGo"] { }; ProgVar @["inNoGO"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [7] { AssignExpr @[0] { }; MethodCall @[1] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; AssignExpr @[2] { }; NetCounterInit @[3] { }; If @[4] { ProgEl_List @.true_code = [1] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; }; }; Else @[5] { ProgEl_List @.else_code = [1] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; }; }; IfGuiPrompt @[6] { ProgEl_List @.yes_code = [2] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; PrintExpr @[1] { }; }; }; }; ProgEl_List @.prog_code = [21] { LocalVars @[0] { ProgVar_List @.local_vars = [5] { ProgVar @["d2_acq"] { }; ProgVar @["d1_acq"] { }; ProgVar @["d2_perf"] { }; ProgVar @["d1_perf"] { }; ProgVar @["d2_acq_4"] { }; }; }; AssignExpr @[1] { }; MethodCall @[2] { ProgArg_List @.meth_args = [1] { ProgArg @[0] { }; }; }; NetCounterInit @[3] { }; MemberAssign @[4] { }; If @[5] { ProgEl_List @.true_code = [2] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; PrintExpr @[1] { }; }; }; AssignExpr @[6] { }; OtherProgramVar @[7] { }; OtherProgramVar @[8] { }; AssignExpr @[9] { }; AssignExpr @[10] { }; MemberAssign @[11] { }; MemberAssign @[12] { }; MemberAssign @[13] { }; MemberAssign @[14] { }; WhileLoop @[15] { ProgEl_List @.loop_code = [7] { MemberAssign @[0] { }; AssignExpr @[1] { }; ProgramCall @[2] { ProgArg_List @.prog_args = [4] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; ProgArg @[3] { }; }; }; NetCounterIncr @[3] { }; If @[4] { ProgEl_List @.true_code = [1] { AssignExpr @[0] { }; }; }; Else @[5] { ProgEl_List @.else_code = [1] { AssignExpr @[0] { }; }; }; MemberAssign @[6] { }; }; }; MemberAssign @[16] { }; MemberAssign @[17] { }; WhileLoop @[18] { ProgEl_List @.loop_code = [5] { MemberAssign @[0] { }; AssignExpr @[1] { }; ProgramCall @[2] { ProgArg_List @.prog_args = [4] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; ProgArg @[3] { }; }; }; NetCounterIncr @[3] { }; MemberAssign @[4] { }; }; }; OtherProgramVar @[19] { }; MethodCall @[20] { ProgArg_List @.meth_args = [0] { }; }; }; }; Program @["LeabraEpoch"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [4] { ProgVar @["network"] { }; ProgVar @["periode"] { }; ProgVar @["FlatNetwork"] { }; ProgVar @["input_data"] { }; }; ProgVar_List @.vars = [6] { ProgVar @["data_loop_order"] { }; ProgVar @["trial"] { }; ProgVar @["trial_mon_data"] { }; ProgVar @["epoch_timer"] { }; ProgVar @["data_loop_index"] { }; ProgVar @["NLoops"] { }; }; Function_List @.functions = [0] { }; 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] { ProgArg_List @.meth_args = [0] { }; }; NetDataLoop @[4] { ProgEl_List @.loop_code = [2] { ProgramCall @[0] { ProgArg_List @.prog_args = [3] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; }; }; If @[1] { ProgEl_List @.true_code = [1] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; }; }; }; }; If @[5] { ProgEl_List @.true_code = [1] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; }; }; MethodCall @[6] { ProgArg_List @.meth_args = [0] { }; }; ProgramCall @[7] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[8] { ProgArg_List @.meth_args = [0] { }; }; }; }; Program @["LeabraTrial"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [3] { ProgVar @["network"] { }; ProgVar @["input_data"] { }; ProgVar @["FlatNetwork"] { }; }; ProgVar_List @.vars = [19] { ProgVar @["phase_no"] { }; ProgVar @["update_net_view"] { }; ProgVar @["NLoops"] { }; ProgVar @["actM0"] { }; ProgVar @["Motor_Cortex"] { }; ProgVar @["actM1"] { }; ProgVar @["actM2"] { }; ProgVar @["actM3"] { }; ProgVar @["actM4"] { }; ProgVar @["actM5"] { }; ProgVar @["actM6"] { }; ProgVar @["actM7"] { }; ProgVar @["action"] { }; ProgVar @["r1"] { }; ProgVar @["r2"] { }; ProgVar @["r3"] { }; ProgVar @["r4"] { }; ProgVar @["Output"] { }; ProgVar @["bias"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [20] { NetCounterInit @[0] { }; MethodCall @[1] { ProgArg_List @.meth_args = [0] { }; }; WhileLoop @[2] { ProgEl_List @.loop_code = [3] { ProgramCall @[0] { ProgArg_List @.prog_args = [3] { ProgArg @[0] { }; ProgArg @[1] { }; ProgArg @[2] { }; }; }; NetCounterIncr @[1] { }; MethodCall @[2] { ProgArg_List @.meth_args = [0] { }; }; }; }; AssignExpr @[3] { }; AssignExpr @[4] { }; AssignExpr @[5] { }; AssignExpr @[6] { }; AssignExpr @[7] { }; AssignExpr @[8] { }; AssignExpr @[9] { }; AssignExpr @[10] { }; AssignExpr @[11] { }; AssignExpr @[12] { }; AssignExpr @[13] { }; AssignExpr @[14] { }; AssignExpr @[15] { }; If @[16] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; }; }; Else @[1] { ProgEl_List @.else_code = [2] { If @[0] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; }; }; Else @[1] { ProgEl_List @.else_code = [2] { If @[0] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; }; }; Else @[1] { ProgEl_List @.else_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; }; }; }; }; }; }; }; }; MethodCall @[17] { ProgArg_List @.meth_args = [0] { }; }; ProgramCall @[18] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; NetUpdateView @[19] { }; }; }; Program @["LeabraSettle"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [3] { ProgVar @["network"] { }; ProgVar @["FlatNetwork"] { }; ProgVar @["input_data"] { }; }; ProgVar_List @.vars = [6] { ProgVar @["cycle"] { }; ProgVar @["min_cycles"] { }; ProgVar @["update_net_view"] { }; ProgVar @["Output"] { }; ProgVar @["Thal"] { }; ProgVar @["NLoops"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [1] { NetCounterInit @[0] { }; }; ProgEl_List @.prog_code = [16] { NetCounterInit @[0] { }; AssignExpr @[1] { }; AssignExpr @[2] { }; MethodCall @[3] { ProgArg_List @.meth_args = [0] { }; }; ProgramCall @[4] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; ProgramCall @[5] { ProgArg_List @.prog_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; If @[6] { ProgEl_List @.true_code = [1] { MemberAssign @[0] { }; }; }; Else @[7] { ProgEl_List @.else_code = [1] { MemberAssign @[0] { }; }; }; MethodCall @[8] { ProgArg_List @.meth_args = [0] { }; }; If @[9] { ProgEl_List @.true_code = [1] { AssignExpr @[0] { }; }; }; Else @[10] { ProgEl_List @.else_code = [1] { AssignExpr @[0] { }; }; }; WhileLoop @[11] { ProgEl_List @.loop_code = [7] { ProgramCall @[0] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; NetCounterIncr @[1] { }; IfContinue @[2] { }; IfBreak @[3] { }; If @[4] { ProgEl_List @.true_code = [2] { PrintExpr @[0] { }; PrintExpr @[1] { }; }; }; IfBreak @[5] { }; IfBreak @[6] { }; }; }; MethodCall @[12] { ProgArg_List @.meth_args = [0] { }; }; If @[13] { ProgEl_List @.true_code = [1] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; }; }; If @[14] { ProgEl_List @.true_code = [1] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; }; }; NetUpdateView @[15] { }; }; }; Program @["LeabraCycle"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [1] { ProgVar @["network"] { }; }; ProgVar_List @.vars = [2] { ProgVar @["update_net_view"] { }; ProgVar @["i"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [0] { }; ProgEl_List @.prog_code = [5] { MethodCall @[0] { ProgArg_List @.meth_args = [0] { }; }; NetUpdateView @[1] { }; If @[2] { ProgEl_List @.true_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [2] { MemberAssign @[0] { }; PrintExpr @[1] { }; }; }; }; }; Else @[3] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [0] { }; }; }; }; ProgramCall @[4] { ProgArg_List @.prog_args = [1] { ProgArg @[0] { }; }; }; }; }; Program @["ApplyInput1"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [1] { LayerWriter @["LayerWriter_0"] { LayerDataEl_List @.layer_data = [6] { LayerWriterEl @[0] { }; LayerWriterEl @[1] { }; LayerWriterEl @[2] { }; LayerWriterEl @[3] { }; LayerWriterEl @[4] { }; LayerWriterEl @[5] { }; }; }; }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [2] { ProgVar @["network"] { }; ProgVar @["input_data"] { }; }; ProgVar_List @.vars = [1] { ProgVar @["LayerWriter_0"] { }; }; Function_List @.functions = [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 = [2] { MethodCall @[0] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; MethodCall @[1] { ProgArg_List @.meth_args = [0] { }; }; }; }; Program @["LeabraTrialMonitor"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [1] { NetMonitor @["trial_netmon"] { NetMonItem_List @.items = [8] { NetMonItem @["batch"] { }; NetMonItem @["epoch"] { }; NetMonItem @["trial_name"] { }; NetMonItem @["minus_cycles"] { }; NetMonItem @["r1"] { }; NetMonItem @["r2"] { }; NetMonItem @["r3"] { }; NetMonItem @["r4"] { }; }; }; }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [1] { ProgVar @["network"] { }; }; ProgVar_List @.vars = [2] { ProgVar @["trial_mon_data"] { }; ProgVar @["trial_netmon"] { }; }; Function_List @.functions = [0] { }; 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] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[1] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[2] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[3] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; }; }; Program @["Cycle_Monitor"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [1] { NetMonitor @["cycle_netmon"] { NetMonItem_List @.items = [17] { NetMonItem @["batch"] { }; NetMonItem @["epoch"] { }; NetMonItem @["trial"] { }; NetMonItem @["trial_name"] { }; NetMonItem @["group_name"] { }; NetMonItem @["phase_no"] { }; NetMonItem @["cycle"] { }; NetMonItem @["sse"] { }; NetMonItem @["ext_rew"] { }; NetMonItem @["STN_acts_avg"] { }; NetMonItem @["Motor__acts_avg"] { }; NetMonItem @["Thalam_acts_avg"] { }; NetMonItem @["GP_Int_acts_avg"] { }; NetMonItem @["GP_Ext_acts_avg"] { }; NetMonItem @["Output_act"] { }; NetMonItem @["Output_units_0_act"] { }; NetMonItem @["SNc_acts_avg"] { }; }; }; }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [1] { ProgVar @["network"] { }; }; ProgVar_List @.vars = [2] { ProgVar @["cycle_mon_data"] { }; ProgVar @["cycle_netmon"] { }; }; Function_List @.functions = [0] { }; 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] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[2] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[3] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[4] { ProgArg_List @.meth_args = [2] { ProgArg @[0] { }; ProgArg @[1] { }; }; }; }; }; Program @["LeabraEpochMonitor"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [1] { NetMonitor @["epoch_netmon"] { NetMonItem_List @.items = [6] { NetMonItem @["batch"] { }; NetMonItem @["epoch"] { }; NetMonItem @["avg_sse"] { }; NetMonItem @["cnt_err"] { }; NetMonItem @["avg_ext_rew"] { }; NetMonItem @["avg_cycles"] { }; }; }; }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [2] { ProgVar @["network"] { }; ProgVar @["FlatNetwork"] { }; }; ProgVar_List @.vars = [3] { ProgVar @["epoch_mon_data"] { }; ProgVar @["epoch_netmon"] { }; ProgVar @["epoch_timer"] { }; }; Function_List @.functions = [0] { }; 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] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[1] { ProgArg_List @.meth_args = [0] { }; }; AssignExpr @[2] { }; MethodCall @[3] { ProgArg_List @.meth_args = [0] { }; }; }; }; Program @["LeabraEpochMonitor_10"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [1] { NetMonitor @["epoch_netmon"] { NetMonItem_List @.items = [6] { NetMonItem @["batch"] { }; NetMonItem @["epoch"] { }; NetMonItem @["avg_sse"] { }; NetMonItem @["cnt_err"] { }; NetMonItem @["avg_ext_rew"] { }; NetMonItem @["avg_cycles"] { }; }; }; }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [2] { ProgVar @["network"] { }; ProgVar @["FlatNetwork"] { }; }; ProgVar_List @.vars = [3] { ProgVar @["epoch_mon_data"] { }; ProgVar @["epoch_netmon"] { }; ProgVar @["epoch_timer"] { }; }; Function_List @.functions = [0] { }; 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] { ProgArg_List @.meth_args = [0] { }; }; MethodCall @[1] { ProgArg_List @.meth_args = [0] { }; }; AssignExpr @[2] { }; MethodCall @[3] { ProgArg_List @.meth_args = [0] { }; }; }; }; Program @["SaveWeights"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [1] { ProgVar @["network"] { }; }; ProgVar_List @.vars = [6] { ProgVar @["tag"] { }; ProgVar @["wts_subdir"] { }; ProgVar @["fname"] { }; ProgVar @["epoch_str"] { }; ProgVar @["batch_str"] { }; ProgVar @["final_tag"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [0] { }; 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 @["DA_Rew_Punish"] { UserDataItem_List @*(.user_data_) { UserData_DocLink @["DocLink"] { }; }; ProgObjList @.objs = [0] { }; ProgType_List @.types = [0] { }; ProgVar_List @.args = [2] { ProgVar @["network"] { }; ProgVar @["input_data"] { }; }; ProgVar_List @.vars = [28] { ProgVar @["num_intact_snc_units"] { }; ProgVar @["snc_size"] { }; ProgVar @["k"] { }; ProgVar @["sse"] { }; ProgVar @["bias"] { }; ProgVar @["act0"] { }; ProgVar @["act1"] { }; ProgVar @["actM0"] { }; ProgVar @["actM1"] { }; ProgVar @["actM2"] { }; ProgVar @["actM3"] { }; ProgVar @["actM4"] { }; ProgVar @["actM5"] { }; ProgVar @["actM6"] { }; ProgVar @["actM7"] { }; ProgVar @["SNc"] { }; ProgVar @["Output"] { }; ProgVar @["Motor_Cortex"] { }; ProgVar @["i"] { }; ProgVar @["TS"] { }; ProgVar @["action"] { }; ProgVar @["tonic_DA"] { }; ProgVar @["op_sse"] { }; ProgVar @["DA_dip_val"] { }; ProgVar @["DA_burst_val"] { }; ProgVar @["biasValue"] { }; ProgVar @["biasInHid"] { }; ProgVar @["cycle"] { }; }; Function_List @.functions = [0] { }; ProgEl_List @.init_code = [0] { }; ProgEl_List @.prog_code = [8] { AssignExpr @[0] { }; AssignExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; AssignExpr @[4] { }; AssignExpr @[5] { }; If @[6] { ProgEl_List @.true_code = [21] { AssignExpr @[0] { }; AssignExpr @[1] { }; AssignExpr @[2] { }; AssignExpr @[3] { }; AssignExpr @[4] { }; AssignExpr @[5] { }; AssignExpr @[6] { }; AssignExpr @[7] { }; MemberAssign @[8] { }; MemberAssign @[9] { }; MemberAssign @[10] { }; MemberAssign @[11] { }; MemberAssign @[12] { }; MemberAssign @[13] { }; MemberAssign @[14] { }; MemberAssign @[15] { }; ForLoop @[16] { ProgEl_List @.loop_code = [1] { CssExpr @[0] { }; }; }; AssignExpr @[17] { }; If @[18] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [3] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; }; }; Else @[1] { ProgEl_List @.else_code = [2] { If @[0] { ProgEl_List @.true_code = [3] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; }; }; Else @[1] { ProgEl_List @.else_code = [2] { If @[0] { ProgEl_List @.true_code = [3] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; }; }; Else @[1] { ProgEl_List @.else_code = [3] { CssExpr @[0] { }; CssExpr @[1] { }; AssignExpr @[2] { }; }; }; }; }; }; }; }; }; If @[19] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [2] { If @[0] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; }; }; Else @[20] { ProgEl_List @.else_code = [1] { If @[0] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [2] { If @[0] { ProgEl_List @.true_code = [2] { If @[0] { ProgEl_List @.true_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; Else @[1] { ProgEl_List @.else_code = [1] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; }; }; }; }; }; }; Else @[7] { ProgEl_List @.else_code = [6] { ForLoop @[0] { ProgEl_List @.loop_code = [1] { CssExpr @[0] { }; }; }; If @[1] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; CssExpr @[2] { }; CssExpr @[3] { }; }; }; If @[2] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; CssExpr @[2] { }; CssExpr @[3] { }; }; }; If @[3] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; If @[2] { ProgEl_List @.true_code = [2] { CssExpr @[0] { }; CssExpr @[1] { }; }; }; Else @[3] { ProgEl_List @.else_code = [2] { CssExpr @[0] { }; CssExpr @[1] { }; }; }; }; }; If @[4] { ProgEl_List @.true_code = [4] { CssExpr @[0] { }; CssExpr @[1] { }; If @[2] { ProgEl_List @.true_code = [2] { CssExpr @[0] { }; CssExpr @[1] { }; }; }; Else @[3] { ProgEl_List @.else_code = [2] { CssExpr @[0] { }; CssExpr @[1] { }; }; }; }; }; ForLoop @[5] { ProgEl_List @.loop_code = [1] { MemberAssign @[0] { }; }; }; }; }; }; }; }; }; taViewer_List @.viewers = [1] { MainWindowViewer @["Browser"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_win_lft"] { }; UserDataItem @["view_win_top"] { }; UserDataItem @["view_win_wd"] { }; UserDataItem @["view_win_ht"] { }; UserDataItem @["view_win_iconified"] { }; UserDataItem @["view_splitter_state"] { }; }; ToolBar_List @.toolbars = [1] { ToolBar @["Application"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_win_visible"] { }; }; }; }; FrameViewer_List @.frames = [3] { BrowseViewerTaBase @["Navigator"] { }; PanelViewer @["Editor"] { }; T3PanelViewer @["T3Frames"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_panel_selected"] { }; }; T3Panel_List @.panels = [3] { T3Panel @["BGLoop1"] { T3DataView_List @.root_view.children = [1] { NetView @["BG_4s_View"] { T3Annotation_List @.annotations = [0] { }; T3DataView_List @.annote_children = [0] { }; ScaleRange_List @.scale_ranges = [12] { ScaleRange @[0] { }; ScaleRange @[1] { }; ScaleRange @[2] { }; ScaleRange @[3] { }; ScaleRange @[4] { }; ScaleRange @[5] { }; ScaleRange @[6] { }; ScaleRange @[7] { }; ScaleRange @[8] { }; ScaleRange @[9] { }; ScaleRange @[10] { }; ScaleRange @[11] { }; }; }; }; T3SavedView_List @.saved_views = [10] { T3SavedView @["Vw_0"] { }; T3SavedView @["Vw_1"] { }; T3SavedView @["Vw_2"] { }; T3SavedView @["Vw_3"] { }; T3SavedView @["Vw_4"] { }; T3SavedView @["Vw_5"] { }; T3SavedView @["Vw_6"] { }; T3SavedView @["Vw_7"] { }; T3SavedView @["Vw_8"] { }; T3SavedView @["Vw_9"] { }; }; }; T3Panel @["Stats"] { T3DataView_List @.root_view.children = [1] { GraphTableView @["Stats_Graph"] { T3DataView_List @.children = [9] { GraphColView @["trial_name_group_group"] { }; GraphColView @["r1_mean_mean"] { }; GraphColView @["r1_mean_sem"] { }; GraphColView @["r2_mean_mean"] { }; GraphColView @["r2_mean_sem"] { }; GraphColView @["r3_mean_mean"] { }; GraphColView @["r3_mean_sem"] { }; GraphColView @["r4_mean_mean"] { }; GraphColView @["r4_mean_sem"] { }; }; T3Annotation_List @.annotations = [0] { }; T3DataView_List @.annote_children = [0] { }; GraphPlotView_List @.plots = [16] { GraphPlotView @["Stats_Graph_plot_1"] { }; GraphPlotView @["Stats_Graph_plot_2"] { }; GraphPlotView @["Stats_Graph_plot_3"] { }; GraphPlotView @["Stats_Graph_plot_4"] { }; GraphPlotView @["Stats_Graph_plot_5"] { }; GraphPlotView @["Stats_Graph_plot_6"] { }; GraphPlotView @["Stats_Graph_plot_7"] { }; GraphPlotView @["Stats_Graph_plot_8"] { }; GraphPlotView @["Stats_Graph_plot_9"] { }; GraphPlotView @["Stats_Graph_plot_10"] { }; GraphPlotView @["Stats_Graph_plot_11"] { }; GraphPlotView @["Stats_Graph_plot_12"] { }; GraphPlotView @["Stats_Graph_plot_13"] { }; GraphPlotView @["Stats_Graph_plot_14"] { }; GraphPlotView @["Stats_Graph_plot_15"] { }; GraphPlotView @["Stats_Graph_plot_16"] { }; }; GraphPlotView_List @.errbars = [16] { GraphPlotView @["Stats_Graph_err_1"] { }; GraphPlotView @["Stats_Graph_err_2"] { }; GraphPlotView @["Stats_Graph_err_3"] { }; GraphPlotView @["Stats_Graph_err_4"] { }; GraphPlotView @["Stats_Graph_err_5"] { }; GraphPlotView @["Stats_Graph_err_6"] { }; GraphPlotView @["Stats_Graph_err_7"] { }; GraphPlotView @["Stats_Graph_err_8"] { }; GraphPlotView @["Stats_Graph_err_9"] { }; GraphPlotView @["Stats_Graph_err_10"] { }; GraphPlotView @["Stats_Graph_err_11"] { }; GraphPlotView @["Stats_Graph_err_12"] { }; GraphPlotView @["Stats_Graph_err_13"] { }; GraphPlotView @["Stats_Graph_err_14"] { }; GraphPlotView @["Stats_Graph_err_15"] { }; GraphPlotView @["Stats_Graph_err_16"] { }; }; }; }; T3SavedView_List @.saved_views = [10] { T3SavedView @["Vw_0"] { }; T3SavedView @["Vw_1"] { }; T3SavedView @["Vw_2"] { }; T3SavedView @["Vw_3"] { }; T3SavedView @["Vw_4"] { }; T3SavedView @["Vw_5"] { }; T3SavedView @["Vw_6"] { }; T3SavedView @["Vw_7"] { }; T3SavedView @["Vw_8"] { }; T3SavedView @["Vw_9"] { }; }; }; T3Panel @["trl_group"] { T3DataView_List @.root_view.children = [1] { GraphTableView @["trl_group2_Graph"] { T3DataView_List @.children = [10] { GraphColView @["trial_name_group"] { }; GraphColView @["epoch_group"] { }; GraphColView @["r1_mean"] { }; GraphColView @["r2_mean"] { }; GraphColView @["r3_mean"] { }; GraphColView @["r4_mean"] { }; GraphColView @["minus_cycles_mean"] { }; GraphColView @["r1_sem"] { }; GraphColView @["r3_sem"] { }; GraphColView @["minus_cycles_sem"] { }; }; T3Annotation_List @.annotations = [0] { }; T3DataView_List @.annote_children = [0] { }; GraphPlotView_List @.plots = [16] { GraphPlotView @["trl_group2_Graph_plot_1"] { }; GraphPlotView @["trl_group2_Graph_plot_2"] { }; GraphPlotView @["trl_group2_Graph_plot_3"] { }; GraphPlotView @["trl_group2_Graph_plot_4"] { }; GraphPlotView @["trl_group2_Graph_plot_5"] { }; GraphPlotView @["trl_group2_Graph_plot_6"] { }; GraphPlotView @["trl_group2_Graph_plot_7"] { }; GraphPlotView @["trl_group2_Graph_plot_8"] { }; GraphPlotView @["trl_group2_Graph_plot_9"] { }; GraphPlotView @["trl_group2_Graph_plot_10"] { }; GraphPlotView @["trl_group2_Graph_plot_11"] { }; GraphPlotView @["trl_group2_Graph_plot_12"] { }; GraphPlotView @["trl_group2_Graph_plot_13"] { }; GraphPlotView @["trl_group2_Graph_plot_14"] { }; GraphPlotView @["trl_group2_Graph_plot_15"] { }; GraphPlotView @["trl_group2_Graph_plot_16"] { }; }; GraphPlotView_List @.errbars = [16] { GraphPlotView @["trl_group2_Graph_err_1"] { }; GraphPlotView @["trl_group2_Graph_err_2"] { }; GraphPlotView @["trl_group2_Graph_err_3"] { }; GraphPlotView @["trl_group2_Graph_err_4"] { }; GraphPlotView @["trl_group2_Graph_err_5"] { }; GraphPlotView @["trl_group2_Graph_err_6"] { }; GraphPlotView @["trl_group2_Graph_err_7"] { }; GraphPlotView @["trl_group2_Graph_err_8"] { }; GraphPlotView @["trl_group2_Graph_err_9"] { }; GraphPlotView @["trl_group2_Graph_err_10"] { }; GraphPlotView @["trl_group2_Graph_err_11"] { }; GraphPlotView @["trl_group2_Graph_err_12"] { }; GraphPlotView @["trl_group2_Graph_err_13"] { }; GraphPlotView @["trl_group2_Graph_err_14"] { }; GraphPlotView @["trl_group2_Graph_err_15"] { }; GraphPlotView @["trl_group2_Graph_err_16"] { }; }; }; }; T3SavedView_List @.saved_views = [10] { T3SavedView @["Vw_0"] { }; T3SavedView @["Vw_1"] { }; T3SavedView @["Vw_2"] { }; T3SavedView @["Vw_3"] { }; T3SavedView @["Vw_4"] { }; T3SavedView @["Vw_5"] { }; T3SavedView @["Vw_6"] { }; T3SavedView @["Vw_7"] { }; T3SavedView @["Vw_8"] { }; T3SavedView @["Vw_9"] { }; }; }; }; }; }; DockViewer_List @.docks = [1] { ToolBoxDockViewer @["Tools"] { UserDataItem_List @*(.user_data_) { UserDataItem @["view_win_lft"] { }; UserDataItem @["view_win_top"] { }; UserDataItem @["view_win_wd"] { }; UserDataItem @["view_win_ht"] { }; UserDataItem @["view_win_iconified"] { }; UserDataItem @["view_visible"] { }; }; }; }; }; }; Network_Group @.networks = [1] { LeabraNetwork @["BG_4s"] { UserDataItem_List @*(.user_data_) { UserDataItem @["trial_cos_diff"] { }; UserDataItem @["avg_act_diff"] { }; UserDataItem @["cos_diff"] { }; UserDataItem @["cos_err"] { }; UserDataItem @["norm_err"] { }; UserDataItem @["ext_rew"] { }; UserDataItem @["maxda"] { }; UserDataItem @["minus_output_name"] { }; UserDataItem @["minus_cycles"] { }; UserDataItem @["ct_cycle"] { }; UserDataItem @["phase_no"] { }; UserDataItem @["phase"] { }; UserDataItem @["sse"] { }; UserDataItem @["output_name"] { }; UserDataItem @["trial_name"] { }; UserDataItem @["group_name"] { }; UserDataItem @["time"] { }; UserDataItem @["cycle"] { }; UserDataItem @["tick"] { }; UserDataItem @["trial"] { }; UserDataItem @["group"] { }; UserDataItem @["epoch"] { }; UserDataItem @["batch"] { }; }; BaseSpec_Group @.specs = [3] { ConSpec @["ConSpec_0"] { BaseSpec_Group @.children = [0] { }; }; UniformRndPrjnSpec @["STN_GPe_RndPrjnSpec_0"] { BaseSpec_Group @.children = [0] { }; }; UniformRndPrjnSpec @["GPe_STN_RndPrjnSpec_1"] { BaseSpec_Group @.children = [0] { }; }; BaseSpec_Group @.gp["LeabraPrjns"] = [20] { FullPrjnSpec @["FullPrjnSpec_0"] { BaseSpec_Group @.children = [0] { }; }; OneToOnePrjnSpec @["OneToOne"] { BaseSpec_Group @.children = [0] { }; }; TesselPrjnSpec @["Striatum_GPext"] { BaseSpec_Group @.children = [1] { TesselPrjnSpec @["PFC_Act_Deep"] { BaseSpec_Group @.children = [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 @["nogo_nogo"] { BaseSpec_Group @.children = [1] { TesselPrjnSpec @["PFC_Act_Deep"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [27] { 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 @[18] { }; TessEl @[19] { }; TessEl @[20] { }; TessEl @[21] { }; TessEl @[22] { }; TessEl @[23] { }; TessEl @[24] { }; TessEl @[25] { }; TessEl @[26] { }; }; }; }; TessEl_List @.send_offs = [27] { 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 @[18] { }; TessEl @[19] { }; TessEl @[20] { }; TessEl @[21] { }; TessEl @[22] { }; TessEl @[23] { }; TessEl @[24] { }; TessEl @[25] { }; TessEl @[26] { }; }; }; TesselPrjnSpec @["dMatrosomesGP"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [9] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; TessEl @[6] { }; TessEl @[7] { }; TessEl @[8] { }; }; }; TesselPrjnSpec @["SNc_GO"] { BaseSpec_Group @.children = [0] { }; 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 @["SNc_GO2"] { BaseSpec_Group @.children = [0] { }; 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 @["Context_TS_1"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [6] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; }; }; TesselPrjnSpec @["Context_TS_2"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [6] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; }; }; TesselPrjnSpec @["Context_TS_3"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [6] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; }; }; TesselPrjnSpec @["MotorCortex_Striatum"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [2] { TessEl @[0] { }; TessEl @[1] { }; }; }; TesselPrjnSpec @["SNc_NOGO"] { BaseSpec_Group @.children = [0] { }; 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 @["SNc_NOGO2"] { BaseSpec_Group @.children = [0] { }; 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 @["Striatum_GPInt"] { BaseSpec_Group @.children = [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] { }; }; }; TesselPrjnSpec @["Fm_Stimuli_To_MC"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [6] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; TessEl @[4] { }; TessEl @[5] { }; }; }; TesselPrjnSpec @["MotorCortex2_NoGoStriatum2"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [4] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; }; }; TesselPrjnSpec @["MotorCortex_NoGoStriatum"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [4] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; }; }; TesselPrjnSpec @["Fm_Output2_To_InputHidden"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [4] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; }; }; TesselPrjnSpec @["Fm_Output2_To_InputHiddenB"] { BaseSpec_Group @.children = [0] { }; TessEl_List @.send_offs = [4] { TessEl @[0] { }; TessEl @[1] { }; TessEl @[2] { }; TessEl @[3] { }; }; }; OneToOnePrjnSpec @["OneToOne_2"] { BaseSpec_Group @.children = [0] { }; }; }; BaseSpec_Group @.gp["Connections"] = [14] { LeabraBiasSpec @["LearnBias"] { BaseSpec_Group @.children = [1] { LeabraBiasSpec @["FixedBias"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["FixedFull"] { BaseSpec_Group @.children = [1] { LeabraConSpec @["InhibCons"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["FixedFull2"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["FixedFull3"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["FixedHalf"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["GPeGPiInhib"] { BaseSpec_Group @.children = [4] { LeabraConSpec @["ThalInhib"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["ThalInhib2"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Inhib_Learn"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Inhib_Learn2"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Fixed"] { BaseSpec_Group @.children = [13] { LeabraConSpec @["STNcons"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["MotorCortex_Striatum"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["MotorCortex2_Striatum2"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Motor_NoGo"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Motor_NoGo2"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Input_Motor_Prepotent_"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Context_Motor_prepotent"] { BaseSpec_Group @.children = [1] { LeabraConSpec @["C_TS"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["InputStriatum"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["inNoGO"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["ContextStriatum"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["MC2_Striatum"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["STN_GPi"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Mtr_STNcons"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Dopamine_D1_"] { BaseSpec_Group @.children = [1] { LeabraConSpec @["D1_Stronger"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["SNc_Inhib_D2_"] { BaseSpec_Group @.children = [1] { LeabraConSpec @["D2_Stronger"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["Inhib"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["NoGo_inhib_Go"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["NoGo_inhib_NoGo"] { UserDataItem_List @*(.user_data_) { UserDataItem @["user_pinned"] { }; }; BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["InhibInhib"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; LeabraConSpec @["FBtoInhib"] { BaseSpec_Group @.children = [1] { LeabraConSpec @["FFtoInhib"] { BaseSpec_Group @.children = [0] { }; Schedule @.lrate_sched = [0] { }; }; }; Schedule @.lrate_sched = [0] { }; }; }; BaseSpec_Group @.gp["Units"] = [3] { LeabraUnitSpec @["FixedBiasUnitSpec"] { BaseSpec_Group @.children = [7] { LeabraUnitSpec @["GPExt_UnitSpec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["OutputUnitSpec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["Output3UnitSpec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["Thalamus"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["LearnBiasUnitSpec"] { BaseSpec_Group @.children = [4] { LeabraUnitSpec @["matrisom_unitspec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["Motor_Cortex_unitspec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [4] { SchedItem @[0] { }; SchedItem @[1] { }; SchedItem @[2] { }; SchedItem @[3] { }; }; }; LeabraUnitSpec @["Motor_Cortex_1_unitspec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [4] { SchedItem @[0] { }; SchedItem @[1] { }; SchedItem @[2] { }; SchedItem @[3] { }; }; }; LeabraUnitSpec @["STN_unitspec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["GPInt_UnitSpec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["InhibUnits"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["SNc_UnitSpec"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; LeabraUnitSpec @["SNc_UnitSpec_slower"] { BaseSpec_Group @.children = [0] { }; Schedule @.noise_sched = [0] { }; }; }; BaseSpec_Group @.gp["LayerSpecs"] = [5] { LeabraLayerSpec @["LayerSpec_0"] { BaseSpec_Group @.children = [9] { LeabraLayerSpec @["Matrisome_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["GP_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["Thalamus_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["Output_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["PFC_Out_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["InputLayer"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["SNc_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["MCLayerSpec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["MC2LayerSpec"] { BaseSpec_Group @.children = [0] { }; }; }; }; LeabraLayerSpec @["inhidden"] { BaseSpec_Group @.children = [7] { LeabraLayerSpec @["Matrisome_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["GP_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["Thalamus_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["Output_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["PFC_Out_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["InputLayer"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["SNc_layerspec"] { BaseSpec_Group @.children = [0] { }; }; }; }; LeabraLayerSpec @["LayerSpec_1"] { BaseSpec_Group @.children = [7] { LeabraLayerSpec @["Matrisome_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["GP_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["Thalamus_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["Output_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["PFC_Out_layerspec"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["InputLayer"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["SNc_layerspec"] { BaseSpec_Group @.children = [0] { }; }; }; }; LeabraLayerSpec @["NoDecayLayers"] { BaseSpec_Group @.children = [2] { LeabraLayerSpec @["STN"] { BaseSpec_Group @.children = [0] { }; }; LeabraLayerSpec @["PFCIn_layerspec"] { BaseSpec_Group @.children = [0] { }; }; }; }; LeabraLayerSpec @["InhibLayers"] { BaseSpec_Group @.children = [0] { }; }; }; }; Layer_Group @.layers = [8] { LeabraLayer @["Input"] { Projection_Group @.projections = [0] { }; Unit_Group @.units = [18] { }; }; LeabraLayer @["GP_Int"] { Projection_Group @.projections = [2] { LeabraPrjn @["Fm_Go"] { }; LeabraPrjn @["Fm_GP_Ext"] { }; }; Unit_Group @.units = [8] { }; }; LeabraLayer @["GP_Ext"] { Projection_Group @.projections = [1] { LeabraPrjn @["Fm_NoGo"] { }; }; Unit_Group @.units = [4] { }; }; LeabraLayer @["Thalamus"] { Projection_Group @.projections = [2] { LeabraPrjn @["Fm_GP_Int"] { }; LeabraPrjn @["Fm_PMC"] { }; }; Unit_Group @.units = [4] { }; }; LeabraLayer @["PMC"] { Projection_Group @.projections = [3] { LeabraPrjn @["Fm_Thalamus"] { }; LeabraPrjn @["Fm_ctxt"] { }; LeabraPrjn @["Fm_Input"] { }; }; Unit_Group @.units = [8] { }; }; LeabraLayer @["Output"] { Projection_Group @.projections = [2] { LeabraPrjn @["Fm_PMC"] { }; LeabraPrjn @["Fm_PMC_1"] { }; }; Unit_Group @.units = [4] { }; }; LeabraLayer @["SNc"] { Projection_Group @.projections = [0] { }; Unit_Group @.units = [4] { }; }; LeabraLayer @["ctxt"] { Projection_Group @.projections = [0] { }; Unit_Group @.units = [18] { }; }; Layer_Group @.gp["Striatum"] = [3] { LeabraLayer @["Go"] { Projection_Group @.projections = [6] { LeabraPrjn @["Fm_Input"] { }; LeabraPrjn @["Fm_ctxt"] { }; LeabraPrjn @["Fm_Striatum_Inhib"] { }; LeabraPrjn @["Fm_SNc"] { }; LeabraPrjn @["Fm_PMC"] { }; LeabraPrjn @["Fm_NoGo"] { }; }; Unit_Group @.units = [36] { }; }; LeabraLayer @["NoGo"] { Projection_Group @.projections = [6] { LeabraPrjn @["Fm_Input"] { }; LeabraPrjn @["Fm_NoGo"] { }; LeabraPrjn @["Fm_ctxt"] { }; LeabraPrjn @["Fm_Striatum_Inhib"] { }; LeabraPrjn @["Fm_SNc"] { }; LeabraPrjn @["Fm_PMC"] { }; }; Unit_Group @.units = [36] { }; }; LeabraLayer @["Striatum_Inhib"] { Projection_Group @.projections = [7] { LeabraPrjn @["Fm_Input"] { }; LeabraPrjn @["Fm_ctxt"] { }; LeabraPrjn @["Fm_SNc"] { }; LeabraPrjn @["Fm_PMC"] { }; LeabraPrjn @["Fm_Striatum_Inhib"] { }; LeabraPrjn @["Fm_Go"] { }; LeabraPrjn @["Fm_NoGo"] { }; }; Unit_Group @.units = [16] { }; }; }; }; Weights_List @.weights = [0] { }; }; }; }; LeabraProject .projects["BG_9060_4010"] { name="BG_9060_4010"; desc="mtrNoGoGlut: stronger glutamate projns from ctx to NoGo (mGluR!) nodecMat = no decay b/w phases in matrix, so can learn about recently active synapse"; tags=; version { major=0; minor=0; step=0; }; author=; email=; license { license=NO_LIC; owner_name=; org=; year="2011"; custom=; }; pub_cite=; wiki { wiki=; page_name=; }; docs { name="docs"; el_typ=taDoc; el_def=0; taDoc @["ProjectDocs"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["user_pinned"] { name="user_pinned"; value 1 0=1; val_type_fixed=0; }; }; name="ProjectDocs"; desc=; web_doc=0; wiki=; url="local"; full_url="http://grey.colorado.edu/CompCogNeuro/index.php/CCNBook/Sims/Motor/BG"; text_size=1; text=" == Action Selection and Probabilistic Reinforcement Learning in the Basal Ganglia / Learning in Lean and Rich Reward Tasks == This simplified basal ganglia (BG) network considers learning and action selection in just the direct 'Go' and indirect 'NoGo' pathways, based on Frank (2005) (ignoring more elaborated aspects of the circuitry explored in other models, including subthalamic nucleus and the 'hyperdirect' pathway, the cholinergic interneurons, and interactions among multiple cortico-BG circuits). As opposed to the probabilistic selection task considered in other BG projects on this site, which involves a transfer phase to assess previous learning, here we model simple differences in learning curves depending on whether learning requires differentiating among two responses that have relatively high values (80% vs. 60% reward), or two responses that have relatively low values (40% vs 20% reward). While these discriminations both differ in reward by 20%, requiring integration of probabilities over time, they differ in whether the majority of information is provided in terms of positive or negative reward prediction errors. (If you have already read the below in other BG projects, you can skip to the section on training the model.) The BG circuitry is notoriously complex and counterintuitive, involving a combination between excitatory and inhibitory projections and multiple pathways. Given a sensory stimulus, the pre/motor cortex generates candidate motor actions, and then the BG selectively \"gate\" one of these actions to be executed while suppressing the other action. This gating process occurs via a sequence of steps from the Striatum through two opposing pathways (the direct and indirect pathways) to the output nucleus, the Thalamus, and back up to cortex. The BG learn which actions to select and which to suppress as a function of reinforcement signals encoded by dopamine. That is, unlike the error-driven *supervised* learning mechanisms in other task learning simulations, this network learns to make responses based purely on an unsupervised reinforcement signal conveying the reward value of outcomes that follow actions, and is never 'told' which response it should have made. As usual begin by inspecting the pattern of weights in the network; you should see that the striatal Go and NoGo units are organized in columns and represent the individual premotor responses, and that this columnar structure is preserved through the BG output nuclei and Thalamus . To get a sense of how the dynamics of action selection work in more detail, step through a single trial a few cycles at a time. Click Init, and then Cycle on the MasterControl panel. (This will step 5 Cycles at a time by default). During the initial cycles of settling you can observe the basic \"default\" function of the BG to suppress responses. A stimulus input pattern is presented, and both competing responses initially become noisily activated (or \"considered\") in pre/motor cortex. (This noise is helpful for producing exploratory motor actions before learning has occurred). In the absence of Striatum activity, neurons in the GP_Int (globus pallidus internal segment, the output nucleus of the BG) are tonically active (this is due to a reverse leak current in which positive ions leak into the cell rather than out of it as usual). Importantly, the projections from GP_Int units to the Thalamus are inhibitory, so that GP_Int activation chronically suppresses the Thalamus. Because bottom-up thalamic-cortical activity is required for a motor response to become sufficiently activated, this thalamic inhibition prevents all responses from getting executed, leading to only noisy cortical activity and no action selection. Click a few more cycles until you see activity in the Striatum in response to the Input pattern. The Striatum is divided into two layers, with \"Go\" units in the left layer, and \"NoGo\" units in the right, and separate columns for each response. The first column of Go units receives input from the first column of motor units (which we will call R1), whereas the second column receives input from the second column (R2), and similarly for NoGo units (columns 1 and 2 of the NoGo Layer are NoGo-R1 and NoGo-R2). However, the particular Go or NoGo units within a column that get active depend also on the sensory stimulus Input. Thus the striatal units encode conjunctions between stimulus input and actions that are considered in motor cortex, so that some units represent Go-R1 for a particular stimulus, whereas others may become active for another stimulus. If a particular column of Go units is more active than the NoGo units, it will tend to inhibit the corresponding column of the GP_Int, which ultimately will allow that action to be executed. Step through a few more cycles until you see this inhibition of a column in GP_Int. You should see that as the GP_Int units become inhibited, the Thalamus is no longer suppressed. This process is referred to as \"disinhibition\" because the effect of the striatal Go activation is not to directly excite, but only to remove inhibition of GP_Int onto Thalamus. The corresponding column of Thalamus will become excited only if it also receives top down activation from motor units in the same column. It is this property that makes the BG contribution to action selection a *gating* process: noisy striatal activity would not by itself select an action unless the motor cortex was already 'considering' that action as a plausible candidate. Similarly, in some cases both responses may get a similar level of Go activity in striatum initially, and in this case only the one also having greater cortical activity will be gated. You should see that once a Thalamic unit is active, the corresponding column of cortical motor units (PMC) quickly becomes maximally active, while the competing motor column is inhibited. (There is lateral inhibition between the competing motor responses, and the thalamic activation gives the winning column sufficient activity so that the other column is completely inhibited). Once you are finished watching the network activations evolve in this trial, switch to stepping by Settle instead of Cycle. Step through a few trials in the same way. You may also see some NoGo activity (in the right half of striatal units), which would serve to prevent selection of the corresponding response, because NoGo units project to and inhibit the external segment of the globus pallidus (GP_Ext), which in turn send inhibitory projections to the GP_Int. Thus whereas Go activity disinhibits the Thalamus, NoGo activity has the opposite effect, further activating GP_Int so that the Thalamus remains inhibited. Before learning. whether Go or NoGo activity for a given response predominates is somewhat arbitrary (related to random synaptic weights and overall dopamine levels), but informative differences will emerge with learning. Each trial consists of two settling phases: one in which the network selects a response, and another in which it receives dopaminergic feedback about whether the outcome was good or bad. You should also see that depending on whether the network responded correctly or not (in the task described below), there will be either a dopamine burst (SNc units completely activated) or dip (complete inhibition). This reinforcement forms the basis for learning in the model, as described next. = Learning = Dopamine (DA) from the SNc modulates the relative balance of activity in Go versus NoGo units via simulated D1 and D2 receptors. Dopamine effects are greatest on those striatal units that are already activated by corticostriatal glutamatergic input. Go units activated by the current stimulus and motor response are further excited by D1 receptor stimulation. In contrast, DA is uniformally inhibitory on NoGo units via D2 receptors. This differential effect of DA on Go and NoGo units, via D1 and D2 receptors, affects performance (i.e., more tonic DA leads to more Go and associated response vigor, faster reaction times) and, critically, learning. Specifically, when the network selects the 'correct' response, a dopamine burst subsequently reinforces the response, further exciting Go units and inhibiting NoGo units. Learning occurs during this phasic DA signal, so that synapses between active cortical and striatal Go units are strengthened, whereas those for NoGo units are weakened. This learning allows the striatum to facilitate selection of the rewarding response in future presentations of the same stimulus. In contrast, if the network selects the incorrect response, DA units cease firing, and the associated dip in DA activity allows NoGo units (which were previously inhibited by DA) to become excited. The resulting increase in activity is also associated with strengthening of synapses from active cortical cells. With learning, NoGo cells differentially respond to stimulus-response combinations that have negative value, so that non-rewarding responses are likely to be suppressed. The mechanisms by which DA affects activity and plasticity are motivated by several biological experiments and are consistent with effects of dopamine D1 and D2 pharmacological agents on activity and long term plasticity (see Collons & Frank, 2014 for a recent review and formalization using a more abstract algorithmic model). The net result is that the BG selects one response if a particular \"Go\" signal in the striatum is stronger than its corresponding \"NoGo\" signal, while concurrently suppressing alternative responses. Because direct and indirect pathway cells compete at BG output, the action most likely to be gated is a function of the difference in activity in these pathways for each action in parallel. = Training the model in probabilistic reinforcement tasks = Now that we've seen how the dynamics of action selection and learning work, let's put the mechanisms to a test, and see how they are sensitive to dopamine manipulations as in empirical studies. Specifically, many studies implicate the basal ganglia dopamine system in reinforcement learning in probabilistic environments. In these tasks, multiple stimuli are presented on different trials, and participants have to learn by trial and error which response to make. The difficulty is not only that there is no clear underlying 'rule' for determining which response to make (it is determined arbitrarily), but also that there is no absolute answer that will always work. However, certain responses are reinforced on a greater proportion of trials than others, so that people have to learn to integrate the reinforcement history across multiple instances to determine the optimal response. This project simulates the role of the basal ganglia dopamine system in learning and reward-based decision making. We focus here on a task that requires differential learning from probabilistic positive vs negative RPEs in separate conditions, much like Bodi et al 2010, who showed starkly different learning curves for Parkinson patients on and off medication. When a stimulus S1 is presented, the network can respond by selecting Response R1 or R2. When R1 is chosen, it will be rewarded (dopamine burst) on 80% of trials, and punished (dopamine dip) on the remaining 20%. When R2 is chosen it will be rewarded on 60% of trials. Thus this discrimination requires learn which of the two responses has the highest reward value. But when stimulus S2 is presented the discrimination to be learned is 40:20 reward (and hence 60:80 negative outcomes) for selecting between R3 and R4, and hence requires learning which action is most often associated with negative RPE's (ie the most reliable feedback is that R4 is punished on 80% of trials). To run a batch of intact networks, on the MasterControl panel make sure num_intact_snc_units is set to 4. Then just click Init and Run, which will run a batch of 20 networks for 5 epochs of training (trials per condition per epoch). You may want to uncheck the display box on the network so that it runs faster (it takes time to update the cycle by cycle activations on the network view). After the batch of networks is finished, the average learning curves, divided into difficulty (80 vs 60% reinforcement contingencies) are shown on the .T3Tab.trl_group graph. The black curve shows accuracy for the \"rich\" 80:60 discrimination (how often R1 is selected), and the red curve shows accuracy in the \"lean\" 40:20 discrimination (how often R3 is selected), as a function of training epochs. = Simulating Parkinson's disease and dopamine medications = Empirical studies testing the predictions of this model have shown that patients with Parkinson's disease (PD) show different patterns of Go or NoGo learning impairments depending on whether they are medicated or not (Frank et al, 2004; 2007; Palminteri et al, 2009, Bodi et al, 2010, etc). {{cmd|To simulate Parkinson's disease (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, i.e. 75% DA damage - you can choose 2 or 3 for more intermediate effects). This reduction in number of intact DA units leads to effectively reduced tonic and phasic DA levels in the Striatum.}} You can step through a few trials to examine network dynamics under this dopamine depleted state. You might see overall greater levels of NoGo activation, which also produces general slowing in action selection (i.e. akinesia as in the disease). If you look at the network as it settles, you'll likely see that in the beginning of training the network has difficulty gating a response at all -- a cardinal symptom of PD - but nevertheless, the noise in motor cortex allows it to pick something randomly. The networks can still benefit from reinforcement at this stage and eventually do learn to gate responses with the BG, once the Go weights are sufficiently strong (you can see this if you look at settling later on during training). {{cmd|Run a full batch of networks in this PD state across the task. What happens to learning in the two conditions? Remember that good learning from positive discriminations will involve higher performance in the black curve, whereas better learning from negative outcomes will involve higher performance in the red curve. e two test conditiosn) in terms of the mechanisms in this model.}} This avoidance bias is similar to what is observed empirically with this task, and has also been shown in both the model and in animal studies to underly a progressive development of Parkinsonian symptoms in motor skill learning. Essentially the network learns to avoid selecting actions with experience, because the DA-depleted BG interprets these actions as if they had negative outcomes (see Wiecki & Frank 2010; Beeler et al., 2012 for empirical demonstration of progressive development of Parkinsonian symptoms that are explained by exaggerated NoGo learning). You can also simulate effects of DA medication given to PD patients: set the number of intact DA units back to 4 units (to simulate the increase in DA synthesis due to levodopa, the main form of medication). But in addition to increasing dopamine availability, medications also continually and directly stimulate dopamine D2 receptors (so-called D2 agonists). To capture this effect, increase d2_acq (which reflects the impact of dopamine onto D2 receptors) from the default of 0.08 to 0.15. This will make it harder for NoGo units to respond to negative outcomes during DA dips (which requires less D2 stimulation; see Frank 2005). Hit Init and Run. {{cmd|What happens to learning curves? Compare this performance to those you observed in intact networks (with default levels of D2 stimulation), and explain any differences in terms of the mechanisms in this model.}} = Learning habits in the cortico-cortical pathway = The corticostriatal pathway and reinforcement learning is not the only form of learning in this model. There is also unsupervised Hebbian learning that occurs directly from sensory to motor cortex. This pathway learns the statistics of its own actions -- when a particular stimulus is presented, on average which action did it select in the past? As long as this learning is slower than that in the BG, the actions that had been most frequently selected for this stimulus will be those that were most often reinforced (Frank, 2005; Frank & Claus 2006). This learning provides a mechanism by which the development and learning of habits is initially dependent on BG and dopamine function, but their later expression is not: once these mappings are strong enough, the network can rapidly activate only the most appropriate response and is not dependent on BG gating. This provides a natural explanation for the following observations: (i) While learning of simple instrumental actions are initially BG and DA-dependent, their later expression is not (Smith-Roe & Kelley, 2000), (ii) in well-learned tasks, striatal activation is sometimes seen *after* motor unit activation and the onset of movement (Alexander & Crutcher, 1990) and (iii) Parkinson's patients have much less difficulty executing well learned motor actions. To see this in the model, change the Input_Motor_lrate from 0 (this learning has been turned off in this network so far) to a .001 (it is important that Hebbian learning is slow relative to reinforcement learning, so that the habits ingrained in cortex stamp-in the ones that have been selected based on reward!). Make sure the network is in the intact state (4 SNc units, DA burst val =1). With the network display turned on, run a single network from the LeabraTrain program and stop it near the end of training (e.g., after 25 epochs) and just step through a few trials and observe the network activity in the motor cortex. You should see that well before the BG gates an action, the motor cortex now preferentially activates a single response to the stimulus, which will be the one it most often has activated in the past (and if the RL process worked well in the BG, it will also be the more rewarding response). Thus this provides a simple demonstration that the motor cortex can first generate the candidate actions based on their prior probability of selection in the current sensory context, and if more than one of these actions is a suitable candidate, the BG can select between them. Also, if you let the network run a full set of batches, you should see that by the end of training they more reliably learn the difficult 60/40 discrimination (see trl_group panel): corticocortical learning forces it to more robustly stick with the action that works the most frequently and not be subject to a string of a few bad outcomes. = A few technical details = Note that all accuracy analysis occur after filtering out trials in which a response was not gated by the maximum 150 cycles of each trial (otherwise choices selected in these trials are random, due only to motor cortical noise). Also, unlike the original model, this particular version of the model uses a population of inhibitory interneurons to regulate striatal activity rather than the simplified k-winner take all (kWTA) approximation (the basic effects of DA manipulation apply also in the basic model). (The inhibitory interneurons are active in this network but iconified to minimize the amount you have to look at - feel free to click on that layer and de-iconify it to watch those dynamics!) The original simplification did not permit independent manipulation of the D2 inhibitory projections, because kWTA 'hijacks' the inhibitory currents in each unit. In earlier simulations the effects of DA were therefore always simultaneously affecting GO and NoGo cells -- more DA was associated with more Go excitation via D1 projection -- whereas here we can independently manipulate D2 receptor strength or blockade etc (by varying the strength of the inhibitory weight scale from DA units to NoGo cells) separately from general inhibitory effects within striatum (implemented with inhibitory interneurons that contribute to inhibitory currents in striatal cells but do not hijack them entirely) . Including inhibitory interneurons is somewhat more realistic (GABAergic neurons regulate spiny neuron activity in striatum), but the main reason for this is to enable other manipulations of D2 receptor inhibitory effects independently from inhibitory regulation of striatal cells in general (both Go and NoGo) based on inhibitory neuron activity. (see technical note 4 at the bottom for more details). This allows us to explore effects of D2 receptor sensitivity, blockade etc. = This simplified basal ganglia (BG) network considers learning and action selection in just the direct 'Go' and indirect 'NoGo' pathways, based on Frank (2005) (ignoring more elaborated aspects of the circuitry explored in other models, including subthalamic nucleus and the 'hyperdirect' pathway, the cholinergic interneurons, and interactions among multiple cortico-BG circuits). As opposed to the probabilistic selection task considered in other BG projects on this site, which involves a transfer phase to assess previous learning, here we model simple differences in learning curves depending on whether learning requires differentiating among two responses that have relatively high values (80% vs. 60% reward), or two responses that have relatively low values (40% vs 20% reward). While these discriminations both differ in reward by 20%, requring integration of probabilities over time, they differ in whether the majority of information is provided in terms of positive or negative reward prediction errors. (If you have already read the subsequent sections for other BG projects, just skip to \"Training the model in probabilistic reinforcement tasks\" below). The BG circuitry is notoriously complex and counterintuitive, involving a combination between excitatory and inhibitory projections and multiple pathways. Given a sensory stimulus, the pre/motor cortex generates candidate motor actions, and then the BG selectively \"gate\" one of these actions to be executed while suppressing the other action. This gating process occurs via a sequence of steps from the Striatum through two opposing pathways (the direct and indirect pathways) to the output nucleus, the Thalamus, and back up to cortex. The BG learn which actions to select and which to suppress as a function of reinforcement signals encoded by dopamine. That is, unlike the error-driven *supervised* learning mechanisms in other task learning simulations, this network learns to make responses based purely on an unsupervised reinforcement signal conveying the reward value of outcomes that follow actions, and is never 'told' which response it should have made. As usual begin by inspecting the pattern of weights in the network; you should see that the striatal Go and NoGo units are organized in columns and represent the individual premotor responses, and that this columnar structure is preserved through the BG output nuclei and Thalamus . To get a sense of how the dynamics of action selection work in more detail, step through a single trial a few cycles at a time. Click Init, and then Cycle on the MasterControl panel. (This will step 5 Cycles at a time by default). During the initial cycles of settling you can observe the basic \"default\" function of the BG to suppress responses. A stimulus input pattern is presented, and both competing responses initially become noisily activated (or \"considered\") in pre/motor cortex. (This noise is helpful for producing exploratory motor actions before learning has occurred). In the absence of Striatum activity, neurons in the GP_Int (globus pallidus internal segment, the output nucleus of the BG) are tonically active (this is due to a reverse leak current in which positive ions leak into the cell rather than out of it as usual). Importantly, the projections from GP_Int units to the Thalamus are inhibitory, so that GP_Int activation chronically suppresses the Thalamus. Because bottom-up thalamic-cortical activity is required for a motor response to become sufficiently activated, this thalamic inhibition prevents all responses from getting executed, leading to only noisy cortical activity and no action selection. Click a few more cycles until you see activity in the Striatum in response to the Input pattern. The Striatum is divided into two layers, with \"Go\" units in the left layer, and \"NoGo\" units in the right, and separate columns for each response. The first column of Go units receives input from the first column of motor units (which we will call R1), whereas the second column receives input from the second column (R2), and similarly for NoGo units (columns 1 and 2 of the NoGo Layer are NoGo-R1 and NoGo-R2). However, the particular Go or NoGo units within a column that get active depend also on the sensory stimulus Input. Thus the striatal units encode conjunctions between stimulus input and actions that are considered in motor cortex, so that some units represent Go-R1 for a particular stimulus, whereas others may become active for another stimulus. If a particular column of Go units is more active than the NoGo units, it will tend to inhibit the corresponding column of the GP_Int, which ultimately will allow that action to be executed. Step through a few more cycles until you see this inhibition of a column in GP_Int. You should see that as the GP_Int units become inhibited, the Thalamus is no longer suppressed. This process is referred to as \"disinhibition\" because the effect of the striatal Go activation is not to directly excite, but only to remove inhibition of GP_Int onto Thalamus. The corresponding column of Thalamus will become excited only if it also receives top down activation from motor units in the same column. It is this property that makes the BG contribution to action selection a *gating* process: noisy striatal activity would not by itself select an action unless the motor cortex was already 'considering' that action as a plausible candidate. Similarly, in some cases both responses may get a similar level of Go activity in striatum initially, and in this case only the one also having greater cortical activity will be gated. You should see that once a Thalamic unit is active, the corresponding column of cortical motor units (PMC) quickly becomes maximally active, while the competing motor column is inhibited. (There is lateral inhibition between the competing motor responses, and the thalamic activation gives the winning column sufficient activity so that the other column is completely inhibited). Once you are finished watching the network activations evolve in this trial, switch to stepping by Settle instead of Cycle. Step through a few trials in the same way. You may also see some NoGo activity (in the right half of striatal units), which would serve to prevent selection of the corresponding response, because NoGo units project to and inhibit the external segment of the globus pallidus (GP_Ext), which in turn send inhibitory projections to the GP_Int. Thus whereas Go activity disinhibits the Thalamus, NoGo activity has the opposite effect, further activating GP_Int so that the Thalamus remains inhibited. Before learning. whether Go or NoGo activity for a given response predominates is somewhat arbitrary (related to random synaptic weights and overall dopamine levels), but informative differences will emerge with learning. Each trial consists of two settling phases: one in which the network selects a response, and another in which it receives dopaminergic feedback about whether the outcome was good or bad. You should also see that depending on whether the network responded correctly or not (in the task described below), there will be either a dopamine burst (SNc units completely activated) or dip (complete inhibition). This reinforcement forms the basis for learning in the model, as described next. = Learning = Dopamine (DA) from the SNc modulates the relative balance of activity in Go versus NoGo units via simulated D1 and D2 receptors. Dopamine effects are greatest on those striatal units that are already activated by corticostriatal glutamatergic input. Go units activated by the current stimulus and motor response are further excited by D1 receptor stimulation. In contrast, DA is uniformally inhibitory on NoGo units via D2 receptors. This differential effect of DA on Go and NoGo units, via D1 and D2 receptors, affects performance (i.e., more tonic DA leads to more Go and associated response vigor, faster reaction times) and, critically, learning. Specifically, when the network selects the 'correct' response, a dopamine burst subsequently reinforces the response, further exciting Go units and inhibiting NoGo units. Learning occurs during this phasic DA signal, so that synapses between active cortical and striatal Go units are strengthened, whereas those for NoGo units are weakened. This learning allows the striatum to facilitate selection of the rewarding response in future presentations of the same stimulus. In contrast, if the network selects the incorrect response, DA units cease firing, and the associated dip in DA activity allows NoGo units (which were previously inhibited by DA) to become excited. The resulting increase in activity is also associated with strengthening of synapses from active cortical cells. With learning, NoGo cells differentially respond to stimulus-response combinations that have negative value, so that non-rewarding responses are likely to be suppressed. The mechanisms by which DA affects activity and plasticity are motivated by several biological experiments and are consistent with effects of dopamine D1 and D2 pharmacological agents on activity and long term plasticity (see Collons & Frank, 2014 for a recent review and formalization using a more abstract algorithmic model). The net result is that the BG selects one response if a particular \"Go\" signal in the striatum is stronger than its corresponding \"NoGo\" signal, while concurrently suppressing alternative responses. Because direct and indirect pathway cells compete at BG output, the action most likely to be gated is a function of the difference in activity in these pathways for each action in parallel. = Training the model in probabilistic reinforcement tasks = Now that we've seen how the dynamics of action selection and learning work, let's put the mechanisms to a test, and see how they are sensitive to dopamine manipulations as in empirical studies. Specifically, many studies implicate the basal ganglia dopamine system in reinforcement learning in probabilistic environments. In these tasks, multiple stimuli are presented on different trials, and participants have to learn by trial and error which response to make. The difficulty is not only that there is no clear underlying 'rule' for determining which response to make (it is determined arbitrarily), but also that there is no absolute answer that will always work. However, certain responses are reinforced on a greater proportion of trials than others, so that people have to learn to integrate the reinforcement history across multiple instances to determine the optimal response. This project simulates the role of the basal ganglia dopamine system in learning and reward-based decision making. We focus here on a task that requires differential learning from probabilistic positive vs negative RPEs in separate conditions, much like Bodi et al 2009. When a stimulus S1 is presented, the network can respond by selecting Response R1 or R2. When R1 is chosen, it will be rewarded (dopamine burst) on 80% of trials, and punished (dopamine dip) on the remaining 20%. When R2 is chosen it will be rewarded on 60% of trials. Thus this discrimination requires learn which of the two responses has the highest reward value. But when stimulus S2 is presented the discrimination to be learned is 40:20 reward (and hence 60:80 negative outcomes) for selecting between R3 and R4, and hence requires learning which action is most often associated with negative RPE's (ie the most reliable feedback is that R4 is punished on 80% of trials). To run a batch of intact networks, on the MasterControl panel make sure num_intact_snc_units is set to 4. Then just click Init and Run, which will run a batch of 20 networks for 5 epochs of training (8 trials per condition per epoch). You may want to uncheck the display box on the network so that it runs faster (it takes time to update the cycle by cycle activations on the network view). After the batch of networks is finished, the average learning curves, divided into difficulty (80 vs 60% reinforcement contingencies) are shown on the .T3Tab.trl_group graph. The black curve shows accuracy for the \"rich\" 80:60 discrimination (how often R1 is selected), and the red curve shows accuracy in the \"lean\" 40:20 discrimination (how often R3 is selected), as a function of training epochs. = Simulating Parkinson's disease and dopamine medications = Empirical studies testing the predictions of this model have shown that patients with Parkinson's disease (PD) show different patterns of Go or NoGo learning impairments depending on whether they are medicated or not (Frank et al, 2004; 2007; Palminteri et al, 2009, Bodi et al, 2010, etc). {{cmd|To simulate Parkinson's disease (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, i.e. 75% DA damage - you can choose 2 or 3 for more intermediate effects). This reduction in number of intact DA units leads to effectively reduced tonic and phasic DA levels in the Striatum.}} You can step through a few trials to examine network dynamics under this dopamine depleted state. You might see overall greater levels of NoGo activation, which also produces general slowing in action selection (i.e. akinesia as in the disease). If you look at the network as it settles, you'll likely see that in the beginning of training the network has difficulty gating a response at all -- a cardinal symptom of PD - but nevertheless, the noise in motor cortex allows it to pick something randomly. The networks can still benefit from reinforcement at this stage and eventually do learn to gate responses with the BG, once the Go weights are sufficiently strong (you can see this if you look at settling later on during training). {{cmd|Run a full batch of networks in this PD state across the task. What happens to learning in the two conditions? Remember that good learning from positive discriminations will involve higher performance in the black curve, whereas better learning from negative outcomes will involve higher performance in the red curve. e two test conditiosn) in terms of the mechanisms in this model.}} This avoidance bias is similar to what is observed empirically with this task, and has also been shown in both the model and in animal studies to underly a progressive development of Parkinsonian symptoms in motor skill learning. Essentially the network learns to avoid selecting actions with experience, because the DA-depleted BG interprets these actions as if they had negative outcomes (see Wiecki & Frank 2010, Beeler et al., 2012 for empirical demonstration of progressive development of Parkinsonian symptoms that are explained by exaggerated NoGo learning). You can also simulate effects of DA medication given to PD patients: set the number of intact DA units back to 4 units (to simulate the increase in DA synthesis due to levodopa, the main form of medication). But in addition to increasing dopamine availability, medications also continually and directly stimulate dopamine D2 receptors (so-called D2 agonists). To capture this effect, increase d2_acq (which reflects the impact of dopamine onto D2 receptors) from the default of 0.1 to 0.15. This will make it harder for NoGo units to respond to negative outcomes during DA dips (which requires less D2 stimulation; see Frank 2005). Hit Init and Run. {{cmd|What happens to learning curves? Compare this performance to those you observed in intact networks (with default levels of D2 stimulation), and explain any differences in terms of the mechanisms in this model.}} = Learning habits in the cortico-cortical pathway = The corticostriatal pathway and reinforcement learning is not the only form of learning in this model. There is also unsupervised Hebbian learning that occurs directly from sensory to motor cortex. This pathway learns the statistics of its own actions -- when a particular stimulus is presented, on average which action did it select in the past? As long as this learning is slower than that in the BG, the actions that had been most frequently selected for this stimulus will be those that were most often reinforced (Frank, 2005; Frank & Claus 2006). This learning provides a mechanism by which the development and learning of habits is initially dependent on BG and dopamine function, but their later expression is not: once these mappings are strong enough, the network can rapidly activate only the most appropriate response and is not dependent on BG gating. This provides a natural explanation for the following observations: (i) While learning of simple instrumental actions are initially BG and DA-dependent, their later expression is not (Smith-Roe & Kelley, 2000), (ii) in well-learned tasks, striatal activation is sometimes seen *after* motor unit activation and the onset of movement (Alexander & Crutcher, 1990) and (iii) Parkinson's patients have much less difficulty executing well learned motor actions. To see this in the model, change the Input_Motor_lrate from 0 (this learning has been turned off in this network so far) to a .001 (it is important that Hebbian learning is slow relative to reinforcement learning, so that the habits ingrained in cortex stamp-in the ones that have been selected based on reward!). Make sure the network is in the intact state (4 SNc units). With the network display turned on, run a single network from the LeabraTrain program and stop it near the end of training (e.g., after 3 epochs) and just step through a few trials and observe the network activity in the motor cortex. You should see that well before the BG gates an action, the motor cortex now preferentially activates a single response to the stimulus, which will be the one it most often has activated in the past (and if the RL process worked well in the BG, it will also be the more rewarding response). Thus this provides a simple demonstration that the motor cortex can first generate the candidate actions based on their prior probability of selection in the current sensory context, and if more than one of these actions is a suitable candidate, the BG can select between them. Also, if you let the network run a full set of batches, you should see that by the end of training they more reliably learn the difficult 60/40 discrimination (see trl_group panel): corticocortical learning forces it to more robustly stick with the action that works the most frequently and not be subject to a string of a few bad outcomes. = A few technical details = Note that all accuracy analysis occur after filtering out trials in which a response was not gated by the maximum 150 cycles of each trial (otherwise choices selected in these trials are random, due only to motor cortical noise). Also, unlike the original model, this particular version of the model uses a population of inhibitory interneurons to regulate striatal activity rather than the simplified k-winner take all (kWTA) approximation (the basic effects of DA manipulation apply also in the basic model). (The inhibitory interneurons are active in this network but iconified to minimize the amount you have to look at - feel free to click on that layer and de-iconify it to watch those dynamics!) The original simplification did not permit independent manipulation of the D2 inhibitory projections, because kWTA 'hijacks' the inhibitory currents in each unit. In earlier simulations the effects of DA were therefore always simultaneously affecting GO and NoGo cells -- more DA was associated with more Go excitation via D1 projection -- whereas here we can independently manipulate D2 receptor strength or blockade etc (by varying the strength of the inhibitory weight scale from DA units to NoGo cells) separately from general inhibitory effects within striatum (implemented with inhibitory interneurons that contribute to inhibitory currents in striatal cells but do not hijack them entirely) . Including inhibitory interneurons is somewhat more realistic (GABAergic neurons regulate spiny neuron activity in striatum), but the main reason for this is to enable other manipulations of D2 receptor inhibitory effects independently from inhibitory regulation of striatal cells in general (both Go and NoGo) based on inhibitory neuron activity. (see technical note 4 at the bottom for more details). This allows us to explore effects of D2 receptor sensitivity, blockade etc. "; html_text="

Action Selection and Probabilistic Reinforcement Learning in the Basal Ganglia / Learning in Lean and Rich Reward Tasks

This simplified basal ganglia (BG) network considers learning and action selection in just the direct 'Go' and indirect 'NoGo' pathways, based on Frank (2005) (ignoring more elaborated aspects of the circuitry explored in other models, including subthalamic nucleus and the 'hyperdirect' pathway, the cholinergic interneurons, and interactions among multiple cortico-BG circuits).

As opposed to the probabilistic selection task considered in other BG projects on this site, which involves a transfer phase to assess previous learning, here we model simple differences in learning curves depending on whether learning requires differentiating among two responses that have relatively high values (80% vs. 60% reward), or two responses that have relatively low values (40% vs 20% reward). While these discriminations both differ in reward by 20%, requiring integration of probabilities over time, they differ in whether the majority of information is provided in terms of positive or negative reward prediction errors.

(If you have already read the below in other BG projects, you can skip to the section on training the model.)

The BG circuitry is notoriously complex and counterintuitive, involving a combination between excitatory and inhibitory projections and multiple pathways. Given a sensory stimulus, the pre/motor cortex generates candidate motor actions, and then the BG selectively \"gate\" one of these actions to be executed while suppressing the other action. This gating process occurs via a sequence of steps from the Striatum through two opposing pathways (the direct and indirect pathways) to the output nucleus, the Thalamus, and back up to cortex. The BG learn which actions to select and which to suppress as a function of reinforcement signals encoded by dopamine. That is, unlike the error-driven *supervised* learning mechanisms in other task learning simulations, this network learns to make responses based purely on an unsupervised reinforcement signal conveying the reward value of outcomes that follow actions, and is never 'told' which response it should have made.

As usual begin by inspecting the pattern of weights in the network; you should see that the striatal Go and NoGo units are organized in columns and represent the individual premotor responses, and that this columnar structure is preserved through the BG output nuclei and Thalamus .

To get a sense of how the dynamics of action selection work in more detail, step through a single trial a few cycles at a time. Click Init, and then Cycle on the MasterControl panel. (This will step 5 Cycles at a time by default). During the initial cycles of settling you can observe the basic \"default\" function of the BG to suppress responses. A stimulus input pattern is presented, and both competing responses initially become noisily activated (or \"considered\") in pre/motor cortex. (This noise is helpful for producing exploratory motor actions before learning has occurred). In the absence of Striatum activity, neurons in the GP_Int (globus pallidus internal segment, the output nucleus of the BG) are tonically active (this is due to a reverse leak current in which positive ions leak into the cell rather than out of it as usual). Importantly, the projections from GP_Int units to the Thalamus are inhibitory, so that GP_Int activation chronically suppresses the Thalamus. Because bottom-up thalamic-cortical activity is required for a motor response to become sufficiently activated, this thalamic inhibition prevents all responses from getting executed, leading to only noisy cortical activity and no action selection.

Click a few more cycles until you see activity in the Striatum in response to the Input pattern. The Striatum is divided into two layers, with \"Go\" units in the left layer, and \"NoGo\" units in the right, and separate columns for each response. The first column of Go units receives input from the first column of motor units (which we will call R1), whereas the second column receives input from the second column (R2), and similarly for NoGo units (columns 1 and 2 of the NoGo Layer are NoGo-R1 and NoGo-R2). However, the particular Go or NoGo units within a column that get active depend also on the sensory stimulus Input. Thus the striatal units encode conjunctions between stimulus input and actions that are considered in motor cortex, so that some units represent Go-R1 for a particular stimulus, whereas others may become active for another stimulus. If a particular column of Go units is more active than the NoGo units, it will tend to inhibit the corresponding column of the GP_Int, which ultimately will allow that action to be executed.

Step through a few more cycles until you see this inhibition of a column in GP_Int. You should see that as the GP_Int units become inhibited, the Thalamus is no longer suppressed. This process is referred to as \"disinhibition\" because the effect of the striatal Go activation is not to directly excite, but only to remove inhibition of GP_Int onto Thalamus. The corresponding column of Thalamus will become excited only if it also receives top down activation from motor units in the same column. It is this property that makes the BG contribution to action selection a *gating* process: noisy striatal activity would not by itself select an action unless the motor cortex was already 'considering' that action as a plausible candidate. Similarly, in some cases both responses may get a similar level of Go activity in striatum initially, and in this case only the one also having greater cortical activity will be gated.

You should see that once a Thalamic unit is active, the corresponding column of cortical motor units (PMC) quickly becomes maximally active, while the competing motor column is inhibited. (There is lateral inhibition between the competing motor responses, and the thalamic activation gives the winning column sufficient activity so that the other column is completely inhibited).

Once you are finished watching the network activations evolve in this trial, switch to stepping by Settle instead of Cycle. Step through a few trials in the same way. You may also see some NoGo activity (in the right half of striatal units), which would serve to prevent selection of the corresponding response, because NoGo units project to and inhibit the external segment of the globus pallidus (GP_Ext), which in turn send inhibitory projections to the GP_Int. Thus whereas Go activity disinhibits the Thalamus, NoGo activity has the opposite effect, further activating GP_Int so that the Thalamus remains inhibited. Before learning. whether Go or NoGo activity for a given response predominates is somewhat arbitrary (related to random synaptic weights and overall dopamine levels), but informative differences will emerge with learning.

Each trial consists of two settling phases: one in which the network selects a response, and another in which it receives dopaminergic feedback about whether the outcome was good or bad. You should also see that depending on whether the network responded correctly or not (in the task described below), there will be either a dopamine burst (SNc units completely activated) or dip (complete inhibition). This reinforcement forms the basis for learning in the model, as described next.

Learning

Dopamine (DA) from the SNc modulates the relative balance of activity in Go versus NoGo units via simulated D1 and D2 receptors. Dopamine effects are greatest on those striatal units that are already activated by corticostriatal glutamatergic input. Go units activated by the current stimulus and motor response are further excited by D1 receptor stimulation. In contrast, DA is uniformally inhibitory on NoGo units via D2 receptors. This differential effect of DA on Go and NoGo units, via D1 and D2 receptors, affects performance (i.e., more tonic DA leads to more Go and associated response vigor, faster reaction times) and, critically, learning.

Specifically, when the network selects the 'correct' response, a dopamine burst subsequently reinforces the response, further exciting Go units and inhibiting NoGo units. Learning occurs during this phasic DA signal, so that synapses between active cortical and striatal Go units are strengthened, whereas those for NoGo units are weakened. This learning allows the striatum to facilitate selection of the rewarding response in future presentations of the same stimulus. In contrast, if the network selects the incorrect response, DA units cease firing, and the associated dip in DA activity allows NoGo units (which were previously inhibited by DA) to become excited. The resulting increase in activity is also associated with strengthening of synapses from active cortical cells. With learning, NoGo cells differentially respond to stimulus-response combinations that have negative value, so that non-rewarding responses are likely to be suppressed. The mechanisms by which DA affects activity and plasticity are motivated by several biological experiments and are consistent with effects of dopamine D1 and D2 pharmacological agents on activity and long term plasticity (see Collons & Frank, 2014 for a recent review and formalization using a more abstract algorithmic model).

The net result is that the BG selects one response if a particular \"Go\" signal in the striatum is stronger than its corresponding \"NoGo\" signal, while concurrently suppressing alternative responses. Because direct and indirect pathway cells compete at BG output, the action most likely to be gated is a function of the difference in activity in these pathways for each action in parallel.

Training the model in probabilistic reinforcement tasks

Now that we've seen how the dynamics of action selection and learning work, let's put the mechanisms to a test, and see how they are sensitive to dopamine manipulations as in empirical studies. Specifically, many studies implicate the basal ganglia dopamine system in reinforcement learning in probabilistic environments. In these tasks, multiple stimuli are presented on different trials, and participants have to learn by trial and error which response to make. The difficulty is not only that there is no clear underlying 'rule' for determining which response to make (it is determined arbitrarily), but also that there is no absolute answer that will always work. However, certain responses are reinforced on a greater proportion of trials than others, so that people have to learn to integrate the reinforcement history across multiple instances to determine the optimal response.

This project simulates the role of the basal ganglia dopamine system in learning and reward-based decision making. We focus here on a task that requires differential learning from probabilistic positive vs negative RPEs in separate conditions, much like Bodi et al 2010, who showed starkly different learning curves for Parkinson patients on and off medication. When a stimulus S1 is presented, the network can respond by selecting Response R1 or R2. When R1 is chosen, it will be rewarded (dopamine burst) on 80% of trials, and punished (dopamine dip) on the remaining 20%. When R2 is chosen it will be rewarded on 60% of trials. Thus this discrimination requires learn which of the two responses has the highest reward value. But when stimulus S2 is presented the discrimination to be learned is 40:20 reward (and hence 60:80 negative outcomes) for selecting between R3 and R4, and hence requires learning which action is most often associated with negative RPE's (ie the most reliable feedback is that R4 is punished on 80% of trials).

To run a batch of intact networks, on the MasterControl panel make sure num_intact_snc_units is set to 4. Then just click Init and Run, which will run a batch of 20 networks for 5 epochs of training (trials per condition per epoch). You may want to uncheck the display box on the network so that it runs faster (it takes time to update the cycle by cycle activations on the network view).

After the batch of networks is finished, the average learning curves, divided into difficulty (80 vs 60% reinforcement contingencies) are shown on the .T3Tab.trl_group graph. The black curve shows accuracy for the \"rich\" 80:60 discrimination (how often R1 is selected), and the red curve shows accuracy in the \"lean\" 40:20 discrimination (how often R3 is selected), as a function of training epochs.

Simulating Parkinson's disease and dopamine medications

Empirical studies testing the predictions of this model have shown that patients with Parkinson's disease (PD) show different patterns of Go or NoGo learning impairments depending on whether they are medicated or not (Frank et al, 2004; 2007; Palminteri et al, 2009, Bodi et al, 2010, etc).

{{cmd|To simulate Parkinson's disease (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, i.e. 75% DA damage - you can choose 2 or 3 for more intermediate effects). This reduction in number of intact DA units leads to effectively reduced tonic and phasic DA levels in the Striatum.}}

You can step through a few trials to examine network dynamics under this dopamine depleted state. You might see overall greater levels of NoGo activation, which also produces general slowing in action selection (i.e. akinesia as in the disease). If you look at the network as it settles, you'll likely see that in the beginning of training the network has difficulty gating a response at all -- a cardinal symptom of PD - but nevertheless, the noise in motor cortex allows it to pick something randomly. The networks can still benefit from reinforcement at this stage and eventually do learn to gate responses with the BG, once the Go weights are sufficiently strong (you can see this if you look at settling later on during training).

{{cmd|Run a full batch of networks in this PD state across the task. What happens to learning in the two conditions? Remember that good learning from positive discriminations will involve higher performance in the black curve, whereas better learning from negative outcomes will involve higher performance in the red curve. e two test conditiosn) in terms of the mechanisms in this model.}}

This avoidance bias is similar to what is observed empirically with this task, and has also been shown in both the model and in animal studies to underly a progressive development of Parkinsonian symptoms in motor skill learning. Essentially the network learns to avoid selecting actions with experience, because the DA-depleted BG interprets these actions as if they had negative outcomes (see Wiecki & Frank 2010; Beeler et al., 2012 for empirical demonstration of progressive development of Parkinsonian symptoms that are explained by exaggerated NoGo learning). You can also simulate effects of DA medication given to PD patients: set the number of intact DA units back to 4 units (to simulate the increase in DA synthesis due to levodopa, the main form of medication). But in addition to increasing dopamine availability, medications also continually and directly stimulate dopamine D2 receptors (so-called D2 agonists). To capture this effect, increase d2_acq (which reflects the impact of dopamine onto D2 receptors) from the default of 0.08 to 0.15. This will make it harder for NoGo units to respond to negative outcomes during DA dips (which requires less D2 stimulation; see Frank 2005).

Hit Init and Run.

{{cmd|What happens to learning curves? Compare this performance to those you observed in intact networks (with default levels of D2 stimulation), and explain any differences in terms of the mechanisms in this model.}}

Learning habits in the cortico-cortical pathway

The corticostriatal pathway and reinforcement learning is not the only form of learning in this model. There is also unsupervised Hebbian learning that occurs directly from sensory to motor cortex. This pathway learns the statistics of its own actions -- when a particular stimulus is presented, on average which action did it select in the past? As long as this learning is slower than that in the BG, the actions that had been most frequently selected for this stimulus will be those that were most often reinforced (Frank, 2005; Frank & Claus 2006). This learning provides a mechanism by which the development and learning of habits is initially dependent on BG and dopamine function, but their later expression is not: once these mappings are strong enough, the network can rapidly activate only the most appropriate response and is not dependent on BG gating. This provides a natural explanation for the following observations: (i) While learning of simple instrumental actions are initially BG and DA-dependent, their later expression is not (Smith-Roe & Kelley, 2000), (ii) in well-learned tasks, striatal activation is sometimes seen *after* motor unit activation and the onset of movement (Alexander & Crutcher, 1990) and (iii) Parkinson's patients have much less difficulty executing well learned motor actions.

To see this in the model, change the Input_Motor_lrate from 0 (this learning has been turned off in this network so far) to a .001 (it is important that Hebbian learning is slow relative to reinforcement learning, so that the habits ingrained in cortex stamp-in the ones that have been selected based on reward!). Make sure the network is in the intact state (4 SNc units, DA burst val =1). With the network display turned on, run a single network from the LeabraTrain program and stop it near the end of training (e.g., after 25 epochs) and just step through a few trials and observe the network activity in the motor cortex. You should see that well before the BG gates an action, the motor cortex now preferentially activates a single response to the stimulus, which will be the one it most often has activated in the past (and if the RL process worked well in the BG, it will also be the more rewarding response). Thus this provides a simple demonstration that the motor cortex can first generate the candidate actions based on their prior probability of selection in the current sensory context, and if more than one of these actions is a suitable candidate, the BG can select between them. Also, if you let the network run a full set of batches, you should see that by the end of training they more reliably learn the difficult 60/40 discrimination (see trl_group panel): corticocortical learning forces it to more robustly stick with the action that works the most frequently and not be subject to a string of a few bad outcomes.

A few technical details

Note that all accuracy analysis occur after filtering out trials in which a response was not gated by the maximum 150 cycles of each trial (otherwise choices selected in these trials are random, due only to motor cortical noise).

Also, unlike the original model, this particular version of the model uses a population of inhibitory interneurons to regulate striatal activity rather than the simplified k-winner take all (kWTA) approximation (the basic effects of DA manipulation apply also in the basic model). (The inhibitory interneurons are active in this network but iconified to minimize the amount you have to look at - feel free to click on that layer and de-iconify it to watch those dynamics!) The original simplification did not permit independent manipulation of the D2 inhibitory projections, because kWTA 'hijacks' the inhibitory currents in each unit. In earlier simulations the effects of DA were therefore always simultaneously affecting GO and NoGo cells -- more DA was associated with more Go excitation via D1 projection -- whereas here we can independently manipulate D2 receptor strength or blockade etc (by varying the strength of the inhibitory weight scale from DA units to NoGo cells) separately from general inhibitory effects within striatum (implemented with inhibitory interneurons that contribute to inhibitory currents in striatal cells but do not hijack them entirely) . Including inhibitory interneurons is somewhat more realistic (GABAergic neurons regulate spiny neuron activity in striatum), but the main reason for this is to enable other manipulations of D2 receptor inhibitory effects independently from inhibitory regulation of striatal cells in general (both Go and NoGo) based on inhibitory neuron activity. (see technical note 4 at the bottom for more details). This allows us to explore effects of D2 receptor sensitivity, blockade etc. = This simplified basal ganglia (BG) network considers learning and action selection in just the direct 'Go' and indirect 'NoGo' pathways, based on Frank (2005) (ignoring more elaborated aspects of the circuitry explored in other models, including subthalamic nucleus and the 'hyperdirect' pathway, the cholinergic interneurons, and interactions among multiple cortico-BG circuits).

As opposed to the probabilistic selection task considered in other BG projects on this site, which involves a transfer phase to assess previous learning, here we model simple differences in learning curves depending on whether learning requires differentiating among two responses that have relatively high values (80% vs. 60% reward), or two responses that have relatively low values (40% vs 20% reward). While these discriminations both differ in reward by 20%, requring integration of probabilities over time, they differ in whether the majority of information is provided in terms of positive or negative reward prediction errors.

(If you have already read the subsequent sections for other BG projects, just skip to \"Training the model in probabilistic reinforcement tasks\" below).

The BG circuitry is notoriously complex and counterintuitive, involving a combination between excitatory and inhibitory projections and multiple pathways. Given a sensory stimulus, the pre/motor cortex generates candidate motor actions, and then the BG selectively \"gate\" one of these actions to be executed while suppressing the other action. This gating process occurs via a sequence of steps from the Striatum through two opposing pathways (the direct and indirect pathways) to the output nucleus, the Thalamus, and back up to cortex. The BG learn which actions to select and which to suppress as a function of reinforcement signals encoded by dopamine. That is, unlike the error-driven *supervised* learning mechanisms in other task learning simulations, this network learns to make responses based purely on an unsupervised reinforcement signal conveying the reward value of outcomes that follow actions, and is never 'told' which response it should have made.

As usual begin by inspecting the pattern of weights in the network; you should see that the striatal Go and NoGo units are organized in columns and represent the individual premotor responses, and that this columnar structure is preserved through the BG output nuclei and Thalamus .

To get a sense of how the dynamics of action selection work in more detail, step through a single trial a few cycles at a time. Click Init, and then Cycle on the MasterControl panel. (This will step 5 Cycles at a time by default). During the initial cycles of settling you can observe the basic \"default\" function of the BG to suppress responses. A stimulus input pattern is presented, and both competing responses initially become noisily activated (or \"considered\") in pre/motor cortex. (This noise is helpful for producing exploratory motor actions before learning has occurred). In the absence of Striatum activity, neurons in the GP_Int (globus pallidus internal segment, the output nucleus of the BG) are tonically active (this is due to a reverse leak current in which positive ions leak into the cell rather than out of it as usual). Importantly, the projections from GP_Int units to the Thalamus are inhibitory, so that GP_Int activation chronically suppresses the Thalamus. Because bottom-up thalamic-cortical activity is required for a motor response to become sufficiently activated, this thalamic inhibition prevents all responses from getting executed, leading to only noisy cortical activity and no action selection.

Click a few more cycles until you see activity in the Striatum in response to the Input pattern. The Striatum is divided into two layers, with \"Go\" units in the left layer, and \"NoGo\" units in the right, and separate columns for each response. The first column of Go units receives input from the first column of motor units (which we will call R1), whereas the second column receives input from the second column (R2), and similarly for NoGo units (columns 1 and 2 of the NoGo Layer are NoGo-R1 and NoGo-R2). However, the particular Go or NoGo units within a column that get active depend also on the sensory stimulus Input. Thus the striatal units encode conjunctions between stimulus input and actions that are considered in motor cortex, so that some units represent Go-R1 for a particular stimulus, whereas others may become active for another stimulus. If a particular column of Go units is more active than the NoGo units, it will tend to inhibit the corresponding column of the GP_Int, which ultimately will allow that action to be executed.

Step through a few more cycles until you see this inhibition of a column in GP_Int. You should see that as the GP_Int units become inhibited, the Thalamus is no longer suppressed. This process is referred to as \"disinhibition\" because the effect of the striatal Go activation is not to directly excite, but only to remove inhibition of GP_Int onto Thalamus. The corresponding column of Thalamus will become excited only if it also receives top down activation from motor units in the same column. It is this property that makes the BG contribution to action selection a *gating* process: noisy striatal activity would not by itself select an action unless the motor cortex was already 'considering' that action as a plausible candidate. Similarly, in some cases both responses may get a similar level of Go activity in striatum initially, and in this case only the one also having greater cortical activity will be gated.

You should see that once a Thalamic unit is active, the corresponding column of cortical motor units (PMC) quickly becomes maximally active, while the competing motor column is inhibited. (There is lateral inhibition between the competing motor responses, and the thalamic activation gives the winning column sufficient activity so that the other column is completely inhibited).

Once you are finished watching the network activations evolve in this trial, switch to stepping by Settle instead of Cycle. Step through a few trials in the same way. You may also see some NoGo activity (in the right half of striatal units), which would serve to prevent selection of the corresponding response, because NoGo units project to and inhibit the external segment of the globus pallidus (GP_Ext), which in turn send inhibitory projections to the GP_Int. Thus whereas Go activity disinhibits the Thalamus, NoGo activity has the opposite effect, further activating GP_Int so that the Thalamus remains inhibited. Before learning. whether Go or NoGo activity for a given response predominates is somewhat arbitrary (related to random synaptic weights and overall dopamine levels), but informative differences will emerge with learning.

Each trial consists of two settling phases: one in which the network selects a response, and another in which it receives dopaminergic feedback about whether the outcome was good or bad. You should also see that depending on whether the network responded correctly or not (in the task described below), there will be either a dopamine burst (SNc units completely activated) or dip (complete inhibition). This reinforcement forms the basis for learning in the model, as described next.

Learning

Dopamine (DA) from the SNc modulates the relative balance of activity in Go versus NoGo units via simulated D1 and D2 receptors. Dopamine effects are greatest on those striatal units that are already activated by corticostriatal glutamatergic input. Go units activated by the current stimulus and motor response are further excited by D1 receptor stimulation. In contrast, DA is uniformally inhibitory on NoGo units via D2 receptors. This differential effect of DA on Go and NoGo units, via D1 and D2 receptors, affects performance (i.e., more tonic DA leads to more Go and associated response vigor, faster reaction times) and, critically, learning.

Specifically, when the network selects the 'correct' response, a dopamine burst subsequently reinforces the response, further exciting Go units and inhibiting NoGo units. Learning occurs during this phasic DA signal, so that synapses between active cortical and striatal Go units are strengthened, whereas those for NoGo units are weakened. This learning allows the striatum to facilitate selection of the rewarding response in future presentations of the same stimulus. In contrast, if the network selects the incorrect response, DA units cease firing, and the associated dip in DA activity allows NoGo units (which were previously inhibited by DA) to become excited. The resulting increase in activity is also associated with strengthening of synapses from active cortical cells. With learning, NoGo cells differentially respond to stimulus-response combinations that have negative value, so that non-rewarding responses are likely to be suppressed. The mechanisms by which DA affects activity and plasticity are motivated by several biological experiments and are consistent with effects of dopamine D1 and D2 pharmacological agents on activity and long term plasticity (see Collons & Frank, 2014 for a recent review and formalization using a more abstract algorithmic model).

The net result is that the BG selects one response if a particular \"Go\" signal in the striatum is stronger than its corresponding \"NoGo\" signal, while concurrently suppressing alternative responses. Because direct and indirect pathway cells compete at BG output, the action most likely to be gated is a function of the difference in activity in these pathways for each action in parallel.

Training the model in probabilistic reinforcement tasks

Now that we've seen how the dynamics of action selection and learning work, let's put the mechanisms to a test, and see how they are sensitive to dopamine manipulations as in empirical studies. Specifically, many studies implicate the basal ganglia dopamine system in reinforcement learning in probabilistic environments. In these tasks, multiple stimuli are presented on different trials, and participants have to learn by trial and error which response to make. The difficulty is not only that there is no clear underlying 'rule' for determining which response to make (it is determined arbitrarily), but also that there is no absolute answer that will always work. However, certain responses are reinforced on a greater proportion of trials than others, so that people have to learn to integrate the reinforcement history across multiple instances to determine the optimal response.

This project simulates the role of the basal ganglia dopamine system in learning and reward-based decision making. We focus here on a task that requires differential learning from probabilistic positive vs negative RPEs in separate conditions, much like Bodi et al 2009. When a stimulus S1 is presented, the network can respond by selecting Response R1 or R2. When R1 is chosen, it will be rewarded (dopamine burst) on 80% of trials, and punished (dopamine dip) on the remaining 20%. When R2 is chosen it will be rewarded on 60% of trials. Thus this discrimination requires learn which of the two responses has the highest reward value. But when stimulus S2 is presented the discrimination to be learned is 40:20 reward (and hence 60:80 negative outcomes) for selecting between R3 and R4, and hence requires learning which action is most often associated with negative RPE's (ie the most reliable feedback is that R4 is punished on 80% of trials).

To run a batch of intact networks, on the MasterControl panel make sure num_intact_snc_units is set to 4. Then just click Init and Run, which will run a batch of 20 networks for 5 epochs of training (8 trials per condition per epoch). You may want to uncheck the display box on the network so that it runs faster (it takes time to update the cycle by cycle activations on the network view).

After the batch of networks is finished, the average learning curves, divided into difficulty (80 vs 60% reinforcement contingencies) are shown on the .T3Tab.trl_group graph. The black curve shows accuracy for the \"rich\" 80:60 discrimination (how often R1 is selected), and the red curve shows accuracy in the \"lean\" 40:20 discrimination (how often R3 is selected), as a function of training epochs.

Simulating Parkinson's disease and dopamine medications

Empirical studies testing the predictions of this model have shown that patients with Parkinson's disease (PD) show different patterns of Go or NoGo learning impairments depending on whether they are medicated or not (Frank et al, 2004; 2007; Palminteri et al, 2009, Bodi et al, 2010, etc).

{{cmd|To simulate Parkinson's disease (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, i.e. 75% DA damage - you can choose 2 or 3 for more intermediate effects). This reduction in number of intact DA units leads to effectively reduced tonic and phasic DA levels in the Striatum.}}

You can step through a few trials to examine network dynamics under this dopamine depleted state. You might see overall greater levels of NoGo activation, which also produces general slowing in action selection (i.e. akinesia as in the disease). If you look at the network as it settles, you'll likely see that in the beginning of training the network has difficulty gating a response at all -- a cardinal symptom of PD - but nevertheless, the noise in motor cortex allows it to pick something randomly. The networks can still benefit from reinforcement at this stage and eventually do learn to gate responses with the BG, once the Go weights are sufficiently strong (you can see this if you look at settling later on during training).

{{cmd|Run a full batch of networks in this PD state across the task. What happens to learning in the two conditions? Remember that good learning from positive discriminations will involve higher performance in the black curve, whereas better learning from negative outcomes will involve higher performance in the red curve. e two test conditiosn) in terms of the mechanisms in this model.}}

This avoidance bias is similar to what is observed empirically with this task, and has also been shown in both the model and in animal studies to underly a progressive development of Parkinsonian symptoms in motor skill learning. Essentially the network learns to avoid selecting actions with experience, because the DA-depleted BG interprets these actions as if they had negative outcomes (see Wiecki & Frank 2010, Beeler et al., 2012 for empirical demonstration of progressive development of Parkinsonian symptoms that are explained by exaggerated NoGo learning). You can also simulate effects of DA medication given to PD patients: set the number of intact DA units back to 4 units (to simulate the increase in DA synthesis due to levodopa, the main form of medication). But in addition to increasing dopamine availability, medications also continually and directly stimulate dopamine D2 receptors (so-called D2 agonists). To capture this effect, increase d2_acq (which reflects the impact of dopamine onto D2 receptors) from the default of 0.1 to 0.15. This will make it harder for NoGo units to respond to negative outcomes during DA dips (which requires less D2 stimulation; see Frank 2005).

Hit Init and Run.

{{cmd|What happens to learning curves? Compare this performance to those you observed in intact networks (with default levels of D2 stimulation), and explain any differences in terms of the mechanisms in this model.}}

Learning habits in the cortico-cortical pathway

The corticostriatal pathway and reinforcement learning is not the only form of learning in this model. There is also unsupervised Hebbian learning that occurs directly from sensory to motor cortex. This pathway learns the statistics of its own actions -- when a particular stimulus is presented, on average which action did it select in the past? As long as this learning is slower than that in the BG, the actions that had been most frequently selected for this stimulus will be those that were most often reinforced (Frank, 2005; Frank & Claus 2006). This learning provides a mechanism by which the development and learning of habits is initially dependent on BG and dopamine function, but their later expression is not: once these mappings are strong enough, the network can rapidly activate only the most appropriate response and is not dependent on BG gating. This provides a natural explanation for the following observations: (i) While learning of simple instrumental actions are initially BG and DA-dependent, their later expression is not (Smith-Roe & Kelley, 2000), (ii) in well-learned tasks, striatal activation is sometimes seen *after* motor unit activation and the onset of movement (Alexander & Crutcher, 1990) and (iii) Parkinson's patients have much less difficulty executing well learned motor actions.

To see this in the model, change the Input_Motor_lrate from 0 (this learning has been turned off in this network so far) to a .001 (it is important that Hebbian learning is slow relative to reinforcement learning, so that the habits ingrained in cortex stamp-in the ones that have been selected based on reward!). Make sure the network is in the intact state (4 SNc units). With the network display turned on, run a single network from the LeabraTrain program and stop it near the end of training (e.g., after 3 epochs) and just step through a few trials and observe the network activity in the motor cortex. You should see that well before the BG gates an action, the motor cortex now preferentially activates a single response to the stimulus, which will be the one it most often has activated in the past (and if the RL process worked well in the BG, it will also be the more rewarding response). Thus this provides a simple demonstration that the motor cortex can first generate the candidate actions based on their prior probability of selection in the current sensory context, and if more than one of these actions is a suitable candidate, the BG can select between them. Also, if you let the network run a full set of batches, you should see that by the end of training they more reliably learn the difficult 60/40 discrimination (see trl_group panel): corticocortical learning forces it to more robustly stick with the action that works the most frequently and not be subject to a string of a few bad outcomes.

A few technical details

Note that all accuracy analysis occur after filtering out trials in which a response was not gated by the maximum 150 cycles of each trial (otherwise choices selected in these trials are random, due only to motor cortical noise).

Also, unlike the original model, this particular version of the model uses a population of inhibitory interneurons to regulate striatal activity rather than the simplified k-winner take all (kWTA) approximation (the basic effects of DA manipulation apply also in the basic model). (The inhibitory interneurons are active in this network but iconified to minimize the amount you have to look at - feel free to click on that layer and de-iconify it to watch those dynamics!) The original simplification did not permit independent manipulation of the D2 inhibitory projections, because kWTA 'hijacks' the inhibitory currents in each unit. In earlier simulations the effects of DA were therefore always simultaneously affecting GO and NoGo cells -- more DA was associated with more Go excitation via D1 projection -- whereas here we can independently manipulate D2 receptor strength or blockade etc (by varying the strength of the inhibitory weight scale from DA units to NoGo cells) separately from general inhibitory effects within striatum (implemented with inhibitory interneurons that contribute to inhibitory currents in striatal cells but do not hijack them entirely) . Including inhibitory interneurons is somewhat more realistic (GABAergic neurons regulate spiny neuron activity in striatum), but the main reason for this is to enable other manipulations of D2 receptor inhibitory effects independently from inhibitory regulation of striatal cells in general (both Go and NoGo) based on inhibitory neuron activity. (see technical note 4 at the bottom for more details). This allows us to explore effects of D2 receptor sensitivity, blockade etc. "; }; }; wizards { name="wizards"; el_typ=LeabraWizard; el_def=0; LeabraWizard @["LeabraWizard_2"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItemBase; el_def=0; UserDataItem @["NO_CLIP"] { name="NO_CLIP"; value 1 0=1; val_type_fixed=0; }; }; name="LeabraWizard_2"; }; }; ctrl_panels { name="ctrl_panels"; el_typ=ControlPanel; el_def=0; ControlPanel @["MasterControl"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["user_pinned"] { name="user_pinned"; value 1 0=1; val_type_fixed=0; }; }; name="MasterControl"; updt_while_running=0; desc=; mbrs { name="mbrs"; el_typ=EditMbrItem; el_def=0; EditMbrItem @[0] { label="DA_burst_"; desc=" real value -- this is the current actual value of the variable at all times for global variables, and is used as an initialization value for local variables (they start with this value, but what you see here is NOT their current value as the program runs)"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["DA_burst_val"]$$; mbr=ProgVar::real_val; is_numeric=1; is_single=1; param_search { record=0; search=0; range="0:1:0.1"; }; param_set_value { saved_value=; }; notes { notes=; }; }; EditMbrItem @[1] { label="DA_dip_"; desc=" real value -- this is the current actual value of the variable at all times for global variables, and is used as an initialization value for local variables (they start with this value, but what you see here is NOT their current value as the program runs)"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["DA_dip_val"]$$; mbr=ProgVar::real_val; is_numeric=1; is_single=1; param_search { record=0; search=0; range="0:1:0.1"; }; param_set_value { saved_value=; }; notes { notes=; }; }; EditMbrItem @[2] { label="num_intact_snc_units"; desc=" integer value -- this is the current actual value of the variable at all times for global variables, and is used as an initialization value for local variables (they start with this value, but what you see here is NOT their current value as the program runs)"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["num_intact_snc_units"]$$; mbr=ProgVar::int_val; is_numeric=1; is_single=1; param_search { record=0; search=0; range="0:1:0.1"; }; param_set_value { saved_value=; }; notes { notes=; }; }; EditMbrItem @[3] { label="burst_pause_duration_"; desc=" the expression to compute and assign to the member
: enter the expression here -- use Ctrl-L to pull up a lookup dialog for members, methods, types, etc -- or 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
var lookup: lookup a program variable and add it to the current expression (this field then returns to empty/NULL)"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].prog_code[6].true_code[0]$$; mbr=MemberAssign::expr; is_numeric=0; is_single=0; param_search { record=0; search=0; range="0:1:0.1"; }; param_set_value { saved_value=; }; notes { notes=; }; }; EditMbrItem @[4] { label="d2_acq"; desc=" real value -- this is the current actual value of the variable at all times for global variables, and is used as an initialization value for local variables (they start with this value, but what you see here is NOT their current value as the program runs)"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].prog_code[0].local_vars["d2_acq"]$$; mbr=ProgVar::real_val; is_numeric=1; is_single=1; param_search { record=0; search=0; range="0:1:0.1"; }; param_set_value { saved_value=; }; notes { notes=; }; }; EditMbrItem @[5] { label="Input_Motor_lrate"; desc="[Default: 0.01;0.02] [0.01 for std Leabra, .02 for CtLeabra] learning rate -- how fast do the weights change per experience"; cust_desc=0; base=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["Input_Motor_Prepotent_"]$$; mbr=LeabraConSpec::lrate; is_numeric=1; is_single=1; param_search { record=0; search=0; range="0:1:0.1"; }; param_set_value { saved_value=; }; notes { notes=; }; }; EditMbrItem @[6] { label="tonic_da"; desc=" real value -- this is the current actual value of the variable at all times for global variables, and is used as an initialization value for local variables (they start with this value, but what you see here is NOT their current value as the program runs)"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["tonic_DA"]$$; mbr=ProgVar::real_val; is_numeric=1; is_single=1; param_search { record=1; search=0; range=; }; param_set_value { saved_value=; }; notes { notes=; }; }; }; mths { name="mths"; el_typ=EditMthItem; el_def=0; group_type=GT_BUTTONS; EditMthItem @[0] { label="Init"; desc=" run init_code, global variables retain current values unless reset in the init_code"; cust_desc=0; base=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"]$$; mth=Program::Init; }; EditMthItem @[1] { label="Run"; desc=" run the program -- if not yet Init, will run Init first"; cust_desc=0; base=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"]$; mth=Program::Run_Gui; }; EditMthItem @[2] { label="Step"; desc=" step the program at the level of the given program -- if NULL then step_prog default value will be used"; cust_desc=0; base=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"]$; mth=Program::Step_Gui; }; EditMthItem @[3] { label="Stop"; desc=" stop the current program at its next natural stopping point (i.e., cleanly stopping when appropriate chunks of computation have completed)"; cust_desc=0; base=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"]$; mth=Program::Stop; }; }; }; ClusterRun @["ClusterRun"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["user_pinned"] { name="user_pinned"; value 1 0=1; val_type_fixed=0; }; }; name="ClusterRun"; updt_while_running=0; desc=; mbrs { name="mbrs"; el_typ=EditMbrItem; el_def=0; }; mths { name="mths"; el_typ=EditMthItem; el_def=0; group_type=GT_BUTTONS; }; jobs_running { name="jobs_running"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["cluster"] { name="cluster"; desc="name of cluster to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["user"] { name="user"; desc="user who ran this job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["tag"] { name="tag"; desc="unique tag id for this job -- all files etc are named according to this tag"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status"] { name="status"; desc="status of job: REQUESTED, CANCELLED, SUBMITTED, QUEUED, RUNNING, DONE, KILLED"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["label"] { name="label"; desc="label for the job -- a brief description that you can use to label this job's results on your graph -- in general notes should have more general info and then label should JUST describe what is unique about the current run"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["notes"] { name="notes"; desc="notes for the job -- describe any specific information about the model configuration etc -- can use this for searching and sorting results"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["filename"] { name="filename"; desc="name of the specific project used for this job -- because multiple versions of a model are often run under the same project name"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["params"] { name="params"; desc="emergent parameters based on currently selected items in the ClusterRun"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status_info"] { name="status_info"; desc="more detailed information about status"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_time"] { name="submit_time"; desc="when was the job submitted (tracks time from emergent client submission)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["start_time"] { name="start_time"; desc="when did the job actually start running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["end_time"] { name="end_time"; desc="when did the job finish running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["running_time"] { name="running_time"; desc="total running time in days/hours/minutes"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_no"] { name="job_no"; desc="job number on cluster -- assigned once the job is submitted to the cluster"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out"] { name="job_out"; desc="job output information -- contains (top of) the job standard output and standard error output as the job is running (truncated to top 2048 characters if longer than that) -- full information available in job_out_file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out_file"] { name="job_out_file"; desc="job output file -- file name containing full job output information -- file name should be tag.out"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["dat_files"] { name="dat_files"; desc="list of data table output (results) files generated by model (space separated) -- these files have the tag in their name, and end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["other_files"] { name="other_files"; desc="list of other output (results) files generated by model (space separated) -- these files have the tag in their name but do not end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="command_id"; desc="id for this command, assigned by the search algorithm in an algorithm-specific manner (optional)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["command"] { name="command"; desc="emergent command line, up to point of parameters"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["repo_url"] { name="repo_url"; desc="name of repository to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["queue"] { name="queue"; desc="if specified, indicate a particular queue on the computing resource"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["run_time"] { name="run_time"; desc="how long will the jobs take to run -- syntax is number followed by unit indicator -- m=minutes, h=hours, d=days -- e.g., 30m, 12h, or 2d -- typically the job will be killed if it exceeds this amount of time, so be sure to not underestimate"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="ram_gb"; desc="how many gigabytes of ram is required? 0 means do not specify this parameter for the job submission -- for large memory jobs, it can be important to specify this to ensure proper allocation of resources"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="n_threads"; desc="number of parallel threads to use for running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_nodes"; desc="number of physical nodes to use for mpi run -- 0 or -1 means not to use mpi"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_per_node"; desc="number of processes to use per MPI node to use for mpi run - total nodes is mpi_nodes * mpi_per_node"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_batches"; desc="if > 0, use parallel batch mode with this number of batches"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_nodes"; desc="actually pb_n_batches_per -- re-using this parameter that was previously used for a different purpose -- number of batches to run sequentially within a single job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_svn"] { name="submit_svn"; desc="svn revision for the original job submission"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_job"] { name="submit_job"; desc="index of job number within a given submission -- equal to the row number of the original set of jobs submitted in submit_svn jobs"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["done_svn"] { name="done_svn"; desc="svn revision when this job was moved from running to done -- this will contain full set of files generated when running -- for deleted jobs can also recover to this"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["last_svn"] { name="last_svn"; desc="last svn revision for command submission that affected this job in some significant way -- for deleted jobs, this is the svn revision that we recover to"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; jobs_done { name="jobs_done"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["cluster"] { name="cluster"; desc="name of cluster to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["user"] { name="user"; desc="user who ran this job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["tag"] { name="tag"; desc="unique tag id for this job -- all files etc are named according to this tag"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status"] { name="status"; desc="status of job: REQUESTED, CANCELLED, SUBMITTED, QUEUED, RUNNING, DONE, KILLED"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["label"] { name="label"; desc="label for the job -- a brief description that you can use to label this job's results on your graph -- in general notes should have more general info and then label should JUST describe what is unique about the current run"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["notes"] { name="notes"; desc="notes for the job -- describe any specific information about the model configuration etc -- can use this for searching and sorting results"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["filename"] { name="filename"; desc="name of the specific project used for this job -- because multiple versions of a model are often run under the same project name"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["params"] { name="params"; desc="emergent parameters based on currently selected items in the ClusterRun"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status_info"] { name="status_info"; desc="more detailed information about status"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_time"] { name="submit_time"; desc="when was the job submitted (tracks time from emergent client submission)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["start_time"] { name="start_time"; desc="when did the job actually start running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["end_time"] { name="end_time"; desc="when did the job finish running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["running_time"] { name="running_time"; desc="total running time in days/hours/minutes"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_no"] { name="job_no"; desc="job number on cluster -- assigned once the job is submitted to the cluster"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out"] { name="job_out"; desc="job output information -- contains (top of) the job standard output and standard error output as the job is running (truncated to top 2048 characters if longer than that) -- full information available in job_out_file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out_file"] { name="job_out_file"; desc="job output file -- file name containing full job output information -- file name should be tag.out"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["dat_files"] { name="dat_files"; desc="list of data table output (results) files generated by model (space separated) -- these files have the tag in their name, and end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["other_files"] { name="other_files"; desc="list of other output (results) files generated by model (space separated) -- these files have the tag in their name but do not end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="command_id"; desc="id for this command, assigned by the search algorithm in an algorithm-specific manner (optional)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["command"] { name="command"; desc="emergent command line, up to point of parameters"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["repo_url"] { name="repo_url"; desc="name of repository to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["queue"] { name="queue"; desc="if specified, indicate a particular queue on the computing resource"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["run_time"] { name="run_time"; desc="how long will the jobs take to run -- syntax is number followed by unit indicator -- m=minutes, h=hours, d=days -- e.g., 30m, 12h, or 2d -- typically the job will be killed if it exceeds this amount of time, so be sure to not underestimate"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="ram_gb"; desc="how many gigabytes of ram is required? 0 means do not specify this parameter for the job submission -- for large memory jobs, it can be important to specify this to ensure proper allocation of resources"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="n_threads"; desc="number of parallel threads to use for running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_nodes"; desc="number of physical nodes to use for mpi run -- 0 or -1 means not to use mpi"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_per_node"; desc="number of processes to use per MPI node to use for mpi run - total nodes is mpi_nodes * mpi_per_node"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_batches"; desc="if > 0, use parallel batch mode with this number of batches"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_nodes"; desc="actually pb_n_batches_per -- re-using this parameter that was previously used for a different purpose -- number of batches to run sequentially within a single job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_svn"] { name="submit_svn"; desc="svn revision for the original job submission"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_job"] { name="submit_job"; desc="index of job number within a given submission -- equal to the row number of the original set of jobs submitted in submit_svn jobs"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["done_svn"] { name="done_svn"; desc="svn revision when this job was moved from running to done -- this will contain full set of files generated when running -- for deleted jobs can also recover to this"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["last_svn"] { name="last_svn"; desc="last svn revision for command submission that affected this job in some significant way -- for deleted jobs, this is the svn revision that we recover to"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; jobs_deleted { name="jobs_deleted"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["cluster"] { name="cluster"; desc="name of cluster to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["user"] { name="user"; desc="user who ran this job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["tag"] { name="tag"; desc="unique tag id for this job -- all files etc are named according to this tag"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status"] { name="status"; desc="status of job: REQUESTED, CANCELLED, SUBMITTED, QUEUED, RUNNING, DONE, KILLED"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["label"] { name="label"; desc="label for the job -- a brief description that you can use to label this job's results on your graph -- in general notes should have more general info and then label should JUST describe what is unique about the current run"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["notes"] { name="notes"; desc="notes for the job -- describe any specific information about the model configuration etc -- can use this for searching and sorting results"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["filename"] { name="filename"; desc="name of the specific project used for this job -- because multiple versions of a model are often run under the same project name"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["params"] { name="params"; desc="emergent parameters based on currently selected items in the ClusterRun"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status_info"] { name="status_info"; desc="more detailed information about status"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_time"] { name="submit_time"; desc="when was the job submitted (tracks time from emergent client submission)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["start_time"] { name="start_time"; desc="when did the job actually start running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["end_time"] { name="end_time"; desc="when did the job finish running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["running_time"] { name="running_time"; desc="total running time in days/hours/minutes"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_no"] { name="job_no"; desc="job number on cluster -- assigned once the job is submitted to the cluster"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out"] { name="job_out"; desc="job output information -- contains (top of) the job standard output and standard error output as the job is running (truncated to top 2048 characters if longer than that) -- full information available in job_out_file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out_file"] { name="job_out_file"; desc="job output file -- file name containing full job output information -- file name should be tag.out"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["dat_files"] { name="dat_files"; desc="list of data table output (results) files generated by model (space separated) -- these files have the tag in their name, and end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["other_files"] { name="other_files"; desc="list of other output (results) files generated by model (space separated) -- these files have the tag in their name but do not end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="command_id"; desc="id for this command, assigned by the search algorithm in an algorithm-specific manner (optional)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["command"] { name="command"; desc="emergent command line, up to point of parameters"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["repo_url"] { name="repo_url"; desc="name of repository to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["queue"] { name="queue"; desc="if specified, indicate a particular queue on the computing resource"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["run_time"] { name="run_time"; desc="how long will the jobs take to run -- syntax is number followed by unit indicator -- m=minutes, h=hours, d=days -- e.g., 30m, 12h, or 2d -- typically the job will be killed if it exceeds this amount of time, so be sure to not underestimate"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="ram_gb"; desc="how many gigabytes of ram is required? 0 means do not specify this parameter for the job submission -- for large memory jobs, it can be important to specify this to ensure proper allocation of resources"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="n_threads"; desc="number of parallel threads to use for running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_nodes"; desc="number of physical nodes to use for mpi run -- 0 or -1 means not to use mpi"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_per_node"; desc="number of processes to use per MPI node to use for mpi run - total nodes is mpi_nodes * mpi_per_node"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_batches"; desc="if > 0, use parallel batch mode with this number of batches"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_nodes"; desc="actually pb_n_batches_per -- re-using this parameter that was previously used for a different purpose -- number of batches to run sequentially within a single job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_svn"] { name="submit_svn"; desc="svn revision for the original job submission"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_job"] { name="submit_job"; desc="index of job number within a given submission -- equal to the row number of the original set of jobs submitted in submit_svn jobs"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["done_svn"] { name="done_svn"; desc="svn revision when this job was moved from running to done -- this will contain full set of files generated when running -- for deleted jobs can also recover to this"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["last_svn"] { name="last_svn"; desc="last svn revision for command submission that affected this job in some significant way -- for deleted jobs, this is the svn revision that we recover to"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; jobs_archive { name="jobs_archive"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["cluster"] { name="cluster"; desc="name of cluster to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["user"] { name="user"; desc="user who ran this job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["tag"] { name="tag"; desc="unique tag id for this job -- all files etc are named according to this tag"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status"] { name="status"; desc="status of job: REQUESTED, CANCELLED, SUBMITTED, QUEUED, RUNNING, DONE, KILLED"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["label"] { name="label"; desc="label for the job -- a brief description that you can use to label this job's results on your graph -- in general notes should have more general info and then label should JUST describe what is unique about the current run"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["notes"] { name="notes"; desc="notes for the job -- describe any specific information about the model configuration etc -- can use this for searching and sorting results"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["filename"] { name="filename"; desc="name of the specific project used for this job -- because multiple versions of a model are often run under the same project name"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["params"] { name="params"; desc="emergent parameters based on currently selected items in the ClusterRun"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["status_info"] { name="status_info"; desc="more detailed information about status"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_time"] { name="submit_time"; desc="when was the job submitted (tracks time from emergent client submission)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["start_time"] { name="start_time"; desc="when did the job actually start running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["end_time"] { name="end_time"; desc="when did the job finish running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["running_time"] { name="running_time"; desc="total running time in days/hours/minutes"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_no"] { name="job_no"; desc="job number on cluster -- assigned once the job is submitted to the cluster"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out"] { name="job_out"; desc="job output information -- contains (top of) the job standard output and standard error output as the job is running (truncated to top 2048 characters if longer than that) -- full information available in job_out_file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_out_file"] { name="job_out_file"; desc="job output file -- file name containing full job output information -- file name should be tag.out"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["dat_files"] { name="dat_files"; desc="list of data table output (results) files generated by model (space separated) -- these files have the tag in their name, and end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["other_files"] { name="other_files"; desc="list of other output (results) files generated by model (space separated) -- these files have the tag in their name but do not end in .dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["command_id"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="command_id"; desc="id for this command, assigned by the search algorithm in an algorithm-specific manner (optional)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["command"] { name="command"; desc="emergent command line, up to point of parameters"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["repo_url"] { name="repo_url"; desc="name of repository to run job on"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["queue"] { name="queue"; desc="if specified, indicate a particular queue on the computing resource"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["run_time"] { name="run_time"; desc="how long will the jobs take to run -- syntax is number followed by unit indicator -- m=minutes, h=hours, d=days -- e.g., 30m, 12h, or 2d -- typically the job will be killed if it exceeds this amount of time, so be sure to not underestimate"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["ram_gb"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="ram_gb"; desc="how many gigabytes of ram is required? 0 means do not specify this parameter for the job submission -- for large memory jobs, it can be important to specify this to ensure proper allocation of resources"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["n_threads"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="n_threads"; desc="number of parallel threads to use for running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_nodes"; desc="number of physical nodes to use for mpi run -- 0 or -1 means not to use mpi"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["mpi_per_node"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="mpi_per_node"; desc="number of processes to use per MPI node to use for mpi run - total nodes is mpi_nodes * mpi_per_node"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_batches"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_batches"; desc="if > 0, use parallel batch mode with this number of batches"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["pb_nodes"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; }; name="pb_nodes"; desc="actually pb_n_batches_per -- re-using this parameter that was previously used for a different purpose -- number of batches to run sequentially within a single job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_svn"] { name="submit_svn"; desc="svn revision for the original job submission"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["submit_job"] { name="submit_job"; desc="index of job number within a given submission -- equal to the row number of the original set of jobs submitted in submit_svn jobs"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["done_svn"] { name="done_svn"; desc="svn revision when this job was moved from running to done -- this will contain full set of files generated when running -- for deleted jobs can also recover to this"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["last_svn"] { name="last_svn"; desc="last svn revision for command submission that affected this job in some significant way -- for deleted jobs, this is the svn revision that we recover to"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; file_list { name="file_list"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["cluster"] { name="cluster"; desc="cluster where this job was submitted / run"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["user"] { name="user"; desc="user who ran this job"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["file_name"] { name="file_name"; desc="name of file -- does not include any path information"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["tag"] { name="tag"; desc="job tag associated with this file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["size"] { name="size"; desc="size of file -- with typical suffixes (K = kilobytes, M = megabytes, G = gigabytes)"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["kind"] { name="kind"; desc="type of file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["date_modified"] { name="date_modified"; desc="timestamp for when the file was last modified"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["date_created"] { name="date_created"; desc="timestamp for when the file was first created"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["svn_file_path"] { name="svn_file_path"; desc="path to file in SVN repository, relative to root of svn_repo repository"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["proj_file_path"] { name="proj_file_path"; desc="path to file relative to the parent project directory -- e.g., results/filename.dat"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["file_path"] { name="file_path"; desc="full path to file on local file system, including all parent directories and name of file -- takes you directly to the file"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; cluster_info { name="cluster_info"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["queue"] { name="queue"; desc="queue that this info relates to"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["job_no"] { name="job_no"; desc="job number or total number of actve jobs"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["user"] { name="user"; desc="user name"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["state"] { name="state"; desc="current scheduler state -- or description of global state info"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["procs"] { name="procs"; desc="number of processors for this job or for global state info"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["start_time"] { name="start_time"; desc="timestamp for when the job was submitted or started running"; col_flags=SAVE_DATA|READ_ONLY; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; search_algos { name="search_algos"; el_typ=ParamSearchAlgo; el_def=0; }; use_search_algo=0; cur_search_algo=NULL; set_proj_name=0; proj_name=; auto_updt_interval=10; auto_updt_timeout=30; cluster=; clusters=; users=; last_submit_time=; notes=; label=; extra_files=; svn_repo=; repo_url=; queue=; run_time=; exe_cmd="emergent7"; ram_gb=0; n_threads=1; use_mpi=0; mpi_nodes=10; mpi_per_node=1; parallel_batch=0; pb_batches=10; pb_n_batches_per=1; nowin_x=0; enable_kill=0; enable_load=0; enable_notes=1; }; }; param_sets { name="param_sets"; el_typ=ParamSet; el_def=0; }; data { name="data"; el_typ=DataTable; el_def=0; save_tables=1; DataTable_Group @.gp["InputData"] { name="InputData"; el_typ=DataTable; el_def=0; save_tables=1; DataTable @["StdInputData"] { name="StdInputData"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["Name"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="Name"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=118; ar { name="ar"; [16] "9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4"; "9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4"; }; }; float_Data @["Motor_Cortex"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="Motor_Cortex"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 4;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=118; ar { name="ar"; [4 2 16] 1;0;0;0;1;0;0;0;0;1; 0;0;0;1;0;0;1;0;0;0; 1;0;0;0;0;1;0;0;0;1; 0;0;1;0;0;0;1;0;0;0; 0;1;0;0;0;1;0;0;1;0; 0;0;1;0;0;0;0;1;0;0; 0;1;0;0;1;0;0;0;1;0; 0;0;0;1;0;0;0;1;0;0; 1;0;0;0;1;0;0;0;0;1; 0;0;0;1;0;0;1;0;0;0; 1;0;0;0;0;1;0;0;0;1; 0;0;1;0;0;0;1;0;0;0; 0;1;0;0;0;1;0;0; }; }; float_Data @["Output"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="Output"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 4;1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=118; ar { name="ar"; [4 1 16] 1;0;0;0;0;0;1;0;1;0; 0;0;0;0;1;0;1;0;0;0; 0;0;1;0;1;0;0;0;0;0; 1;0;1;0;0;0;0;0;1;0; 1;0;0;0;0;0;1;0;1;0; 0;0;0;0;1;0;1;0;0;0; 0;0;1;0; }; }; float_Data @["Input"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="Input"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 6;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=118; ar { name="ar"; [6 2 16] 0;0;0;0;0;0;1;1;1;1; 1;1;1;1;1;1;1;1;0;0; 0;0;0;0;0;0;0;0;0;0; 1;1;1;1;1;1;1;1;1;1; 1;1;0;0;0;0;0;0;0;0; 0;0;0;0;1;1;1;1;1;1; 1;1;1;1;1;1;0;0;0;0; 0;0;0;0;0;0;0;0;1;1; 1;1;1;1;1;1;1;1;1;1; 0;0;0;0;0;0;0;0;0;0; 0;0;1;1;1;1;1;1;1;1; 1;1;1;1;0;0;0;0;0;0; 0;0;0;0;0;0;1;1;1;1; 1;1;1;1;1;1;1;1;0;0; 0;0;0;0;0;0;0;0;0;0; 1;1;1;1;1;1;1;1;1;1; 1;1;0;0;0;0;0;0;0;0; 0;0;0;0;1;1;1;1;1;1; 1;1;1;1;1;1;0;0;0;0; 0;0; }; }; float_Data @["Context"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_123"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="Context"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 9;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=118; ar { name="ar"; [9 2 16] 1;1;1;0;0;0;0;0;0;1; 1;1;0;0;0;0;0;0;1;1; 1;0;0;0;0;0;0;1;1;1; 0;0;0;0;0;0;1;1;1;0; 0;0;0;0;0;1;1;1;0;0; 0;0;0;0;1;1;1;0;0;0; 0;0;0;1;1;1;0;0;0;0; 0;0;1;1;1;0;0;0;0;0; 0;1;1;1;0;0;0;0;0;0; 1;1;1;0;0;0;0;0;0;1; 1;1;0;0;0;0;0;0;1;1; 1;0;0;0;0;0;0;1;1;1; 0;0;0;0;0;0;1;1;1;0; 0;0;0;0;0;1;1;1;0;0; 0;0;0;0;1;1;1;0;0;0; 0;0;0;1;1;1;0;0;0;0; 0;0;1;1;1;0;0;0;0;0; 0;1;1;1;0;0;0;0;0;0; 1;1;1;0;0;0;0;0;0;1; 1;1;0;0;0;0;0;0;1;1; 1;0;0;0;0;0;0;1;1;1; 0;0;0;0;0;0;1;1;1;0; 0;0;0;0;0;1;1;1;0;0; 0;0;0;0;1;1;1;0;0;0; 0;0;0;1;1;1;0;0;0;0; 0;0;1;1;1;0;0;0;0;0; 0;1;1;1;0;0;0;0;0;0; 1;1;1;0;0;0;0;0;0;1; 1;1;0;0;0;0;0;0; }; }; float_Data @["SNc2"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_124"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="SNc2"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 2;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=118; ar { name="ar"; [2 2 16] 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;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; }; }; float_Data @["SNc"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_125"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="SNc"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 2;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=118; ar { name="ar"; [2 2 16] 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;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; }; }; int_Data @["Name_No"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2282398; val_type_fixed=0; }; }; name="Name_No"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=118; ar { name="ar"; [16] 0;1;0;1;0;1;0;1;0;1; 0;1;0;1;0;1; }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [16] 0;1;2;3;4;5;6;7;8;9; 10;11;12;13;14;15; }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; DataTable @["TransferInputData"] { name="TransferInputData"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["Name"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_112"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="Name"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] "comboA";"comboB"; }; }; float_Data @["Motor_Cortex"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_113"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="Motor_Cortex"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 4;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; ar { name="ar"; [4 2 2] 0;1;0;0;0;1;0;0;0;1; 0;0;0;1;0;0; }; }; float_Data @["Output"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_114"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="Output"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 4;1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; ar { name="ar"; [4 1 2] 0;1;0;0;0;1;0;0; }; }; float_Data @["Input"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_115"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="Input"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 6;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; ar { name="ar"; [6 2 2] 1;1;1;0;0;0;1;1;1;0; 0;0;1;1;1;0;0;0;1;1; 1;0;0;0; }; }; float_Data @["Context"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_116"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="Context"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 9;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; ar { name="ar"; [9 2 2] 1;1;1;0;0;0;0;0;0;1; 1;1;0;0;0;0;0;0;1;1; 1;0;0;0;0;0;0;1;1;1; 0;0;0;0;0;0; }; }; float_Data @["SNc2"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_117"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="SNc2"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 2;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; ar { name="ar"; [2 2 2] 0;0;0;0;0;0;0;0; }; }; float_Data @["SNc"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_118"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="SNc"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 2;2; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; ar { name="ar"; [2 2 2] 0;0;0;0;0;0;0;0; }; }; int_Data @["Name_No"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2257336378097534; val_type_fixed=0; }; }; name="Name_No"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 1;1; }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [2] 0;1; }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; }; DataTable_Group @.gp["OutputData"] { name="OutputData"; el_typ=DataTable; el_def=0; save_tables=1; DataTable @["TrialOutputData"] { name="TrialOutputData"; desc=; data { name="data"; el_typ=int_Data; el_def=0; int_Data @["batch"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_117"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="batch"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 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; }; }; int_Data @["epoch"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_118"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="epoch"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 0;0;0;0;0;0;0;0;0;0; 0;0;0;0;0;0;1;1;1;1; 1;1;1;1;1;1;1;1;1;1; 1;1;2;2;2; }; }; String_Data @["trial_name"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_180"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="trial_name"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] "9060_R1R2";"9060_R1R2";"4010_R3R4";"4010_R3R4";"4010_R3R4";"4010_R3R4";"9060_R1R2";"9060_R1R2";"9060_R1R2";"9060_R1R2"; "4010_R3R4";"9060_R1R2";"9060_R1R2";"4010_R3R4";"4010_R3R4";"4010_R3R4";"4010_R3R4";"4010_R3R4";"4010_R3R4";"4010_R3R4"; "9060_R1R2";"4010_R3R4";"4010_R3R4";"4010_R3R4";"9060_R1R2";"9060_R1R2";"9060_R1R2";"4010_R3R4";"9060_R1R2";"9060_R1R2"; "9060_R1R2";"9060_R1R2";"4010_R3R4";"9060_R1R2";"4010_R3R4"; }; }; float_Data @["minus_cycles"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_181"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="minus_cycles"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 150;150;93;51;47;47;150;108;81;81; 47;124;76;49;46;47;48;47;81;48; 72;82;80;81;110;57;53;47;54;57; 58;56;81;59;75; }; }; int_Data @["r1"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="r1"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 0;0;0;0;0;0;0;0;1;1; 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; }; }; int_Data @["r2"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="r2"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 1;1;0;0;0;0;0;1;0;0; 0;1;1;0;0;0;0;0;0;0; 1;0;0;0;1;1;1;0;1;1; 1;1;0;1;0; }; }; int_Data @["r3"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="r3"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 0;0;1;1;1;1;1;0;0;0; 1;0;0;1;1;1;1;1;0;1; 0;0;0;0;0;0;0;1;0;0; 0;0;0;0;0; }; }; int_Data @["r4"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2115385; val_type_fixed=0; }; }; name="r4"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [35] 0;0;0;0;0;0;0;0;0;0; 0;0;0;0;0;0;0;0;1;0; 0;1;1;1;0;0;0;0;0;0; 0;0;1;0;1; }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [35] 0;1;2;3;4;5;6;7;8;9; 10;11;12;13;14;15;16;17;18;19; 20;21;22;23;24;25;26;27;28;29; 30;31;32;33;34; }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; DataTable @["EpochOutputData"] { name="EpochOutputData"; desc=; data { name="data"; el_typ=int_Data; el_def=0; int_Data @["batch"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="batch"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 0;0; }; }; int_Data @["epoch"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="epoch"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 0;1; }; }; float_Data @["avg_sse"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_187"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="avg_sse"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 0.40149766;0.8944788; }; }; float_Data @["cnt_err"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_188"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="cnt_err"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 6;12; }; }; float_Data @["avg_ext_rew"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_189"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="avg_ext_rew"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 0;0; }; }; float_Data @["avg_cycles"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_190"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="avg_cycles"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; ar { name="ar"; [2] 84.1875;64.4375; }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [2] 0;1; }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; DataTable @["CycleOutputData"] { name="CycleOutputData"; desc=; data { name="data"; el_typ=int_Data; el_def=0; int_Data @["batch"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_43"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="batch"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["epoch"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_44"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="epoch"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["trial"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_45"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="trial"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["trial_name"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_87"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="trial_name"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; String_Data @["group_name"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_88"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="group_name"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["phase_no"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_46"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="phase_no"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; int_Data @["cycle"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_47"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="cycle"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["sse"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_89"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="sse"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["ext_rew"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_90"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="ext_rew"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["STN_acts_avg"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_91"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="STN_acts_avg"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["PMC_acts_avg"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_92"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="PMC_acts_avg"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["Thalam_acts_avg"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_93"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="Thalam_acts_avg"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["GP_Int_acts_avg"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_94"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="GP_Int_acts_avg"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["GP_Ext_acts_avg"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_95"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="GP_Ext_acts_avg"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["Output_act"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_96"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="Output_act"; col_flags=SAVE_DATA; is_matrix=1; cell_geom{ 4;1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [2] ;; }; width=0; }; float_Data @["Output_units_0_act"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_97"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="Output_units_0_act"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; float_Data @["SNc_acts_avg"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_98"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 6 0=0.2094801217317581; val_type_fixed=0; }; }; name="SNc_acts_avg"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=0; }; }; data_flags=AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; }; DataTable_Group @.gp["AnalysisData"] { name="AnalysisData"; el_typ=DataTable; el_def=0; save_tables=1; DataTable @["TrialOutputData_Group"] { name="TrialOutputData_Group"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["trial_name_group"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_180"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="trial_name_group"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; int_Data @["batch_group"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_117"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="batch_group"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r1_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r1_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r2_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r2_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r3_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r3_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r4_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r4_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [0] }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; DataTable @["trl_group"] { name="trl_group"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["trial_name_group"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_180"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="trial_name_group"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; int_Data @["epoch_group"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_118"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="epoch_group"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r1_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r1_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r2_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r2_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r3_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r3_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r4_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r4_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["minus_cycles_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_181"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="minus_cycles_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r1_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r1_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r3_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r3_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["minus_cycles_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_181"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="minus_cycles_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [0] }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; DataTable @["Stats"] { name="Stats"; desc=; data { name="data"; el_typ=String_Data; el_def=0; String_Data @["trial_name_group_group"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_180"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="trial_name_group_group"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r1_mean_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r1_mean_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r1_mean_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_119"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r1_mean_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r2_mean_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r2_mean_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r2_mean_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r2_mean_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r3_mean_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r3_mean_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r3_mean_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r3_mean_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r4_mean_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r4_mean_mean"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; float_Data @["r4_mean_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.2136752; val_type_fixed=0; }; }; name="r4_mean_sem"; col_flags=MARK|PIN|SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=99; ar { name="ar"; [0] }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [0] }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; DataTable @["EpochOutputData_Group"] { name="EpochOutputData_Group"; desc=; data { name="data"; el_typ=DataColT; el_def=0; int_Data @["epoch_group"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_112"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="epoch_group"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 0;1;2;3;4;5;6;7;8;9; 10;11;12;13;14;15;16;17;18;19; 20;21;22;23;24;25;26;27;28;29; 30;31;32;33;34;35;36;37;38;39; 40;41;42;43;44;45;46;47;48;49; 50;51;52;53;54;55;56;57;58;59; }; }; float_Data @["batch_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_113"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="batch_mean"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5; 24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5; 24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5; 24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5; 24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5; 24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5;24.5; }; }; float_Data @["batch_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_114"; el_typ=UserDataItem; el_def=0; UserDataItem @["NARROW"] { name="NARROW"; value 1 0=1; val_type_fixed=0; }; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="batch_sem"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434; 0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434; 0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434; 0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434; 0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434; 0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434;0.26351434; }; }; float_Data @["avg_sse_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_120"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="avg_sse_mean"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 0.93733627;0.92444193;0.92041612;0.92658502;0.9122656;0.87506795;0.85842353;0.87871093;0.88070089;0.81725562; 0.87948179;0.86288744;0.84902704;0.80896395;0.79943079;0.79200602;0.76464212;0.80624229;0.81834787;0.85867262; 0.82583398;0.83960998;0.80725348;0.81582522;0.81932938;0.77089101;0.83380938;0.84396994;0.83728254;0.8810212; 0.9879995;0.95013756;0.96496969;0.93940961;0.96922117;0.96426415;0.94637185;0.96693367;0.98339725;0.98136592; 0.9640978;0.98386353;0.98116755;0.9642846;0.97382629;0.95751482;0.95812887;0.96894383;0.95992982;0.96512985; 0.97411788;0.95347303;0.96840477;0.96160346;0.95226479;0.97160906;0.98050886;0.96692896;0.96416563;0.98743623; }; }; float_Data @["avg_sse_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_121"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="avg_sse_sem"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 0.0012914187;0.0017448817;0.0025731362;0.0019414864;0.0032748808;0.00329166;0.0037956159;0.0037688136;0.0039817677;0.0042507029; 0.0041221417;0.0039127399;0.004158054;0.0050239679;0.005003137;0.0041102599;0.0048516528;0.0046063736;0.0048229746;0.0045885355; 0.0046750391;0.0047426503;0.004604903;0.0044522751;0.0049215639;0.0052104504;0.0041713105;0.0041362937;0.0040099607;0.0033665563; 0.0015613822;0.0026828535;0.0022395342;0.0024726966;0.0020954418;0.002172712;0.0023903358;0.0021470331;0.0018455469;0.0021002027; 0.0021067359;0.0021017799;0.0021189209;0.0024147846;0.0022665113;0.0026096164;0.0022857534;0.0022519315;0.0025316987;0.0025895885; 0.0020282415;0.0026368888;0.0022191713;0.0020875228;0.0023948576;0.0022027404;0.0021291254;0.0021522485;0.002109695;0.0012807274; }; }; float_Data @["cnt_err_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_122"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="cnt_err_mean"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 1.98;1.96;1.9400001;1.9400001;1.9;1.8200001;1.8;1.8200001;1.78;1.66; 1.8;1.76;1.74;1.66;1.6;1.6;1.58;1.66;1.7;1.74; 1.6799999;1.6799999;1.66;1.66;1.6799999;1.5599999;1.72;1.74;1.7;1.8200001; 1.98;1.88;1.92;1.9;1.9400001;1.9400001;1.9;1.9400001;1.96;1.96; 1.9400001;1.96;1.96;1.92;1.9400001;1.9;1.92;1.9400001;1.92;1.92; 1.9400001;1.9;1.9400001;1.9400001;1.92;1.9400001;1.96;1.9400001;1.9400001;1.98; }; }; float_Data @["cnt_err_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_123"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="cnt_err_sem"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 0.0025564649;0.0035783057;0.005669571;0.0043366193;0.0065839035;0.0070154406;0.0081663262;0.0079091229;0.0083998106;0.0086501399; 0.0081663262;0.0086115077;0.008802983;0.010074744;0.010329675;0.0089457612;0.010387621;0.0093895001;0.0098335613;0.0095304921; 0.0099615771;0.0099615781;0.010074744;0.0093894983;0.0099615771;0.011053235;0.0081989272;0.0080096629;0.0083679957;0.007015442; 0.0025564649;0.0059339474;0.0049539404;0.0054781395;0.0043366193;0.0043366184;0.00547814;0.0043366184;0.0035783045;0.0035783055; 0.0043366197;0.0035783048;0.0035783055;0.0049539404;0.0043366193;0.0054781404;0.0049539404;0.0043366188;0.0049539399;0.0049539413; 0.0043366179;0.0054781395;0.0043366188;0.0043366193;0.0049539395;0.0043366184;0.0035783048;0.0043366193;0.0043366193;0.0025564651; }; }; float_Data @["avg_ext_rew_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_124"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="avg_ext_rew_mean"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 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;0;0;0;0; 0;0;0;0;0;0;0;0;0;0; 0;0;0;0;0;0;0;0;0;0; }; }; float_Data @["avg_ext_rew_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_125"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="avg_ext_rew_sem"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 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;0;0;0;0; 0;0;0;0;0;0;0;0;0;0; 0;0;0;0;0;0;0;0;0;0; }; }; float_Data @["avg_cycles_mean"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_126"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="avg_cycles_mean"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 148.49001;149.25999;148.61;146.61;142.00999;142.58;142.08;138.21001;136.77;134.16; 134.55;134.72;135.52;131.39999;125.92;130.21001;130.07001;134.41;134.92;133.75; 132.92999;133.5;136;134.42;130.57001;132.28999;135.39999;135.25999;134.02;139.53999; 142.61;139.96001;139.24001;142.10001;140.78999;141.37;140.83;142.17999;141.42999;140.28999; 142.59;142.55;140.02;139.47;140.08;139.27;141.37;141.39999;140.64999;141.14999; 141.53;141.27;142.57001;142.60001;143.94;142.10001;142.37;141.05;143.28;142.75; }; }; float_Data @["avg_cycles_sem"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_127"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_wd"] { name="view_panel_wd"; value 8 0=0.207265; val_type_fixed=0; }; }; name="avg_cycles_sem"; col_flags=SAVE_DATA; is_matrix=0; cell_geom{ 1; }; calc_expr { expr=; }; dim_names { name="dim_names"; [0] }; width=97; ar { name="ar"; [60] 0.11627326;0.067791335;0.15480836;0.2093536;0.34260875;0.30813339;0.34521145;0.38354397;0.41320416;0.37912545; 0.41728354;0.45336786;0.42611849;0.43580198;0.49063373;0.45228887;0.49089754;0.39868367;0.40154478;0.39635405; 0.44217098;0.44757509;0.45606944;0.43891388;0.48762286;0.40544847;0.35830078;0.34469852;0.37733358;0.35272413; 0.27140167;0.34625047;0.42660066;0.32728028;0.39932457;0.31581509;0.36550412;0.3083843;0.28913882;0.32309198; 0.2995033;0.25868872;0.36679876;0.4024699;0.34177986;0.40839475;0.32135195;0.33430111;0.37195018;0.30363607; 0.3030819;0.34971151;0.28447673;0.32121801;0.27077651;0.28573394;0.28962153;0.32004425;0.28853348;0.29556152; }; }; }; data_flags=SAVE_ROWS|AUTO_CALC; auto_load=NO_AUTO_LOAD; auto_load_file=; row_height=0; keygen 4 0=0; row_indexes { name="row_indexes"; [60] 0;1;2;3;4;5;6;7;8;9; 10;11;12;13;14;15;16;17;18;19; 20;21;22;23;24;25;26;27;28;29; 30;31;32;33;34;35;36;37;38;39; 40;41;42;43;44;45;46;47;48;49; 50;51;52;53;54;55;56;57;58;59; }; last_sort_spec { name="last_sort_spec"; ops { name="ops"; el_typ=DataSortEl; el_def=0; }; }; control_panel_cells { name="control_panel_cells"; el_typ=DataTableCell; el_def=0; }; }; }; }; programs { name="programs"; el_typ=Program; el_def=0; tags=; desc=; debug_mode=0; Program_Group @.gp["LeabraAll_Std"] { name="LeabraAll_Std"; el_typ=Program; el_def=0; tags="Leabra, Std, All"; desc="The full set of programs for training a standard Leabra network"; debug_mode=0; Program @["LeabraBatch"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].doc$$; }; }; name="LeabraBatch"; short_nm="Batch"; tags="Leabra, Std"; desc="Iterate over training runs (a batch of training runs) -- just a simple loop that calls training program"; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=.projects["BG_9060_4010"].networks["BG_4s"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="datatable with training patterns -- not used by this program, but passed to train program"; init_from=NULL; }; ProgVar @["NLoops"] { name="NLoops"; var_type=T_Int; int_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL|PGRM_ARG; reference=0; desc="batch counter"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; ProgVar @["batch"] { name="batch"; var_type=T_Int; int_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="batch counter"; init_from=NULL; }; ProgVar @["meds"] { name="meds"; var_type=T_Bool; bool_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="simulate da meds (reduced da dip)?"; init_from=NULL; }; ProgVar @["DA_dip_val"] { name="DA_dip_val"; var_type=T_Real; real_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["trl_out_data"] { name="trl_out_data"; var_type=T_Object; object_type=DataTable; object_val=.projects["BG_9060_4010"].data.gp["OutputData"]["TrialOutputData"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="datatable with training patterns"; init_from=NULL; }; ProgVar @["trl_group"] { name="trl_group"; var_type=T_Object; object_type=DataTable; object_val=.projects["BG_9060_4010"].data.gp["AnalysisData"]["TrialOutputData_Group"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="datatable with training patterns"; init_from=NULL; }; ProgVar @["trl_group2"] { name="trl_group2"; var_type=T_Object; object_type=DataTable; object_val=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="datatable with training patterns"; init_from=NULL; }; ProgVar @["stats"] { name="stats"; var_type=T_Object; object_type=DataTable; object_val=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="datatable with training patterns"; init_from=NULL; }; ProgVar @["max_batch"] { name="max_batch"; var_type=T_Int; int_val=20; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="maximum number of batch runs to perform"; init_from=NULL; }; ProgVar @["num_intact_snc_units"] { name="num_intact_snc_units"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initializes local batch counter and batch field on network"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: batch"; pre_compile_code_string="Net Counter Init: batch"; network_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["network"]$$; local_ctr_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["batch"]$$; counter=Network::batch; update_after=0; }; If @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (meds==true)"; pre_compile_code_string="if (meds==true)"; cond { expr="meds==true"; }; true_code { name=; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="DA_dip_val = .025"; pre_compile_code_string="DA_dip_val = .025"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["DA_dip_val"]$$; expr { expr=".025"; }; }; OtherProgramVar @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Vars To: program=DA_Rew_Punish set=to var_1=DA_dip_val var_2=? var_3=? var_4=? "; pre_compile_code_string="Vars To: program=DA_Rew_Punish set=to var_1=DA_dip_val var_2=? var_3=? var_4=? "; other_prog=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"]$$; set_other=1; var_1=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["DA_dip_val"]$; var_2=NULL; var_3=NULL; var_4=NULL; }; }; }; Else @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="DA_dip_val = 0"; pre_compile_code_string="DA_dip_val = 0"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["DA_dip_val"]$; expr { expr="0"; }; }; OtherProgramVar @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Vars To: program=DA_Rew_Punish set=to var_1=DA_dip_val var_2=? var_3=? var_4=? "; pre_compile_code_string="Vars To: program=DA_Rew_Punish set=to var_1=DA_dip_val var_2=? var_3=? var_4=? "; other_prog=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"]$; set_other=1; var_1=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["DA_dip_val"]$; var_2=NULL; var_3=NULL; var_4=NULL; }; }; }; ResetDataRows @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="ResetDataRows: table = stats "; pre_compile_code_string="ResetDataRows: table = stats "; data_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["stats"]$$; }; ResetDataRows @[4] { desc=; flags=CAN_REVERT_TO_CODE; code_string="ResetDataRows: table = trl_group "; pre_compile_code_string="ResetDataRows: table = trl_group "; data_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_group"]$$; }; ResetDataRows @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="ResetDataRows: table = trl_group2 "; pre_compile_code_string="ResetDataRows: table = trl_group2 "; data_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_group2"]$$; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initializes local batch counter and batch field on network"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: batch"; pre_compile_code_string="Net Counter Init: batch"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["batch"]$; counter=Network::batch; update_after=0; }; WhileLoop @[1] { desc="the main loop over training runs"; flags=CAN_REVERT_TO_CODE; code_string="while (batch < max_batch)"; pre_compile_code_string="while (batch < max_batch)"; loop_code { name=; el_typ=ProgCode; el_def=0; ProgramCall @[0] { desc="run the training program -- sets the network and input_data args"; flags=CAN_REVERT_TO_CODE; code_string="LeabraTrain(network, input_data, FlatNetwork, true)"; pre_compile_code_string="LeabraTrain(network, input_data, FlatNetwork, true)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; ProgArg @[2] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="FlatNetwork"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; ProgArg @[3] { arg_type=bool; type="bool"; name="no_prompts"; required=1; def_val=; prev_expr=; expr { expr="true"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"]$$; targ_ld_init="*LeabraTrain*"; }; NetCounterIncr @[1] { desc="increment the local batch counter and copy to network"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Incr: batch"; pre_compile_code_string="Net Counter Incr: batch"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["batch"]$; counter=Network::batch; update_after=0; }; }; test { expr="batch < max_batch"; }; }; DataSelectRowsProg @[2] { desc="filter out trials when no response gated (these are just noise)"; flags=CAN_REVERT_TO_CODE; code_string="SelectRows: src table = trl_out_data dest table = trl_out_data comb_op = AND"; pre_compile_code_string="SelectRows: src table = trl_out_data dest table = trl_out_data comb_op = AND"; src_data_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_out_data"]$$; dest_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_out_data"]$; select_spec { name="select_spec"; ops { name="ops"; el_typ=DataSelectEl; el_def=0; DataSelectEl @["minus_cycles_LESSTHAN__0"] { col_name="minus_cycles"; name="minus_cycles_LESSTHAN__0"; on=1; rel=LESSTHAN; use_var=0; cmp 2 0=150; var=NULL; enable_var=NULL; }; }; comb_op=AND; }; }; DataGroupProg @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Group from: src table = trl_out_data dest table = trl_group"; pre_compile_code_string="Group from: src table = trl_out_data dest table = trl_group"; src_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_out_data"]$; dest_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_group"]$; group_spec { name="group_spec"; ops { name="ops"; el_typ=DataGroupEl; el_def=0; DataGroupEl @["trial_name_GROUP_0"] { col_name="trial_name"; name="trial_name_GROUP_0"; agg {name="AggregateSpec_50": op=GROUP: rel={name="Relation_50": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["batch_GROUP_1"] { col_name="batch"; name="batch_GROUP_1"; agg {name="AggregateSpec_50": op=GROUP: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r1_MEAN_2"] { col_name="r1"; name="r1_MEAN_2"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r2_MEAN_3"] { col_name="r2"; name="r2_MEAN_3"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r3_MEAN_4"] { col_name="r3"; name="r3_MEAN_4"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r4_MEAN_5"] { col_name="r4"; name="r4_MEAN_5"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; }; append_agg_name=1; }; }; DataGroupProg @[4] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Group from: src table = trl_group dest table = stats"; pre_compile_code_string="Group from: src table = trl_group dest table = stats"; src_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_group"]$; dest_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["stats"]$; group_spec { name="group_spec"; ops { name="ops"; el_typ=DataGroupEl; el_def=0; DataGroupEl @["trial_name_group_GROUP_0"] { col_name="trial_name_group"; name="trial_name_group_GROUP_0"; agg {name="AggregateSpec_50": op=GROUP: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r1_mean_MEAN_1"] { col_name="r1_mean"; name="r1_mean_MEAN_1"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r1_mean_SEM_2"] { col_name="r1_mean"; name="r1_mean_SEM_2"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r2_mean_MEAN_3"] { col_name="r2_mean"; name="r2_mean_MEAN_3"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r2_mean_SEM_4"] { col_name="r2_mean"; name="r2_mean_SEM_4"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r3_mean_MEAN_5"] { col_name="r3_mean"; name="r3_mean_MEAN_5"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r3_mean_SEM_6"] { col_name="r3_mean"; name="r3_mean_SEM_6"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r4_mean_MEAN_7"] { col_name="r4_mean"; name="r4_mean_MEAN_7"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r4_mean_SEM_8"] { col_name="r4_mean"; name="r4_mean_SEM_8"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; }; append_agg_name=1; }; }; DataGroupProg @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Group from: src table = trl_out_data dest table = trl_group2"; pre_compile_code_string="Group from: src table = trl_out_data dest table = trl_group2"; src_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_out_data"]$; dest_data_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraBatch"].vars["trl_group2"]$; group_spec { name="group_spec"; ops { name="ops"; el_typ=DataGroupEl; el_def=0; DataGroupEl @["trial_name_GROUP_0"] { col_name="trial_name"; name="trial_name_GROUP_0"; agg {name="AggregateSpec_50": op=GROUP: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["epoch_GROUP_1"] { col_name="epoch"; name="epoch_GROUP_1"; agg {name="AggregateSpec_50": op=GROUP: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r1_MEAN_2"] { col_name="r1"; name="r1_MEAN_2"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r2_MEAN_3"] { col_name="r2"; name="r2_MEAN_3"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r3_MEAN_4"] { col_name="r3"; name="r3_MEAN_4"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r4_MEAN_5"] { col_name="r4"; name="r4_MEAN_5"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["minus_cycles_MEAN_6"] { col_name="minus_cycles"; name="minus_cycles_MEAN_6"; agg {name="AggregateSpec_50": op=MEAN: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r1_SEM_7"] { col_name="r1"; name="r1_SEM_7"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["r3_SEM_8"] { col_name="r3"; name="r3_SEM_8"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; DataGroupEl @["minus_cycles_SEM_9"] { col_name="minus_cycles"; name="minus_cycles_SEM_9"; agg {name="AggregateSpec_50": op=SEM: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; }; }; append_agg_name=1; }; }; }; step_prog=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"]$$; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraTrain"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].doc$$; }; }; name="LeabraTrain"; short_nm="Train"; tags="Leabra, Std"; desc="A complete training run of a Leabra network: iterating over epochs until the network has learned the task"; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=RndSeed; el_def=0; RndSeed @["rnd_seed"] { name="rnd_seed"; rnd_seed=1179458982; }; }; types { name="types"; el_typ=DynEnumType; el_def=0; DynEnumType @["RndInitType"] { name="RndInitType"; desc=; enums { name=; el_typ=DynEnumItem; el_def=0; DynEnumItem @["OLD_SEED"] { name="OLD_SEED"; value=0; desc="use stored random seed value (recreates same sequence every time)"; }; DynEnumItem @["NEW_SEED"] { name="NEW_SEED"; value=1; desc="generate new random seed (new sequence of random numbers)"; }; }; bits=0; }; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to train"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="datatable with training patterns"; init_from=NULL; }; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; ProgVar @["no_prompts"] { name="no_prompts"; var_type=T_Bool; bool_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; 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"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["max_epoch"] { name="max_epoch"; var_type=T_Int; int_val=10; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="maximum number of epochs to run for learning phase"; init_from=NULL; }; ProgVar @["max_epoch_reel"] { name="max_epoch_reel"; var_type=T_Int; int_val=10; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="epochs run in learning phase up to criterion of 5 epochs in a row without errors"; init_from=NULL; }; ProgVar @["train_mode"] { name="train_mode"; var_type=T_HardEnum; int_val=1; hard_enum_type=Network::TrainMode; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="TRAIN = update weights (learn), TEST = just record network's responses but don't learn"; init_from=NULL; }; ProgVar @["test_mode"] { name="test_mode"; var_type=T_HardEnum; int_val=0; hard_enum_type=Network::TrainMode; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="TRAIN = update weights (learn), TEST = just record network's responses but don't learn"; init_from=NULL; }; ProgVar @["rnd_init"] { name="rnd_init"; var_type=T_DynEnum; dyn_enum_val { user_data_=NULL; enum_type=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].types["RndInitType"]$$; value=0; }; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="how to initialize the random numbers when the Init button is pressed"; init_from=NULL; }; ProgVar @["epoch"] { name="epoch"; var_type=T_Int; int_val=2; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="current epoch -- local copy, which is used to update network's epoch counter"; init_from=NULL; }; ProgVar @["inside_epoch"] { name="inside_epoch"; var_type=T_Int; int_val=2; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="current epoch -- local copy, which is used to update network's epoch counter"; init_from=NULL; }; ProgVar @["err_stopcrit"] { name="err_stopcrit"; var_type=T_Real; real_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; 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)"; init_from=NULL; }; ProgVar @["rnd_seed"] { name="rnd_seed"; var_type=T_Object; object_type=RndSeed; object_val=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].objs["rnd_seed"]$$; objs_ptr=1; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="random seed that is used at start of training -- if OldSeed is called"; init_from=NULL; }; ProgVar @["Test"] { name="Test"; var_type=T_Object; object_type=DataTable; object_val=.projects["BG_9060_4010"].data.gp["InputData"]["TransferInputData"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="Transfer phase input data table"; init_from=NULL; }; ProgVar @["train_timer"] { name="train_timer"; var_type=T_Object; object_type=TimeUsed; object_val=.projects["BG_9060_4010"].networks["BG_4s"].train_time$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="records time used to train network (object lives on network -- this is a pointer to it)"; init_from=NULL; }; ProgVar @["j"] { name="j"; var_type=T_Int; int_val=36; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["i"] { name="i"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["periode"] { name="periode"; var_type=T_Int; int_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["num_intact_snc_units"] { name="num_intact_snc_units"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["snc_size"] { name="snc_size"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["SNc"] { name="SNc"; var_type=T_Object; object_type=LeabraLayer; object_val=.projects["BG_9060_4010"].networks["BG_4s"].layers["SNc"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["StdInputData"] { name="StdInputData"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["SuccessiveCor"] { name="SuccessiveCor"; var_type=T_Real; real_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="Number of successive no error epochs to end learning phase"; init_from=NULL; }; ProgVar @["d2"] { name="d2"; var_type=T_Object; object_type=LeabraConSpec; object_val=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["SNc_Inhib_D2_"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["d1"] { name="d1"; var_type=T_Object; object_type=LeabraConSpec; object_val=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Dopamine_D1_"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["inGo"] { name="inGo"; var_type=T_Object; object_type=LeabraConSpec; object_val=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["InputStriatum"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="lr"; init_from=NULL; }; ProgVar @["inNoGO"] { name="inNoGO"; var_type=T_Object; object_type=LeabraConSpec; object_val=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["inNoGO"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="lr"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="no_prompts = false"; pre_compile_code_string="no_prompts = false"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["no_prompts"]$$; expr { expr="false"; }; }; MethodCall @[1] { desc="check network to make sure it is ready to be run"; flags=CAN_REVERT_TO_CODE; code_string="network->CheckConfig(false)"; pre_compile_code_string="network->CheckConfig(false)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$$; 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"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="bool CheckConfig(bool quiet = false)"; meth_desc=" check the configuration of this object and all its children (defaults to no confirm of success)"; }; AssignExpr @[2] { desc="get our pointer to the network training time object"; flags=CAN_REVERT_TO_CODE; code_string="train_timer = network.train_time"; pre_compile_code_string="train_timer = network.train_time"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["train_timer"]$$; expr { expr="network.train_time"; }; }; NetCounterInit @[3] { desc="initialize epoch counter "; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: epoch"; pre_compile_code_string="Net Counter Init: epoch"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; local_ctr_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["epoch"]$$; counter=Network::epoch; update_after=0; }; If @[4] { desc="initialize random seed (either old or new)"; flags=CAN_REVERT_TO_CODE; code_string="if (rnd_init == OLD_SEED)"; pre_compile_code_string="if (rnd_init == OLD_SEED)"; cond { expr="rnd_init == OLD_SEED"; }; true_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="restore previous random seed (all runs produce same results)"; flags=CAN_REVERT_TO_CODE; code_string="rnd_seed->OldSeed()"; pre_compile_code_string="rnd_seed->OldSeed()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["rnd_seed"]$$; method=RndSeed::OldSeed; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void OldSeed()"; meth_desc=" restore current seed to random num generator"; }; }; }; Else @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="new random numbers each time"; flags=CAN_REVERT_TO_CODE; code_string="rnd_seed->NewSeed()"; pre_compile_code_string="rnd_seed->NewSeed()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["rnd_seed"]$; method=RndSeed::NewSeed; meth_args { name="meth_args"; el_typ=ProgArg; el_def=0; }; meth_sig="void NewSeed()"; meth_desc=" set the seed to a new random value (based on time and process id)"; }; }; }; IfGuiPrompt @[6] { desc="don't initialize weights without checking"; flags=CAN_REVERT_TO_CODE; code_string="if (gui && \"Do you want to Initialize Network Weights\")"; pre_compile_code_string="if (gui && \"Do you want to Initialize Network Weights\")"; prompt="Do you want to Initialize Network Weights"; yes_label="Yes"; no_label="No"; yes_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="initialize network weights: could also load pre-set weights or something else here"; flags=CAN_REVERT_TO_CODE; code_string="network->Init_Weights()"; pre_compile_code_string="network->Init_Weights()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; method=Network::Init_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Init_Weights()"; meth_desc=" Initialize the weights -- also inits acts, counters and stats"; }; PrintExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Print network.name << \" Weights Initialized\""; pre_compile_code_string="Print network.name << \" Weights Initialized\""; expr { expr="network.name << \" Weights Initialized\""; }; debug=0; }; }; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; LocalVars @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="LocalVars (5 vars)"; pre_compile_code_string="LocalVars (5 vars)"; local_vars { name="ProgVar_List_0"; el_typ=ProgVar; el_def=0; ProgVar @["d2_acq"] { name="d2_acq"; var_type=T_Real; real_val=0.08; flags=LOCAL_VAR|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["d1_acq"] { name="d1_acq"; var_type=T_Real; real_val=0.7; flags=LOCAL_VAR|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["d2_perf"] { name="d2_perf"; var_type=T_Real; real_val=0.08; flags=LOCAL_VAR|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["d1_perf"] { name="d1_perf"; var_type=T_Real; real_val=0.7; flags=LOCAL_VAR|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["d2_acq_4"] { name="d2_acq_4"; var_type=T_Real; real_val=0; flags=LOCAL_VAR|EDIT_VAL; reference=0; desc=; init_from=NULL; }; }; }; AssignExpr @[1] { desc="get our pointer to the network training time object"; flags=CAN_REVERT_TO_CODE; code_string="train_timer = network.train_time"; pre_compile_code_string="train_timer = network.train_time"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["train_timer"]$; expr { expr="network.train_time"; }; }; MethodCall @[2] { desc="start timer to keep track of how long it takes to run entire training run"; flags=CAN_REVERT_TO_CODE; code_string="train_timer->StartTimer(true)"; pre_compile_code_string="train_timer->StartTimer(true)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["train_timer"]$; 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"; prev_expr=; expr { expr="true"; }; }; }; meth_sig="void StartTimer(bool reset_used = true)"; meth_desc=" record the current time as the starting time, and optionally reset the time used information"; }; NetCounterInit @[3] { desc="initialize epoch counter (both our local copy and network's epoch counter)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: epoch"; pre_compile_code_string="Net Counter Init: epoch"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["epoch"]$; counter=Network::epoch; update_after=0; }; MemberAssign @[4] { desc="set network's training mode to our local value"; flags=CAN_REVERT_TO_CODE; code_string="network.train_mode = train_mode"; pre_compile_code_string="network.train_mode = train_mode"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; path="train_mode"; expr { expr="train_mode"; }; update_after=0; }; If @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (no_prompts)"; pre_compile_code_string="if (no_prompts)"; cond { expr="no_prompts"; }; true_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="initialize network weights: could also load pre-set weights or something else here"; flags=CAN_REVERT_TO_CODE; code_string="network->Init_Weights()"; pre_compile_code_string="network->Init_Weights()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; method=Network::Init_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Init_Weights()"; meth_desc=" Initialize the weights -- also inits acts, counters and stats"; }; PrintExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Print network.name << \" Weights Initialized\""; pre_compile_code_string="Print network.name << \" Weights Initialized\""; expr { expr="network.name << \" Weights Initialized\""; }; debug=0; }; }; }; AssignExpr @[6] { desc=; flags=CAN_REVERT_TO_CODE; code_string="snc_size = SNc.units.size"; pre_compile_code_string="snc_size = SNc.units.size"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["snc_size"]$$; expr { expr="SNc.units.size"; }; }; OtherProgramVar @[7] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Vars To: program=DA_Rew_Punish set=to var_1=num_intact_snc_units var_2=? var_3=? var_4=? "; pre_compile_code_string="Vars To: program=DA_Rew_Punish set=to var_1=num_intact_snc_units var_2=? var_3=? var_4=? "; other_prog=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"]$; set_other=1; var_1=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["num_intact_snc_units"]$; var_2=NULL; var_3=NULL; var_4=NULL; }; OtherProgramVar @[8] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Vars To: program=DA_Rew_Punish set=to var_1=? var_2=? var_3=? var_4=? "; pre_compile_code_string="Vars To: program=DA_Rew_Punish set=to var_1=? var_2=? var_3=? var_4=? "; other_prog=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"]$; set_other=1; var_1=NULL; var_2=NULL; var_3=NULL; var_4=NULL; }; AssignExpr @[9] { desc=; flags=CAN_REVERT_TO_CODE; code_string="periode = 0"; pre_compile_code_string="periode = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["periode"]$$; expr { expr="0"; }; }; AssignExpr @[10] { desc=; flags=CAN_REVERT_TO_CODE; code_string="max_epoch_reel = max_epoch"; pre_compile_code_string="max_epoch_reel = max_epoch"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["max_epoch_reel"]$$; expr { expr="max_epoch"; }; }; MemberAssign @[11] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="d2.wt_scale.abs = d2_acq"; pre_compile_code_string="d2.wt_scale.abs = d2_acq"; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["d2"]$$; path="wt_scale.abs"; expr { expr="d2_acq"; }; update_after=0; }; MemberAssign @[12] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="d1.wt_scale.abs = d1_acq"; pre_compile_code_string="d1.wt_scale.abs = d1_acq"; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["d1"]$$; path="wt_scale.abs"; expr { expr="d1_acq"; }; update_after=0; }; MemberAssign @[13] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="inGo.lrate = 0.05"; pre_compile_code_string="inGo.lrate = 0.05"; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["inGo"]$$; path="lrate"; expr { expr="0.05"; }; update_after=1; }; MemberAssign @[14] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="inNoGO.lrate = 0.05"; pre_compile_code_string="inNoGO.lrate = 0.05"; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["inNoGO"]$$; path="lrate"; expr { expr="0.05"; }; update_after=1; }; WhileLoop @[15] { desc="main loop over epochs of training"; flags=CAN_REVERT_TO_CODE; code_string="while (epoch < 0.5*max_epoch)"; pre_compile_code_string="while (epoch < 0.5*max_epoch)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set network's training mode to our local value"; flags=CAN_REVERT_TO_CODE; code_string="network.train_mode = train_mode"; pre_compile_code_string="network.train_mode = train_mode"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; path="train_mode"; expr { expr="train_mode"; }; update_after=0; }; AssignExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="inside_epoch = epoch"; pre_compile_code_string="inside_epoch = epoch"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["inside_epoch"]$$; expr { expr="epoch"; }; }; ProgramCall @[2] { desc="run the epoch program (one epoch), passes our network and input_data"; flags=CAN_REVERT_TO_CODE; code_string="LeabraEpoch(network, periode, FlatNetwork, input_data)"; pre_compile_code_string="LeabraEpoch(network, periode, FlatNetwork, input_data)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=int; type="int"; name="periode"; required=1; def_val=; prev_expr=; expr { expr="periode"; }; }; ProgArg @[2] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="FlatNetwork"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; ProgArg @[3] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"]$$; targ_ld_init="*LeabraEpoch*"; }; NetCounterIncr @[3] { desc="increment the epoch counter (locally and on network)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Incr: epoch"; pre_compile_code_string="Net Counter Incr: epoch"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["epoch"]$; counter=Network::epoch; update_after=0; }; If @[4] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (network.cnt_err <= err_stopcrit)"; pre_compile_code_string="if (network.cnt_err <= err_stopcrit)"; cond { expr="network.cnt_err <= err_stopcrit"; }; true_code { name=; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc="Compter le nombre d'epoques correctes successives"; flags=CAN_REVERT_TO_CODE; code_string="SuccessiveCor = SuccessiveCor+1"; pre_compile_code_string="SuccessiveCor = SuccessiveCor+1"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["SuccessiveCor"]$$; expr { expr="SuccessiveCor+1"; }; }; }; }; Else @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="SuccessiveCor = 0"; pre_compile_code_string="SuccessiveCor = 0"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["SuccessiveCor"]$; expr { expr="0"; }; }; }; }; MemberAssign @[6] { desc="set network's training mode to our local value"; flags=CAN_REVERT_TO_CODE; code_string="network.train_mode = test_mode"; pre_compile_code_string="network.train_mode = test_mode"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; path="train_mode"; expr { expr="test_mode"; }; update_after=0; }; }; test { expr="epoch < 0.5*max_epoch"; }; }; MemberAssign @[16] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="d2.wt_scale.abs = d2_perf"; pre_compile_code_string="d2.wt_scale.abs = d2_perf"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["d2"]$; path="wt_scale.abs"; expr { expr="d2_perf"; }; update_after=0; }; MemberAssign @[17] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="d1.wt_scale.abs = d1_perf"; pre_compile_code_string="d1.wt_scale.abs = d1_perf"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["d1"]$; path="wt_scale.abs"; expr { expr="d1_perf"; }; update_after=0; }; WhileLoop @[18] { desc="optional transfer phase"; flags=OFF|CAN_REVERT_TO_CODE; code_string="while (epoch < max_epoch)"; pre_compile_code_string="while (epoch < max_epoch)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set network's training mode to our local value"; flags=CAN_REVERT_TO_CODE; code_string="network.train_mode = test_mode"; pre_compile_code_string="network.train_mode = test_mode"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; path="train_mode"; expr { expr="test_mode"; }; update_after=0; }; AssignExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="inside_epoch = epoch"; pre_compile_code_string="inside_epoch = epoch"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["inside_epoch"]$; expr { expr="epoch"; }; }; ProgramCall @[2] { desc="run the epoch program (one epoch), passes our network and input_data"; flags=CAN_REVERT_TO_CODE; code_string="LeabraEpoch(network, periode, FlatNetwork, Test)"; pre_compile_code_string="LeabraEpoch(network, periode, FlatNetwork, Test)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=int; type="int"; name="periode"; required=1; def_val=; prev_expr=; expr { expr="periode"; }; }; ProgArg @[2] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="FlatNetwork"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; ProgArg @[3] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="Test"; }; }; }; target=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"]$; targ_ld_init="*LeabraEpoch*"; }; NetCounterIncr @[3] { desc="increment the epoch counter (locally and on network)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Incr: epoch"; pre_compile_code_string="Net Counter Incr: epoch"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["epoch"]$; counter=Network::epoch; update_after=0; }; MemberAssign @[4] { desc="set network's training mode to our local value"; flags=CAN_REVERT_TO_CODE; code_string="network.train_mode = test_mode"; pre_compile_code_string="network.train_mode = test_mode"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].args["network"]$; path="train_mode"; expr { expr="test_mode"; }; update_after=0; }; }; test { expr="epoch < max_epoch"; }; }; OtherProgramVar @[19] { desc=; flags=NEW_EL|CAN_REVERT_TO_CODE; code_string="Vars To: program=DA_Rew_Punish set=to var_1=? var_2=? var_3=? var_4=? "; pre_compile_code_string="Vars To: program=DA_Rew_Punish set=to var_1=? var_2=? var_3=? var_4=? "; other_prog=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"]$; set_other=1; var_1=NULL; var_2=NULL; var_3=NULL; var_4=NULL; }; MethodCall @[20] { desc="stop the timer -- time elapsed is now recorded in this object, and can be displayed or recorded to a data table"; flags=CAN_REVERT_TO_CODE; code_string="train_timer->EndTimer()"; pre_compile_code_string="train_timer->EndTimer()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrain"].vars["train_timer"]$; method=TimeUsed::EndTimer; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void EndTimer()"; meth_desc=" record the current time as the ending time, and compute difference as the time used"; }; }; step_prog=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"]$; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraEpoch"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].doc$$; }; }; name="LeabraEpoch"; short_nm="Epoch"; tags="Leabra, Std"; desc="iterates over all of the items in a data table and calls LeabraTrial process on them"; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on"; init_from=NULL; }; ProgVar @["periode"] { name="periode"; var_type=T_Int; int_val=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL|PGRM_ARG; reference=0; desc="current experimental phase: 0 = learning, 1 = transfer, 2 = new overlap, 3 = new incongruent, 4 = asymptotic noisy"; init_from=NULL; }; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="table of patterns to present to the network, one row at a time"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["data_loop_order"] { name="data_loop_order"; var_type=T_HardEnum; int_val=1; hard_enum_type=DataLoop::Order; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="controls the order in which events (rows of the input data datatable) are presented to the network (SEQUENTIAL, PERMUTED, RANDOM)"; init_from=NULL; }; ProgVar @["trial"] { name="trial"; var_type=T_Int; int_val=3; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="current trial (event) within the epoch -- increments automatically"; init_from=NULL; }; ProgVar @["trial_mon_data"] { name="trial_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["OutputData"]["TrialOutputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="trial-level output data -- we reset it every epoch by default, so it just contains last epoch of data"; init_from=NULL; }; ProgVar @["epoch_timer"] { name="epoch_timer"; var_type=T_Object; object_type=TimeUsed; object_val=.projects["BG_9060_4010"].networks["BG_4s"].epoch_time$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="timer to record time required to perform one epoch of processing (object is on network -- this is a pointer to it)"; init_from=NULL; }; ProgVar @["data_loop_index"] { name="data_loop_index"; var_type=T_Int; int_val=3; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; 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)"; init_from=NULL; }; ProgVar @["NLoops"] { name="NLoops"; var_type=T_Int; int_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="batch counter"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initialize trial counter (local variable and in the network)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: trial"; pre_compile_code_string="Net Counter Init: trial"; network_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].args["network"]$$; local_ctr_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["trial"]$$; counter=Network::trial; update_after=0; }; AssignExpr @[1] { desc="get pointer to epoch timer object on network"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer = network.epoch_time"; pre_compile_code_string="epoch_timer = network.epoch_time"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["epoch_timer"]$$; expr { expr="network.epoch_time"; }; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initialize trial counter (local variable and in the network)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: trial"; pre_compile_code_string="Net Counter Init: trial"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["trial"]$; counter=Network::trial; update_after=0; }; AssignExpr @[1] { desc="get pointer to epoch timer object on network"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer = network.epoch_time"; pre_compile_code_string="epoch_timer = network.epoch_time"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["epoch_timer"]$; expr { expr="network.epoch_time"; }; }; MethodCall @[2] { desc="start the epoch timer to record computation time per epoch"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer->StartTimer(true)"; pre_compile_code_string="epoch_timer->StartTimer(true)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["epoch_timer"]$; 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"; prev_expr=; expr { expr="true"; }; }; }; meth_sig="void StartTimer(bool reset_used = true)"; meth_desc=" record the current time as the starting time, and optionally reset the time used information"; }; 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=OFF|CAN_REVERT_TO_CODE; code_string="trial_mon_data->ResetData()"; pre_compile_code_string="trial_mon_data->ResetData()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["trial_mon_data"]$$; method=DataTable::ResetData; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void ResetData()"; meth_desc=" deletes all the data (rows), but keeps the column structure -- this cannot be undone!"; }; NetDataLoop @[4] { desc="iterates over the events/rows of input_data, according to data_loop_order variable"; flags=CAN_REVERT_TO_CODE; code_string="Net Data Loop (PERMUTED): table=input_data index=data_loop_index order_var=data_loop_order "; pre_compile_code_string="Net Data Loop (PERMUTED): table=input_data index=data_loop_index order_var=data_loop_order "; loop_code { name=; el_typ=ProgCode; el_def=0; ProgramCall @[0] { desc="run the trial program, passing network and input_data"; flags=CAN_REVERT_TO_CODE; code_string="LeabraTrial(network, input_data, FlatNetwork)"; pre_compile_code_string="LeabraTrial(network, input_data, FlatNetwork)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; ProgArg @[2] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="FlatNetwork"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"]$$; targ_ld_init="*LeabraTrial*"; }; If @[1] { desc="test if it is time to update the weight values from delta weights (dWt) computed over trials"; flags=CAN_REVERT_TO_CODE; code_string="if (network.Compute_Weights_Test(trial+1))"; pre_compile_code_string="if (network.Compute_Weights_Test(trial+1))"; cond { expr="network.Compute_Weights_Test(trial+1)"; }; true_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="update the weight values based on changes computed by trial program"; flags=CAN_REVERT_TO_CODE; code_string="network->Compute_Weights()"; pre_compile_code_string="network->Compute_Weights()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].args["network"]$; method=Network::Compute_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Compute_Weights()"; meth_desc=" update weights for whole net: calls DMem_SumDWts before doing update if in dmem mode"; }; }; }; }; data_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].args["input_data"]$$; index_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["data_loop_index"]$$; order_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["data_loop_order"]$$; order=PERMUTED; update_after=0; dmem_nprocs=1; dmem_this_proc=0; grouped=0; group_col 9 0="Group"; group_index_var=NULL; group_order_var=NULL; group_order=PERMUTED; group_idx_list{ }; }; If @[5] { desc="if full batch mode, update only at end of epoch"; flags=CAN_REVERT_TO_CODE; code_string="if (network.wt_update == Network::BATCH)"; pre_compile_code_string="if (network.wt_update == Network::BATCH)"; cond { expr="network.wt_update == Network::BATCH"; }; true_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="final update of weights based on accumulated changes"; flags=CAN_REVERT_TO_CODE; code_string="network->Compute_Weights()"; pre_compile_code_string="network->Compute_Weights()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].args["network"]$; method=Network::Compute_Weights; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Compute_Weights()"; meth_desc=" update weights for whole net: calls DMem_SumDWts before doing update if in dmem mode"; }; }; }; MethodCall @[6] { desc="network accumulates some core statistics over the epoch -- this finalizes that process and computes summary stats"; flags=CAN_REVERT_TO_CODE; code_string="network->Compute_EpochStats()"; pre_compile_code_string="network->Compute_EpochStats()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].args["network"]$; method=LeabraNetwork::Compute_EpochStats; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Compute_EpochStats()"; meth_desc=" compute epoch-level statistics; calls DMem_ComputeAggs (if dmem) and EpochSSE -- specific algos may add more compute epoch-level statistics, including SSE, AvgExtRew and AvgCycles"; }; ProgramCall @[7] { desc="run program that records data from network and possibly other sources about the epoch"; flags=CAN_REVERT_TO_CODE; code_string="LeabraEpochMonitor_10(network, FlatNetwork)"; pre_compile_code_string="LeabraEpochMonitor_10(network, FlatNetwork)"; prog_args { name="ProgArg_List_0"; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="FlatNetwork"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"]$$; targ_ld_init="*LeabraEpochMonitor*"; }; MethodCall @[8] { desc="done with the computation in the epoch -- record time it took"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer->EndTimer()"; pre_compile_code_string="epoch_timer->EndTimer()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpoch"].vars["epoch_timer"]$; method=TimeUsed::EndTimer; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void EndTimer()"; meth_desc=" record the current time as the ending time, and compute difference as the time used"; }; }; step_prog=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"]$; step_n=3; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraTrial"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].doc$$; }; }; name="LeabraTrial"; short_nm="Trial"; 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)"; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- typically set by higher-level calling programs"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="datatable containing training input/output patterns"; init_from=NULL; }; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["phase_no"] { name="phase_no"; var_type=T_Int; int_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="local phase counting variable (0 is typically minus phase, 1 is typically plus -- depends on network settings)"; init_from=NULL; }; ProgVar @["update_net_view"] { name="update_net_view"; var_type=T_Bool; bool_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="determines whether to update any network view displays after trial is completed"; init_from=NULL; }; ProgVar @["NLoops"] { name="NLoops"; var_type=T_Int; int_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="batch counter"; init_from=NULL; }; ProgVar @["actM0"] { name="actM0"; var_type=T_Real; real_val=0.0002421888639219105; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["Motor_Cortex"] { name="Motor_Cortex"; var_type=T_Object; object_type=LeabraLayer; object_val=.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM1"] { name="actM1"; var_type=T_Real; real_val=0.00126910675317049; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM2"] { name="actM2"; var_type=T_Real; real_val=0.2726072669029236; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM3"] { name="actM3"; var_type=T_Real; real_val=0.8671908974647522; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM4"] { name="actM4"; var_type=T_Real; real_val=0.0008617095882073045; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM5"] { name="actM5"; var_type=T_Real; real_val=0.0007556292694061995; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM6"] { name="actM6"; var_type=T_Real; real_val=0.2125739306211472; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM7"] { name="actM7"; var_type=T_Real; real_val=0.8839321732521057; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["action"] { name="action"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["r1"] { name="r1"; var_type=T_Int; int_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["r2"] { name="r2"; var_type=T_Int; int_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["r3"] { name="r3"; var_type=T_Int; int_val=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["r4"] { name="r4"; var_type=T_Int; int_val=1; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["Output"] { name="Output"; var_type=T_Object; object_type=LeabraLayer; object_val=.projects["BG_9060_4010"].networks["BG_4s"].layers["Output"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["bias"] { name="bias"; var_type=T_Real; real_val=3; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initialize the local phase_no counter, and corresponding network one"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: phase_no"; pre_compile_code_string="Net Counter Init: phase_no"; network_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$$; local_ctr_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["phase_no"]$$; counter=LeabraNetwork::phase_no; update_after=0; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initialize the local phase_no counter, and corresponding network one"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: phase_no"; pre_compile_code_string="Net Counter Init: phase_no"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["phase_no"]$; counter=LeabraNetwork::phase_no; update_after=0; }; MethodCall @[1] { desc="initializes various counters at start of trial"; flags=CAN_REVERT_TO_CODE; code_string="network->Trial_Init()"; pre_compile_code_string="network->Trial_Init()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$; method=LeabraNetwork::Trial_Init; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Trial_Init()"; meth_desc=" initialize at start of trial (SetCurLrate, set phase_max, Decay state)"; }; WhileLoop @[2] { desc="loop over phases of settling in the network"; flags=CAN_REVERT_TO_CODE; code_string="while (phase_no < network.phase_max)"; pre_compile_code_string="while (phase_no < network.phase_max)"; loop_code { name=; el_typ=ProgCode; el_def=0; ProgramCall @[0] { desc="run the settle program (which iterates over cyles of network activation updating) for each phase"; flags=CAN_REVERT_TO_CODE; code_string="LeabraSettle(network, FlatNetwork, input_data)"; pre_compile_code_string="LeabraSettle(network, FlatNetwork, input_data)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="FlatNetwork"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; ProgArg @[2] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; }; target=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"]$; targ_ld_init="*LeabraSettle*"; }; NetCounterIncr @[1] { desc="increment the phase number (also on network)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Incr: phase_no"; pre_compile_code_string="Net Counter Incr: phase_no"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["phase_no"]$; counter=LeabraNetwork::phase_no; update_after=0; }; MethodCall @[2] { desc="increments other phase state information to prepare for the next phase of settling"; flags=CAN_REVERT_TO_CODE; code_string="network->Trial_UpdatePhase()"; pre_compile_code_string="network->Trial_UpdatePhase()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$; method=LeabraNetwork::Trial_UpdatePhase; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Trial_UpdatePhase()"; meth_desc=" update phase based on phase_no -- typically called by program in Trial loop over settling"; }; }; test { expr="phase_no < network.phase_max"; }; }; AssignExpr @[3] { desc="store minus phase activation of motor ctx unit 0"; flags=CAN_REVERT_TO_CODE; code_string="actM0 = Motor_Cortex.units[0].act_m"; pre_compile_code_string="actM0 = Motor_Cortex.units[0].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM0"]$$; expr { expr="Motor_Cortex.units[0].act_m"; }; }; AssignExpr @[4] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM1 = Motor_Cortex.units[1].act_m"; pre_compile_code_string="actM1 = Motor_Cortex.units[1].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM1"]$$; expr { expr="Motor_Cortex.units[1].act_m"; }; }; AssignExpr @[5] { desc="store minus phase activation of motor ctx unit 0"; flags=CAN_REVERT_TO_CODE; code_string="actM2 = Motor_Cortex.units[2].act_m"; pre_compile_code_string="actM2 = Motor_Cortex.units[2].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM2"]$$; expr { expr="Motor_Cortex.units[2].act_m"; }; }; AssignExpr @[6] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM3 = Motor_Cortex.units[3].act_m"; pre_compile_code_string="actM3 = Motor_Cortex.units[3].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM3"]$$; expr { expr="Motor_Cortex.units[3].act_m"; }; }; AssignExpr @[7] { desc="store minus phase activation of motor ctx unit 0"; flags=CAN_REVERT_TO_CODE; code_string="actM4 = Motor_Cortex.units[4].act_m"; pre_compile_code_string="actM4 = Motor_Cortex.units[4].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM4"]$$; expr { expr="Motor_Cortex.units[4].act_m"; }; }; AssignExpr @[8] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM5 = Motor_Cortex.units[5].act_m"; pre_compile_code_string="actM5 = Motor_Cortex.units[5].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM5"]$$; expr { expr="Motor_Cortex.units[5].act_m"; }; }; AssignExpr @[9] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM6 = Motor_Cortex.units[6].act_m"; pre_compile_code_string="actM6 = Motor_Cortex.units[6].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM6"]$$; expr { expr="Motor_Cortex.units[6].act_m"; }; }; AssignExpr @[10] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM7 = Motor_Cortex.units[7].act_m"; pre_compile_code_string="actM7 = Motor_Cortex.units[7].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["actM7"]$$; expr { expr="Motor_Cortex.units[7].act_m"; }; }; AssignExpr @[11] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 0"; pre_compile_code_string="action = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["action"]$$; expr { expr="0"; }; }; AssignExpr @[12] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r1 = 0"; pre_compile_code_string="r1 = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r1"]$$; expr { expr="0"; }; }; AssignExpr @[13] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r2 = 0"; pre_compile_code_string="r2 = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r2"]$$; expr { expr="0"; }; }; AssignExpr @[14] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r3 = 0"; pre_compile_code_string="r3 = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r3"]$$; expr { expr="0"; }; }; AssignExpr @[15] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r4 = 0"; pre_compile_code_string="r4 = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r4"]$$; expr { expr="0"; }; }; If @[16] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Output.acts.max >0)"; pre_compile_code_string="if (Output.acts.max >0)"; cond { expr="Output.acts.max >0"; }; true_code { name="ProgEl_List_190"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (( actM0+actM4 > actM1+actM5) & ( actM0+actM4 > actM2+actM6) & ( actM0+actM4 > actM3+actM7))"; pre_compile_code_string="if (( actM0+actM4 > actM1+actM5) & ( actM0+actM4 > actM2+actM6) & ( actM0+actM4 > actM3+actM7))"; cond { expr="( actM0+actM4 > actM1+actM5) & ( actM0+actM4 > actM2+actM6) & ( actM0+actM4 > actM3+actM7)"; }; true_code { name=; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[0].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[0].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[0].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[4].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[4].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[4].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 1"; pre_compile_code_string="action = 1"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["action"]$; expr { expr="1"; }; }; AssignExpr @[3] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r1 = 1"; pre_compile_code_string="r1 = 1"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r1"]$; expr { expr="1"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (( actM1+actM5 > actM0+actM4) & ( actM1+actM5 > actM2+actM6) & ( actM1+actM5 > actM3+actM7))"; pre_compile_code_string="if (( actM1+actM5 > actM0+actM4) & ( actM1+actM5 > actM2+actM6) & ( actM1+actM5 > actM3+actM7))"; cond { expr="( actM1+actM5 > actM0+actM4) & ( actM1+actM5 > actM2+actM6) & ( actM1+actM5 > actM3+actM7)"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[1].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[1].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[1].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[5].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[5].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[5].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 2"; pre_compile_code_string="action = 2"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["action"]$; expr { expr="2"; }; }; AssignExpr @[3] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r2 = 1"; pre_compile_code_string="r2 = 1"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r2"]$; expr { expr="1"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (( actM2+actM6 > actM0+actM4) & ( actM2+actM6 > actM1+actM5) & ( actM2+actM6 > actM3+actM7))"; pre_compile_code_string="if (( actM2+actM6 > actM0+actM4) & ( actM2+actM6 > actM1+actM5) & ( actM2+actM6 > actM3+actM7))"; cond { expr="( actM2+actM6 > actM0+actM4) & ( actM2+actM6 > actM1+actM5) & ( actM2+actM6 > actM3+actM7)"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[2].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[2].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[2].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[6].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[6].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[6].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 3"; pre_compile_code_string="action = 3"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["action"]$; expr { expr="3"; }; }; AssignExpr @[3] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r3 = 1"; pre_compile_code_string="r3 = 1"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r3"]$; expr { expr="1"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[3].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[3].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[3].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[7].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[7].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[7].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 4"; pre_compile_code_string="action = 4"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["action"]$; expr { expr="4"; }; }; AssignExpr @[3] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="r4 = 1"; pre_compile_code_string="r4 = 1"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r4"]$; expr { expr="1"; }; }; }; }; }; }; }; }; }; }; MethodCall @[17] { desc="after the trial is over, do final computations: Compute_dWt (learn weights), compute stats"; flags=CAN_REVERT_TO_CODE; code_string="network->Trial_Final()"; pre_compile_code_string="network->Trial_Final()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$; method=LeabraNetwork::Trial_Final; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Trial_Final()"; meth_desc=" do final processing after trial (Compute_dWt, EncodeState)"; }; ProgramCall @[18] { desc="records data about the trial-level processing to a datatable for graphing/processing"; flags=CAN_REVERT_TO_CODE; code_string="LeabraTrialMonitor(network)"; pre_compile_code_string="LeabraTrialMonitor(network)"; prog_args { name="ProgArg_List_0"; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"]$$; targ_ld_init="*LeabraTrialMonitor*"; }; NetUpdateView @[19] { desc="update the network view(s) (only if update_net_view is true)"; flags=CAN_REVERT_TO_CODE; code_string="Net Update View"; pre_compile_code_string="Net Update View"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].args["network"]$; update_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["update_net_view"]$$; }; }; step_prog=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraCycle"]$$; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraSettle"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].doc$$; }; }; name="LeabraSettle"; short_nm="Settle"; tags="Leabra, Std"; desc="iterates over cycles of updating until network has settled into a stable state, or output activations have exceeded a threshold"; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc=; init_from=NULL; }; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc=; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["cycle"] { name="cycle"; var_type=T_Int; int_val=14; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="current cycle of settling (local loop counter)"; init_from=NULL; }; ProgVar @["min_cycles"] { name="min_cycles"; var_type=T_Int; int_val=15; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; 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"; init_from=NULL; }; ProgVar @["update_net_view"] { name="update_net_view"; var_type=T_Bool; bool_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="if true, will update network views at end of settling"; init_from=NULL; }; ProgVar @["Output"] { name="Output"; var_type=T_Object; object_type=LeabraLayer; object_val=$.projects["BG_9060_4010"].networks["BG_4s"].layers["Output"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["Thal"] { name="Thal"; var_type=T_Object; object_type=LeabraLayer; object_val=.projects["BG_9060_4010"].networks["BG_4s"].layers["Thalamus"]$$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["NLoops"] { name="NLoops"; var_type=T_Int; int_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="batch counter"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initialize local cycle counter and corresponding counter on network"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: cycle"; pre_compile_code_string="Net Counter Init: cycle"; network_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$$; local_ctr_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["cycle"]$$; counter=Network::cycle; update_after=0; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; NetCounterInit @[0] { desc="initialize local cycle counter and corresponding counter on network"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Init: cycle"; pre_compile_code_string="Net Counter Init: cycle"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["cycle"]$; counter=Network::cycle; update_after=0; }; AssignExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Output = network.layers.Output"; pre_compile_code_string="Output = network.layers.Output"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["Output"]$$; expr { expr="network.layers.Output"; }; }; AssignExpr @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Thal = network.layers.Thalamus"; pre_compile_code_string="Thal = network.layers.Thalamus"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["Thal"]$$; expr { expr="network.layers.Thalamus"; }; }; MethodCall @[3] { desc="resets input data, before getting new external inputs data from apply inputs call"; flags=CAN_REVERT_TO_CODE; code_string="network->Init_InputData()"; pre_compile_code_string="network->Init_InputData()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; method=Network::Init_InputData; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Init_InputData()"; meth_desc=" Initializes external and target inputs"; }; ProgramCall @[4] { 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=CAN_REVERT_TO_CODE; code_string="ApplyInput1(FlatNetwork, input_data)"; pre_compile_code_string="ApplyInput1(FlatNetwork, input_data)"; prog_args { name="ProgArg_List_0"; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="FlatNetwork"; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"]$$; targ_ld_init="*ApplyInput1*"; }; ProgramCall @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="DA_Rew_Punish(network, input_data)"; pre_compile_code_string="DA_Rew_Punish(network, input_data)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; ProgArg @[1] { arg_type=DataTable; type="DataTable*"; name="input_data"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; }; target=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"]$; targ_ld_init="*DA_Rew_Punish*"; }; If @[6] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (network.phase == LeabraNetwork::PLUS_PHASE)"; pre_compile_code_string="if (network.phase == LeabraNetwork::PLUS_PHASE)"; cond { expr="network.phase == LeabraNetwork::PLUS_PHASE"; }; true_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="network.cycle_max = 30"; pre_compile_code_string="network.cycle_max = 30"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; path="cycle_max"; expr { expr="30"; }; update_after=0; }; }; }; Else @[7] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="number of cycles to run in minus phase"; flags=CAN_REVERT_TO_CODE; code_string="network.cycle_max = 150"; pre_compile_code_string="network.cycle_max = 150"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; path="cycle_max"; expr { expr="150"; }; update_after=0; }; }; }; MethodCall @[8] { desc="initializes various counters at start of settling"; flags=CAN_REVERT_TO_CODE; code_string="network->Settle_Init()"; pre_compile_code_string="network->Settle_Init()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; method=LeabraNetwork::Settle_Init; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Settle_Init()"; meth_desc=" initialize network for settle-level processing (decay, active k, hard clamp, netscale)"; }; If @[9] { desc="get appropriate min_cycles value depending on which phase we're in"; flags=CAN_REVERT_TO_CODE; code_string="if (network.phase_no <= 1)"; pre_compile_code_string="if (network.phase_no <= 1)"; cond { expr="network.phase_no <= 1"; }; true_code { name=; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc="get minimum number of cycles from parameter on network (which is where you should change this value!)"; flags=CAN_REVERT_TO_CODE; code_string="min_cycles = network.min_cycles"; pre_compile_code_string="min_cycles = network.min_cycles"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["min_cycles"]$$; expr { expr="network.min_cycles"; }; }; }; }; Else @[10] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc="get minimum number of cycles from parameter on network (which is where you should change this value!)"; flags=CAN_REVERT_TO_CODE; code_string="min_cycles = network.min_cycles_phase2"; pre_compile_code_string="min_cycles = network.min_cycles_phase2"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["min_cycles"]$; expr { expr="network.min_cycles_phase2"; }; }; }; }; WhileLoop @[11] { desc="the main loop over cycles of updating"; flags=CAN_REVERT_TO_CODE; code_string="while (cycle < network.cycle_max)"; pre_compile_code_string="while (cycle < network.cycle_max)"; loop_code { name=; el_typ=ProgCode; el_def=0; ProgramCall @[0] { desc="run the cycle program, which computes one cycle of activations"; flags=CAN_REVERT_TO_CODE; code_string="LeabraCycle(network)"; pre_compile_code_string="LeabraCycle(network)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=LeabraNetwork; type="LeabraNetwork*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; target=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraCycle"]$; targ_ld_init="*LeabraCycle*"; }; NetCounterIncr @[1] { desc="increment cycle counter (also on network)"; flags=CAN_REVERT_TO_CODE; code_string="Net Counter Incr: cycle"; pre_compile_code_string="Net Counter Incr: cycle"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; local_ctr_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["cycle"]$; counter=Network::cycle; update_after=0; }; IfContinue @[2] { desc="avoid subsequent stopping criteria if below min_cycles"; flags=CAN_REVERT_TO_CODE; code_string="if(cycle < min_cycles) continue"; pre_compile_code_string="if(cycle < min_cycles) continue"; cond { expr="cycle < min_cycles"; }; }; IfBreak @[3] { desc="stop settling when thal unit is 50% active (so average thal = .25)"; flags=OFF|CAN_REVERT_TO_CODE; code_string="if((network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.avg > .25)&(Thal.acts.avg > .25)) break"; pre_compile_code_string="if((network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.avg > .25)&(Thal.acts.avg > .25)) break"; cond { expr="(network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.avg > .25)&(Thal.acts.avg > .25)"; }; }; If @[4] { desc=; flags=OFF|CAN_REVERT_TO_CODE; code_string="if ((network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.max > .5)&(Thal.acts.max > .5))"; pre_compile_code_string="if ((network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.max > .5)&(Thal.acts.max > .5))"; cond { expr="(network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.max > .5)&(Thal.acts.max > .5)"; }; true_code { name=; el_typ=ProgCode; el_def=0; PrintExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Print Output.acts.max"; pre_compile_code_string="Print Output.acts.max"; expr { expr="Output.acts.max"; }; debug=0; }; PrintExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Print Thal.acts.max"; pre_compile_code_string="Print Thal.acts.max"; expr { expr="Thal.acts.max"; }; debug=0; }; }; }; IfBreak @[5] { desc="stop settling when thal unit is 50% active (so average thal = .25)"; flags=CAN_REVERT_TO_CODE; code_string="if((network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.max > .5)&(Thal.acts.max > .5)) break"; pre_compile_code_string="if((network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.max > .5)&(Thal.acts.max > .5)) break"; cond { expr="(network.phase == LeabraNetwork::MINUS_PHASE)&(Output.acts.max > .5)&(Thal.acts.max > .5)"; }; }; IfBreak @[6] { 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=OFF|CAN_REVERT_TO_CODE; code_string="if((network.maxda < network.maxda_stopcrit) || (network.trg_max_act > network.trg_max_act_stopcrit)) break"; pre_compile_code_string="if((network.maxda < network.maxda_stopcrit) || (network.trg_max_act > network.trg_max_act_stopcrit)) break"; cond { expr="(network.maxda < network.maxda_stopcrit) || (network.trg_max_act > network.trg_max_act_stopcrit)"; }; }; }; test { expr="cycle < network.cycle_max"; }; }; MethodCall @[12] { desc="perform final operations at end of settling (storing final activations, etc)"; flags=CAN_REVERT_TO_CODE; code_string="network->Settle_Final()"; pre_compile_code_string="network->Settle_Final()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; method=LeabraNetwork::Settle_Final; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Settle_Final()"; meth_desc=" do final processing after settling (postsettle, Compute_dWt if needed)"; }; If @[13] { 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=CAN_REVERT_TO_CODE; code_string="if (network.phase == LeabraNetwork::MINUS_PHASE)"; pre_compile_code_string="if (network.phase == LeabraNetwork::MINUS_PHASE)"; cond { expr="network.phase == LeabraNetwork::MINUS_PHASE"; }; true_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="compute trial-level statistics"; flags=CAN_REVERT_TO_CODE; code_string="network->Compute_TrialStats()"; pre_compile_code_string="network->Compute_TrialStats()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; method=LeabraNetwork::Compute_TrialStats; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Compute_TrialStats()"; meth_desc=" compute trial-level statistics (SSE and others defined by specific algorithms) compute trial-level statistics, including SSE and minus cycles -- to be called at end of minus phase -- use Compute_TrialStats_Test() to determine when -- HOWEVER: it is much better to call Compute_PhaseStats(), which calls Compute_MinusStats() and Compute_PlustStats() separately at end of each phase (respectively) to get the appropriate stats at each point"; }; }; }; If @[14] { desc="this stat must be called in plus phase when reward information is avail"; flags=CAN_REVERT_TO_CODE; code_string="if (network.phase_no == 1)"; pre_compile_code_string="if (network.phase_no == 1)"; cond { expr="network.phase_no == 1"; }; true_code { name=; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="get external reward information"; flags=CAN_REVERT_TO_CODE; code_string="network->Compute_ExtRew()"; pre_compile_code_string="network->Compute_ExtRew()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; method=LeabraNetwork::Compute_ExtRew; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Compute_ExtRew()"; meth_desc=" compute external reward information: Must be called in plus phase (phase_no == 1)"; }; }; }; NetUpdateView @[15] { desc="update network views, if update_net_view == true"; flags=CAN_REVERT_TO_CODE; code_string="Net Update View"; pre_compile_code_string="Net Update View"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].args["network"]$; update_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraSettle"].vars["update_net_view"]$$; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraCycle"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraCycle"].doc$$; }; }; name="LeabraCycle"; short_nm="Cycle"; tags="Leabra, Std"; desc="runs one cycle of leabra processing (updating net inputs and activations)"; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc=; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["update_net_view"] { name="update_net_view"; var_type=T_Bool; bool_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; 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)"; init_from=NULL; }; ProgVar @["i"] { name="i"; var_type=T_Int; int_val=12; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="this does all the standard leabra processing for one cycle of activation updating"; flags=CAN_REVERT_TO_CODE; code_string="network->Cycle_Run()"; pre_compile_code_string="network->Cycle_Run()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraCycle"].args["network"]$$; method=LeabraNetwork::Cycle_Run; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void Cycle_Run()"; meth_desc=" compute one cycle of updating: netinput, inhibition, activations"; }; NetUpdateView @[1] { desc="update network views if update_net_view == true"; flags=CAN_REVERT_TO_CODE; code_string="Net Update View"; pre_compile_code_string="Net Update View"; network_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraCycle"].args["network"]$; update_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraCycle"].vars["update_net_view"]$$; }; If @[2] { desc="apply phasic DA in plus phase"; flags=OFF|CAN_REVERT_TO_CODE; code_string="if (network.phase==LeabraNetwork::PLUS_PHASE)"; pre_compile_code_string="if (network.phase==LeabraNetwork::PLUS_PHASE)"; cond { expr="network.phase==LeabraNetwork::PLUS_PHASE"; }; true_code { name=; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < 12; i++)"; pre_compile_code_string="for (i = 0; i < 12; i++)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="object.units[i].act = InputHidden.units[i].act_m"; pre_compile_code_string="object.units[i].act = InputHidden.units[i].act_m"; obj=NULL; path="units[i].act"; expr { expr="InputHidden.units[i].act_m"; }; update_after=1; }; PrintExpr @[1] { desc=; flags=OFF|CAN_REVERT_TO_CODE; code_string="Print \"boum\""; pre_compile_code_string="Print \"boum\""; expr { expr="\"boum\""; }; debug=0; }; }; init { expr="i = 0"; }; test { expr="i < 12"; }; iter { expr="i++"; }; }; }; }; Else @[3] { desc=; flags=OFF|CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < 1; i++)"; pre_compile_code_string="for (i = 0; i < 1; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; }; init { expr="i = 0"; }; test { expr="i < 1"; }; iter { expr="i++"; }; }; }; }; ProgramCall @[4] { desc=; flags=OFF|NON_STD|CAN_REVERT_TO_CODE; code_string="Cycle_Monitor(network)"; pre_compile_code_string="Cycle_Monitor(network)"; prog_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=Network; type="Network*"; name="network"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; target=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"]$$; targ_ld_init="*Cycle_Monitor*"; }; }; step_prog=NULL; step_n=5; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["ApplyInput1"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"].doc$$; }; }; name="ApplyInput1"; short_nm="pplynp"; tags="Network, InputData, Apply"; desc="apply the current input data to the network as external input and target values"; version { major=0; minor=0; step=0; }; author=; email=; flags=NO_STOP_STEP; stop_step_cond { expr=; }; objs { name="objs"; el_typ=LayerWriter; el_def=0; LayerWriter @["LayerWriter_0"] { name="LayerWriter_0"; data=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; network=$.projects["BG_9060_4010"].networks["BG_4s"]$; layer_data { name="layer_data"; el_typ=LayerWriterEl; el_def=0; LayerWriterEl @[0] { col_name="Input"; net_target=LAYER; layer_name="Input"; offset {x=0: y=0: }; use_layer_type=1; quiet=0; na_by_range=0; ext_flags=EXT; noise {name="noise": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[1] { col_name="Output"; net_target=LAYER; layer_name="Output"; offset {x=0: y=0: }; use_layer_type=1; quiet=0; na_by_range=0; ext_flags=TARG; noise {name="noise": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[2] { col_name="SNc"; net_target=LAYER; layer_name="SNc"; offset {x=0: y=0: }; use_layer_type=1; quiet=0; na_by_range=0; ext_flags=EXT; noise {name="noise": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[3] { col_name="Motor_Cortex"; net_target=LAYER; layer_name="PMC"; offset {x=0: y=0: }; use_layer_type=0; quiet=0; na_by_range=0; ext_flags=COMP; noise {name="noise": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[4] { col_name="Name"; net_target=TRIAL_NAME; layer_name="Name"; offset {x=0: y=0: }; use_layer_type=1; quiet=0; na_by_range=0; ext_flags=0; noise {name="noise": type=NONE: mean=0: var=0.5: par=1: }; }; LayerWriterEl @[5] { col_name="Context"; net_target=LAYER; layer_name="ctxt"; offset {x=0: y=0: }; use_layer_type=1; quiet=0; na_by_range=0; ext_flags=EXT; noise {name="noise": type=NONE: mean=0: var=0.5: par=1: }; }; }; }; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=Network; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to apply inputs to -- typically set by calling program"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="input datatable containing input/output patterns"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["LayerWriter_0"] { name="LayerWriter_0"; var_type=T_Object; object_type=LayerWriter; object_val=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"].objs["LayerWriter_0"]$$; objs_ptr=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="this is a pointer to the LayerWriter object in objs -- edit that object to determine how information is presented to the network"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="sets the datatable and network for the layer writer, so it knows what to write to"; flags=CAN_REVERT_TO_CODE; code_string="LayerWriter_0->SetDataNetwork(input_data, network)"; pre_compile_code_string="LayerWriter_0->SetDataNetwork(input_data, network)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"].vars["LayerWriter_0"]$$; method=LayerWriter::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="db"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; meth_sig="void SetDataNetwork(DataTable* db, Network* net)"; meth_desc=" set the data table and network pointers -- convenience function for programs "; }; MethodCall @[1] { desc="check the configuration of the layer writer -- will emit warnings and errors for missing or misconfigured items"; flags=CAN_REVERT_TO_CODE; code_string="LayerWriter_0->CheckConfig(false)"; pre_compile_code_string="LayerWriter_0->CheckConfig(false)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"].vars["LayerWriter_0"]$; 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"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="bool CheckConfig(bool quiet = false)"; meth_desc=" check the configuration of this object and all its children (defaults to no confirm of success)"; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="sets the datatable and network for the layer writer, so it knows what to write to"; flags=CAN_REVERT_TO_CODE; code_string="LayerWriter_0->SetDataNetwork(input_data, network)"; pre_compile_code_string="LayerWriter_0->SetDataNetwork(input_data, network)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"].vars["LayerWriter_0"]$; method=LayerWriter::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="db"; required=1; def_val=; prev_expr=; expr { expr="input_data"; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; meth_sig="void SetDataNetwork(DataTable* db, Network* net)"; meth_desc=" set the data table and network pointers -- convenience function for programs "; }; MethodCall @[1] { desc="apply inputs to the network! layer writer has all the key specs"; flags=CAN_REVERT_TO_CODE; code_string="LayerWriter_0->ApplyInputData()"; pre_compile_code_string="LayerWriter_0->ApplyInputData()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["ApplyInput1"].vars["LayerWriter_0"]$; method=LayerWriter::ApplyInputData; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="bool ApplyInputData()"; meth_desc=" apply data to the layers, using the network's current context settings (TEST,TRAIN,etc) -- returns success"; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraTrialMonitor"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].doc$$; }; }; name="LeabraTrialMonitor"; short_nm="TrMntF"; 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 "; version { major=0; minor=0; step=0; }; author=; email=; flags=NO_STOP_STEP; stop_step_cond { expr=; }; objs { name="objs"; el_typ=NetMonitor; el_def=0; NetMonitor @["trial_netmon"] { name="trial_netmon"; items { name="items"; el_typ=NetMonItem; el_def=0; NetMonItem @["batch"] { name="batch"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["epoch"] { name="epoch"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["trial_name"] { name="trial_name"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="trial_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["minus_cycles"] { name="minus_cycles"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="minus_cycles"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["r1"] { name="r1"; computed=0; object_type=ProgVar; object=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r1"]$; variable="int_val"; var_label=; name_style=MY_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["r2"] { name="r2"; computed=0; object_type=ProgVar; object=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r2"]$; variable="int_val"; var_label=; name_style=MY_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["r3"] { name="r3"; computed=0; object_type=ProgVar; object=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r3"]$; variable="int_val"; var_label=; name_style=MY_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["r4"] { name="r4"; computed=0; object_type=ProgVar; object=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrial"].vars["r4"]$; variable="int_val"; var_label=; name_style=MY_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=$.projects["BG_9060_4010"].networks["BG_4s"]$; data=$.projects["BG_9060_4010"].data.gp["OutputData"]["TrialOutputData"]$; rmv_orphan_cols=1; }; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=Network; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to record data from"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["trial_mon_data"] { name="trial_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["OutputData"]["TrialOutputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="data table to record trial-level data to (this program writes new data to this table!)"; init_from=NULL; }; ProgVar @["trial_netmon"] { name="trial_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].objs["trial_netmon"]$$; objs_ptr=1; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="pointer to the NetMonitor object in objs secton of this program that contains configuration for what to record and where to get it"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="set the network and datatable for the NetMonitor"; flags=CAN_REVERT_TO_CODE; code_string="trial_netmon->SetDataNetwork(trial_mon_data, network)"; pre_compile_code_string="trial_netmon->SetDataNetwork(trial_mon_data, network)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].vars["trial_netmon"]$$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=1; def_val=; prev_expr=; expr { expr="trial_mon_data"; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; meth_sig="void SetDataNetwork(DataTable* dt, Network* net)"; meth_desc=" set both the data table and network -- convenient for programs -- calls ResetDataTableCols too -- don't call if columns are manually added or this is adding additional rows to a table"; }; MethodCall @[1] { desc="check the configuration of the network monitor -- will emit warnings and errors for misconfigurations"; flags=CAN_REVERT_TO_CODE; code_string="trial_netmon->CheckConfig(false)"; pre_compile_code_string="trial_netmon->CheckConfig(false)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].vars["trial_netmon"]$; 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"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="bool CheckConfig(bool quiet = false)"; meth_desc=" check the configuration of this object and all its children (defaults to no confirm of success)"; }; MethodCall @[2] { desc="update the monitor items and data schema based on current settings of the NetMonitor object"; flags=CAN_REVERT_TO_CODE; code_string="trial_netmon->UpdateMonitors(true)"; pre_compile_code_string="trial_netmon->UpdateMonitors(true)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].vars["trial_netmon"]$; 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"; prev_expr=; expr { expr="true"; }; }; }; meth_sig="void UpdateMonitors(bool reset_first = false)"; meth_desc=" old name for UpdateDataTable"; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="add a new blank row to the data"; flags=CAN_REVERT_TO_CODE; code_string="trial_mon_data->AddBlankRow()"; pre_compile_code_string="trial_mon_data->AddBlankRow()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].vars["trial_mon_data"]$$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="int AddBlankRow()"; meth_desc=" add a new row to the data table, sets read (source) and write (sink) index to this last row (as in ReadItem or WriteItem), so that subsequent data routines refer to this new row, and returns row "; }; MethodCall @[1] { desc="get the new monitor data from the network and other sources -- this does the main work"; flags=CAN_REVERT_TO_CODE; code_string="trial_netmon->GetMonVals()"; pre_compile_code_string="trial_netmon->GetMonVals()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].vars["trial_netmon"]$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void GetMonVals()"; meth_desc=" get all the values and store in current row of data table -- call in program to get new data"; }; MethodCall @[2] { desc="update views and other things after writing new data to monitor data table"; flags=CAN_REVERT_TO_CODE; code_string="trial_mon_data->WriteClose()"; pre_compile_code_string="trial_mon_data->WriteClose()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].vars["trial_mon_data"]$; method=DataTable::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void WriteClose()"; meth_desc=" closes up a write operation -- call when done writing data -- performs any post-writing cleanup/closing of files, etc"; }; 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=CAN_REVERT_TO_CODE; code_string="network->DMem_ShareTrialData(trial_mon_data, 1)"; pre_compile_code_string="network->DMem_ShareTrialData(trial_mon_data, 1)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraTrialMonitor"].args["network"]$$; 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=; prev_expr=; expr { expr="trial_mon_data"; }; }; ProgArg @[1] { arg_type=int; type="int"; name="n_rows"; required=0; def_val="1"; prev_expr=; expr { expr="1"; }; }; }; meth_sig="void DMem_ShareTrialData(DataTable* dt, int n_rows = 1)"; meth_desc=" share trial data from given datatable across the trial-level dmem communicator (outer loop) -- each processor gets data from all other processors; if called every trial with n_rows = 1, data will be identical to non-dmem; if called at end of epoch with n_rows = -1 data will be grouped by processor but this is more efficient"; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["Cycle_Monitor"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].doc$$; }; }; name="Cycle_Monitor"; short_nm="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 "; version { major=0; minor=0; step=0; }; author=; email=; flags=NO_STOP_STEP; stop_step_cond { expr=; }; objs { name="objs"; el_typ=NetMonitor; el_def=0; NetMonitor @["cycle_netmon"] { name="cycle_netmon"; items { name="items"; el_typ=NetMonItem; el_def=0; NetMonItem @["batch"] { name="batch"; computed=0; object_type=LeabraNetwork; object=NULL; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["epoch"] { name="epoch"; computed=0; object_type=LeabraNetwork; object=NULL; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["trial"] { name="trial"; computed=0; object_type=LeabraNetwork; object=NULL; variable="trial"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["trial_name"] { name="trial_name"; computed=0; object_type=LeabraNetwork; object=NULL; variable="trial_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["group_name"] { name="group_name"; computed=0; object_type=LeabraNetwork; object=NULL; variable="group_name"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["phase_no"] { name="phase_no"; computed=0; object_type=LeabraNetwork; object=NULL; variable="phase_no"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["cycle"] { name="cycle"; computed=0; object_type=LeabraNetwork; object=NULL; variable="cycle"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["sse"] { name="sse"; computed=0; object_type=LeabraNetwork; object=NULL; variable="sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["ext_rew"] { name="ext_rew"; computed=0; object_type=LeabraNetwork; object=NULL; variable="ext_rew"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["STN_acts_avg"] { name="STN_acts_avg"; computed=0; object_type=LeabraLayer; object=NULL; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["Motor__acts_avg"] { name="Motor__acts_avg"; computed=0; object_type=LeabraLayer; object=NULL; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["Thalam_acts_avg"] { name="Thalam_acts_avg"; computed=0; object_type=LeabraLayer; object=NULL; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["GP_Int_acts_avg"] { name="GP_Int_acts_avg"; computed=0; object_type=LeabraLayer; object=NULL; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["GP_Ext_acts_avg"] { name="GP_Ext_acts_avg"; computed=0; object_type=LeabraLayer; object=NULL; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["Output_act"] { name="Output_act"; computed=0; object_type=LeabraLayer; object=NULL; variable="act"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["Output_units_0_act"] { name="Output_units_0_act"; computed=0; object_type=LeabraLayer; object=NULL; variable="units[0].act"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["SNc_acts_avg"] { name="SNc_acts_avg"; computed=0; object_type=LeabraLayer; object=NULL; variable="acts.avg"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=NULL; data=.projects["BG_9060_4010"].data.gp["OutputData"]["CycleOutputData"]$$; rmv_orphan_cols=1; }; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=Network; object_val=NULL; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to record data from"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["cycle_mon_data"] { name="cycle_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["OutputData"]["CycleOutputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="data table to record trial-level data to (this program writes new data to this table!)"; init_from=NULL; }; ProgVar @["cycle_netmon"] { name="cycle_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].objs["cycle_netmon"]$$; objs_ptr=1; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="pointer to the NetMonitor object in objs secton of this program that contains configuration for what to record and where to get it"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="set the network and datatable for the NetMonitor"; flags=CAN_REVERT_TO_CODE; code_string="cycle_netmon->SetDataNetwork(cycle_mon_data, network)"; pre_compile_code_string="cycle_netmon->SetDataNetwork(cycle_mon_data, network)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].vars["cycle_netmon"]$$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=1; def_val=; prev_expr=; expr { expr="cycle_mon_data"; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; meth_sig="void SetDataNetwork(DataTable* dt, Network* net)"; meth_desc=" set both the data table and network -- convenient for programs -- calls ResetDataTableCols too -- don't call if columns are manually added or this is adding additional rows to a table"; }; MethodCall @[1] { desc="check the configuration of the network monitor -- will emit warnings and errors for misconfigurations"; flags=CAN_REVERT_TO_CODE; code_string="cycle_netmon->CheckConfig(false)"; pre_compile_code_string="cycle_netmon->CheckConfig(false)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].vars["cycle_netmon"]$; 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"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="bool CheckConfig(bool quiet = false)"; meth_desc=" check the configuration of this object and all its children (defaults to no confirm of success)"; }; MethodCall @[2] { desc="update the monitor items and data schema based on current settings of the NetMonitor object"; flags=CAN_REVERT_TO_CODE; code_string="cycle_netmon->UpdateMonitors(true)"; pre_compile_code_string="cycle_netmon->UpdateMonitors(true)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].vars["cycle_netmon"]$; 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"; prev_expr=; expr { expr="true"; }; }; }; meth_sig="void UpdateMonitors(bool reset_first = false)"; meth_desc=" old name for UpdateDataTable"; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; IfReturn @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if(network.phase_no>0) return"; pre_compile_code_string="if(network.phase_no>0) return"; cond { expr="network.phase_no>0"; }; }; MethodCall @[1] { desc="add a new blank row to the data"; flags=CAN_REVERT_TO_CODE; code_string="cycle_mon_data->AddBlankRow()"; pre_compile_code_string="cycle_mon_data->AddBlankRow()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].vars["cycle_mon_data"]$$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="int AddBlankRow()"; meth_desc=" add a new row to the data table, sets read (source) and write (sink) index to this last row (as in ReadItem or WriteItem), so that subsequent data routines refer to this new row, and returns row "; }; MethodCall @[2] { desc="get the new monitor data from the network and other sources -- this does the main work"; flags=CAN_REVERT_TO_CODE; code_string="cycle_netmon->GetMonVals()"; pre_compile_code_string="cycle_netmon->GetMonVals()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].vars["cycle_netmon"]$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void GetMonVals()"; meth_desc=" get all the values and store in current row of data table -- call in program to get new data"; }; MethodCall @[3] { desc="update views and other things after writing new data to monitor data table"; flags=CAN_REVERT_TO_CODE; code_string="cycle_mon_data->WriteClose()"; pre_compile_code_string="cycle_mon_data->WriteClose()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].vars["cycle_mon_data"]$; method=DataTable::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void WriteClose()"; meth_desc=" closes up a write operation -- call when done writing data -- performs any post-writing cleanup/closing of files, etc"; }; 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=CAN_REVERT_TO_CODE; code_string="network->DMem_ShareTrialData(cycle_mon_data, 1)"; pre_compile_code_string="network->DMem_ShareTrialData(cycle_mon_data, 1)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["Cycle_Monitor"].args["network"]$$; 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=; prev_expr=; expr { expr="cycle_mon_data"; }; }; ProgArg @[1] { arg_type=int; type="int"; name="n_rows"; required=0; def_val="1"; prev_expr=; expr { expr="1"; }; }; }; meth_sig="void DMem_ShareTrialData(DataTable* dt, int n_rows = 1)"; meth_desc=" share trial data from given datatable across the trial-level dmem communicator (outer loop) -- each processor gets data from all other processors; if called every trial with n_rows = 1, data will be identical to non-dmem; if called at end of epoch with n_rows = -1 data will be grouped by processor but this is more efficient"; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraEpochMonitor"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].doc$$; }; }; name="LeabraEpochMonitor"; short_nm="EpcMon"; 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"; version { major=0; minor=0; step=0; }; author=; email=; flags=NO_STOP_STEP; stop_step_cond { expr=; }; objs { name="objs"; el_typ=NetMonitor; el_def=0; NetMonitor @["epoch_netmon"] { name="epoch_netmon"; items { name="items"; el_typ=NetMonItem; el_def=0; NetMonItem @["batch"] { name="batch"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["epoch"] { name="epoch"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["avg_sse"] { name="avg_sse"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="avg_sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["cnt_err"] { name="cnt_err"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="cnt_err"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["avg_ext_rew"] { name="avg_ext_rew"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="avg_ext_rew"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["avg_cycles"] { name="avg_cycles"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="avg_cycles"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=$.projects["BG_9060_4010"].networks["BG_4s"]$; data=.projects["BG_9060_4010"].data.gp["OutputData"]["EpochOutputData"]$$; rmv_orphan_cols=1; }; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=Network; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to get data from"; init_from=NULL; }; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["epoch_mon_data"] { name="epoch_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["OutputData"]["EpochOutputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="data table to write the epoch data to"; init_from=NULL; }; ProgVar @["epoch_netmon"] { name="epoch_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].objs["epoch_netmon"]$$; objs_ptr=1; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="network monitor object that contains full specs for what to record and where to get it"; init_from=NULL; }; ProgVar @["epoch_timer"] { name="epoch_timer"; var_type=T_Object; object_type=TimeUsed; object_val=$.projects["BG_9060_4010"].networks["BG_4s"].epoch_time$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="pointer to the network's epoch-level timer, to record how long it took to process an epoch"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc="get the epoch timer from current network"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer = network.epoch_time"; pre_compile_code_string="epoch_timer = network.epoch_time"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_timer"]$$; expr { expr="network.epoch_time"; }; }; MethodCall @[1] { desc="set data and network on NetMonitor object"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->SetDataNetwork(epoch_mon_data, network)"; pre_compile_code_string="epoch_netmon->SetDataNetwork(epoch_mon_data, network)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_netmon"]$$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=1; def_val=; prev_expr=; expr { expr="epoch_mon_data"; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; meth_sig="void SetDataNetwork(DataTable* dt, Network* net)"; meth_desc=" set both the data table and network -- convenient for programs -- calls ResetDataTableCols too -- don't call if columns are manually added or this is adding additional rows to a table"; }; MethodCall @[2] { desc="check configuration and emit errors/warnings for problems"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->CheckConfig(false)"; pre_compile_code_string="epoch_netmon->CheckConfig(false)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_netmon"]$; 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"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="bool CheckConfig(bool quiet = false)"; meth_desc=" check the configuration of this object and all its children (defaults to no confirm of success)"; }; MethodCall @[3] { desc="update the monitor items and data schema based on current settings of NetMonitor"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->UpdateMonitors(true)"; pre_compile_code_string="epoch_netmon->UpdateMonitors(true)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_netmon"]$; 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"; prev_expr=; expr { expr="true"; }; }; }; meth_sig="void UpdateMonitors(bool reset_first = false)"; meth_desc=" old name for UpdateDataTable"; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="add a new blank row to the data"; flags=CAN_REVERT_TO_CODE; code_string="epoch_mon_data->AddBlankRow()"; pre_compile_code_string="epoch_mon_data->AddBlankRow()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_mon_data"]$$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="int AddBlankRow()"; meth_desc=" add a new row to the data table, sets read (source) and write (sink) index to this last row (as in ReadItem or WriteItem), so that subsequent data routines refer to this new row, and returns row "; }; MethodCall @[1] { desc="get the new monitor data and stor it into the data table -- this does the main job here"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->GetMonVals()"; pre_compile_code_string="epoch_netmon->GetMonVals()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_netmon"]$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void GetMonVals()"; meth_desc=" get all the values and store in current row of data table -- call in program to get new data"; }; AssignExpr @[2] { desc="get the epoch timer from current network"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer = network.epoch_time"; pre_compile_code_string="epoch_timer = network.epoch_time"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_timer"]$; expr { expr="network.epoch_time"; }; }; MethodCall @[3] { desc="update after writing new data to monitor data table"; flags=CAN_REVERT_TO_CODE; code_string="epoch_mon_data->WriteClose()"; pre_compile_code_string="epoch_mon_data->WriteClose()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor"].vars["epoch_mon_data"]$; method=DataTable::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void WriteClose()"; meth_desc=" closes up a write operation -- call when done writing data -- performs any post-writing cleanup/closing of files, etc"; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["LeabraEpochMonitor_10"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].doc$$; }; }; name="LeabraEpochMonitor_10"; short_nm="pcMntF"; 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"; version { major=0; minor=0; step=0; }; author=; email=; flags=NO_STOP_STEP; stop_step_cond { expr=; }; objs { name="objs"; el_typ=NetMonitor; el_def=0; NetMonitor @["epoch_netmon"] { name="epoch_netmon"; items { name="items"; el_typ=NetMonItem; el_def=0; NetMonItem @["batch"] { name="batch"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="batch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["epoch"] { name="epoch"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="epoch"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["avg_sse"] { name="avg_sse"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="avg_sse"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["cnt_err"] { name="cnt_err"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="cnt_err"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["avg_ext_rew"] { name="avg_ext_rew"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="avg_ext_rew"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; NetMonItem @["avg_cycles"] { name="avg_cycles"; computed=0; object_type=LeabraNetwork; object=$.projects["BG_9060_4010"].networks["BG_4s"]$; variable="avg_cycles"; var_label=; name_style=AUTO_NAME; max_name_len=6; val_type=VT_FLOAT; matrix=0; matrix_geom{ }; data_agg=0; data_src=NULL; agg_col { col_name=; }; agg {name="agg": op=NONE: rel={name="rel": rel=LESSTHANOREQUAL: val=0: val_string="": use_var=0: var=NULL: }: }; select_rows=0; select_spec { col_name=; name="_EQUAL_"; on=1; rel=EQUAL; use_var=0; cmp 0 1; var=NULL; enable_var=NULL; }; pre_proc_1 {name="pre_proc_1": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_2 {name="pre_proc_2": opr=NONE: arg=0: lw=-1: hi=1: }; pre_proc_3 {name="pre_proc_3": opr=NONE: arg=0: lw=-1: hi=1: }; }; }; network=$.projects["BG_9060_4010"].networks["BG_4s"]$; data=$.projects["BG_9060_4010"].data.gp["OutputData"]["EpochOutputData"]$; rmv_orphan_cols=1; }; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=Network; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to get data from"; init_from=NULL; }; ProgVar @["FlatNetwork"] { name="FlatNetwork"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL|PGRM_ARG; reference=0; desc="network to operate on -- updates batch counter on network and passes it to train program"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["epoch_mon_data"] { name="epoch_mon_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["OutputData"]["EpochOutputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="data table to write the epoch data to"; init_from=NULL; }; ProgVar @["epoch_netmon"] { name="epoch_netmon"; var_type=T_Object; object_type=NetMonitor; object_val=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].objs["epoch_netmon"]$$; objs_ptr=1; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="network monitor object that contains full specs for what to record and where to get it"; init_from=NULL; }; ProgVar @["epoch_timer"] { name="epoch_timer"; var_type=T_Object; object_type=TimeUsed; object_val=$.projects["BG_9060_4010"].networks["BG_4s"].epoch_time$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="pointer to the network's epoch-level timer, to record how long it took to process an epoch"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc="get the epoch timer from current network"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer = network.epoch_time"; pre_compile_code_string="epoch_timer = network.epoch_time"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_timer"]$$; expr { expr="network.epoch_time"; }; }; MethodCall @[1] { desc="set data and network on NetMonitor object"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->SetDataNetwork(epoch_mon_data, network)"; pre_compile_code_string="epoch_netmon->SetDataNetwork(epoch_mon_data, network)"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_netmon"]$$; method=NetMonitor::SetDataNetwork; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=DataTable_ptr; type="DataTable*"; name="dt"; required=1; def_val=; prev_expr=; expr { expr="epoch_mon_data"; }; }; ProgArg @[1] { arg_type=Network_ptr; type="Network*"; name="net"; required=1; def_val=; prev_expr=; expr { expr="network"; }; }; }; meth_sig="void SetDataNetwork(DataTable* dt, Network* net)"; meth_desc=" set both the data table and network -- convenient for programs -- calls ResetDataTableCols too -- don't call if columns are manually added or this is adding additional rows to a table"; }; MethodCall @[2] { desc="check configuration and emit errors/warnings for problems"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->CheckConfig(false)"; pre_compile_code_string="epoch_netmon->CheckConfig(false)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_netmon"]$; 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"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="bool CheckConfig(bool quiet = false)"; meth_desc=" check the configuration of this object and all its children (defaults to no confirm of success)"; }; MethodCall @[3] { desc="update the monitor items and data schema based on current settings of NetMonitor"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->UpdateMonitors(true)"; pre_compile_code_string="epoch_netmon->UpdateMonitors(true)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_netmon"]$; 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"; prev_expr=; expr { expr="true"; }; }; }; meth_sig="void UpdateMonitors(bool reset_first = false)"; meth_desc=" old name for UpdateDataTable"; }; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; MethodCall @[0] { desc="add a new blank row to the data"; flags=CAN_REVERT_TO_CODE; code_string="epoch_mon_data->AddBlankRow()"; pre_compile_code_string="epoch_mon_data->AddBlankRow()"; result_var=NULL; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_mon_data"]$$; method=DataTable::AddBlankRow; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="int AddBlankRow()"; meth_desc=" add a new row to the data table, sets read (source) and write (sink) index to this last row (as in ReadItem or WriteItem), so that subsequent data routines refer to this new row, and returns row "; }; MethodCall @[1] { desc="get the new monitor data and stor it into the data table -- this does the main job here"; flags=CAN_REVERT_TO_CODE; code_string="epoch_netmon->GetMonVals()"; pre_compile_code_string="epoch_netmon->GetMonVals()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_netmon"]$; method=NetMonitor::GetMonVals; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void GetMonVals()"; meth_desc=" get all the values and store in current row of data table -- call in program to get new data"; }; AssignExpr @[2] { desc="get the epoch timer from current network"; flags=CAN_REVERT_TO_CODE; code_string="epoch_timer = network.epoch_time"; pre_compile_code_string="epoch_timer = network.epoch_time"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_timer"]$; expr { expr="network.epoch_time"; }; }; MethodCall @[3] { desc="update after writing new data to monitor data table"; flags=CAN_REVERT_TO_CODE; code_string="epoch_mon_data->WriteClose()"; pre_compile_code_string="epoch_mon_data->WriteClose()"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["LeabraEpochMonitor_10"].vars["epoch_mon_data"]$; method=DataTable::WriteClose; meth_args { name=; el_typ=ProgArg; el_def=0; }; meth_sig="void WriteClose()"; meth_desc=" closes up a write operation -- call when done writing data -- performs any post-writing cleanup/closing of files, etc"; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["SaveWeights"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].doc$$; }; }; name="SaveWeights"; short_nm="SvWts"; 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"; version { major=0; minor=0; step=0; }; author=; email=; flags=NO_STOP_STEP; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=Network; object_val=NULL; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc=; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["tag"] { name="tag"; var_type=T_String; string_val=; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="user-provided tag (startup script will set this!)"; init_from=NULL; }; ProgVar @["wts_subdir"] { name="wts_subdir"; var_type=T_String; string_val=; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="user-provided subdirectory to save weights in"; init_from=NULL; }; ProgVar @["fname"] { name="fname"; var_type=T_String; string_val=; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="final generated file name -- do not edit!"; init_from=NULL; }; ProgVar @["epoch_str"] { name="epoch_str"; var_type=T_String; string_val="0036"; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="string rep of epoch with leading zeros"; init_from=NULL; }; ProgVar @["batch_str"] { name="batch_str"; var_type=T_String; string_val="03"; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="string rep of batch with leading zeros"; init_from=NULL; }; ProgVar @["final_tag"] { name="final_tag"; var_type=T_String; string_val=".03_0036"; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc="batch + epoch"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; IfReturn @[0] { desc="do not save if not the first dmem process (only relevant for dmem = distributed memory processing)"; flags=CAN_REVERT_TO_CODE; code_string="if(taMisc::dmem_proc > 0) return"; pre_compile_code_string="if(taMisc::dmem_proc > 0) return"; cond { expr="taMisc::dmem_proc > 0"; }; }; MiscCall @[1] { desc="get current batch counter for file name, with leading zeros to length 3"; flags=CAN_REVERT_TO_CODE; code_string="batch_str = taMisc::LeadingZeros(network.batch, 2)"; pre_compile_code_string="batch_str = taMisc::LeadingZeros(network.batch, 2)"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].vars["batch_str"]$$; 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=1; def_val=; prev_expr=; expr { expr="network.batch"; }; }; ProgArg @[1] { arg_type=int; type="int"; name="len"; required=1; def_val=; prev_expr=; expr { expr="2"; }; }; }; }; MiscCall @[2] { desc="get current epoch counter with leading zeros to length 4"; flags=CAN_REVERT_TO_CODE; code_string="epoch_str = taMisc::LeadingZeros(network.epoch, 4)"; pre_compile_code_string="epoch_str = taMisc::LeadingZeros(network.epoch, 4)"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].vars["epoch_str"]$$; 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=1; def_val=; prev_expr=; expr { expr="network.epoch"; }; }; ProgArg @[1] { arg_type=int; type="int"; name="len"; required=1; def_val=; prev_expr=; expr { expr="4"; }; }; }; }; AssignExpr @[3] { desc="string 'tag' to identify the batch, epoch, and other user id info for the weights"; flags=CAN_REVERT_TO_CODE; code_string="final_tag = tag + \".\" + batch_str + \"_\" + epoch_str"; pre_compile_code_string="final_tag = tag + \".\" + batch_str + \"_\" + epoch_str"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].vars["final_tag"]$$; expr { expr="tag + \".\" + batch_str + \"_\" + epoch_str"; }; }; MethodCall @[4] { desc="get a file name based on the project's current file name, for saving the weights"; flags=CAN_REVERT_TO_CODE; code_string="fname = network->GetFileNameFmProject(\".wts.gz\", final_tag, wts_subdir, false)"; pre_compile_code_string="fname = network->GetFileNameFmProject(\".wts.gz\", final_tag, wts_subdir, false)"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].vars["fname"]$$; obj=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].args["network"]$$; method=taBase::GetFileNameFmProject; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=const_taString_ref; type="taString&"; name="ext"; required=1; def_val=; prev_expr=; expr { expr="\".wts.gz\""; }; }; ProgArg @[1] { arg_type=const_taString_ref; type="taString&"; name="tag"; required=0; def_val="\"\""; prev_expr=; expr { expr="final_tag"; }; }; ProgArg @[2] { arg_type=const_taString_ref; type="taString&"; name="subdir"; required=0; def_val="\"\""; prev_expr=; expr { expr="wts_subdir"; }; }; ProgArg @[3] { arg_type=bool; type="bool"; name="dmem_proc_no"; required=0; def_val="false"; prev_expr=; expr { expr="false"; }; }; }; meth_sig="taString GetFileNameFmProject(taString& ext, taString& tag, taString& subdir, bool dmem_proc_no = false)"; meth_desc=" get file name from project file name -- useful for saving files associated with the project; ext = extension; tag = additional tag; subdir = additional directory after any existing in project name; fname = proj->base_name (subdir) + tag + ext; if dmem_proc_no, add dmem proc no to file name. empty if project not found"; }; MethodCall @[5] { desc="save the weights to that file name"; flags=CAN_REVERT_TO_CODE; code_string="network->SaveWeights(fname, Network::NET_FMT)"; pre_compile_code_string="network->SaveWeights(fname, Network::NET_FMT)"; result_var=NULL; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["SaveWeights"].args["network"]$; method=Network::SaveWeights; meth_args { name=; el_typ=ProgArg; el_def=0; ProgArg @[0] { arg_type=const_taString_ref; type="taString&"; name="fname"; required=0; def_val="\"\""; prev_expr=; expr { expr="fname"; }; }; ProgArg @[1] { arg_type=Network::WtSaveFormat; type="Network::WtSaveFormat"; name="fmt"; required=0; def_val="Network::NET_FMT"; prev_expr=; expr { expr="Network::NET_FMT"; }; }; }; meth_sig="void SaveWeights(taString& fname, Network::WtSaveFormat fmt = NET_FMT)"; meth_desc=" write weight values out in a simple ordered list of weights (optionally in binary fmt) (leave fname empty to pull up file chooser)"; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; Program @["DA_Rew_Punish"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserData_DocLink; el_def=0; UserData_DocLink @["DocLink"] { name="DocLink"; doc=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].doc$$; }; }; name="DA_Rew_Punish"; short_nm="Punish"; tags=; desc=; version { major=0; minor=0; step=0; }; author=; email=; flags=0; stop_step_cond { expr=; }; objs { name="objs"; el_typ=taNBase; el_def=0; }; types { name="types"; el_typ=DynEnumType; el_def=0; }; args { name="args"; el_typ=ProgVar; el_def=0; ProgVar @["network"] { name="network"; var_type=T_Object; object_type=LeabraNetwork; object_val=$.projects["BG_9060_4010"].networks["BG_4s"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL|PGRM_ARG; reference=0; desc="network to train"; init_from=NULL; }; ProgVar @["input_data"] { name="input_data"; var_type=T_Object; object_type=DataTable; object_val=$.projects["BG_9060_4010"].data.gp["InputData"]["StdInputData"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL|PGRM_ARG; reference=0; desc="datatable with training patterns"; init_from=NULL; }; }; vars { name="vars"; el_typ=ProgVar; el_def=0; ProgVar @["num_intact_snc_units"] { name="num_intact_snc_units"; var_type=T_Int; int_val=4; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["snc_size"] { name="snc_size"; var_type=T_Int; int_val=4; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["k"] { name="k"; var_type=T_Real; real_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["sse"] { name="sse"; var_type=T_Real; real_val=1.181263446807861; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["bias"] { name="bias"; var_type=T_Real; real_val=3; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["act0"] { name="act0"; var_type=T_Real; real_val=0.9166443943977356; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["act1"] { name="act1"; var_type=T_Real; real_val=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM0"] { name="actM0"; var_type=T_Real; real_val=0.003055006731301546; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM1"] { name="actM1"; var_type=T_Real; real_val=0.002848987467586994; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM2"] { name="actM2"; var_type=T_Real; real_val=0.1756469905376434; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM3"] { name="actM3"; var_type=T_Real; real_val=0.8834464550018311; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM4"] { name="actM4"; var_type=T_Real; real_val=0.002954626921564341; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM5"] { name="actM5"; var_type=T_Real; real_val=0.001786762615665793; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM6"] { name="actM6"; var_type=T_Real; real_val=0.1636159121990204; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["actM7"] { name="actM7"; var_type=T_Real; real_val=0.874722957611084; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["SNc"] { name="SNc"; var_type=T_Object; object_type=LeabraLayer; object_val=$.projects["BG_9060_4010"].networks["BG_4s"].layers["SNc"]$; objs_ptr=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["Output"] { name="Output"; var_type=T_Object; object_type=LeabraLayer; object_val=$.projects["BG_9060_4010"].networks["BG_4s"].layers["Output"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["Motor_Cortex"] { name="Motor_Cortex"; var_type=T_Object; object_type=LeabraLayer; object_val=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; objs_ptr=0; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["i"] { name="i"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["TS"] { name="TS"; var_type=T_Int; int_val=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["action"] { name="action"; var_type=T_Int; int_val=4; flags=NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["tonic_DA"] { name="tonic_DA"; var_type=T_Real; real_val=0.025; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["op_sse"] { name="op_sse"; var_type=T_Int; int_val=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["DA_dip_val"] { name="DA_dip_val"; var_type=T_Real; real_val=0; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["DA_burst_val"] { name="DA_burst_val"; var_type=T_Real; real_val=1; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|USED|EDIT_VAL; reference=0; desc=; init_from=NULL; }; ProgVar @["biasValue"] { name="biasValue"; var_type=T_Real; real_val=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="maximum number of epochs to run"; init_from=NULL; }; ProgVar @["biasInHid"] { name="biasInHid"; var_type=T_Real; real_val=0; flags=NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="maximum number of epochs to run"; init_from=NULL; }; ProgVar @["cycle"] { name="cycle"; var_type=T_Int; int_val=50; flags=CTRL_PANEL|NULL_CHECK|SAVE_VAL|EDIT_VAL; reference=0; desc="current cycle of settling (local loop counter)"; init_from=NULL; }; }; functions { name="functions"; el_typ=Function; el_def=0; }; init_code { name="init_code"; el_typ=ProgCode; el_def=0; }; prog_code { name="prog_code"; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="SNc = network.layers.SNc"; pre_compile_code_string="SNc = network.layers.SNc"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$$; expr { expr="network.layers.SNc"; }; }; AssignExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex = network.layers.PMC"; pre_compile_code_string="Motor_Cortex = network.layers.PMC"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$$; expr { expr="network.layers.PMC"; }; }; AssignExpr @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Output = network.layers.Output"; pre_compile_code_string="Output = network.layers.Output"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Output"]$$; expr { expr="network.layers.Output"; }; }; AssignExpr @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="snc_size = SNc.units.size"; pre_compile_code_string="snc_size = SNc.units.size"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["snc_size"]$$; expr { expr="SNc.units.size"; }; }; AssignExpr @[4] { desc=; flags=CAN_REVERT_TO_CODE; code_string="k = (float)num_intact_snc_units/ snc_size"; pre_compile_code_string="k = (float)num_intact_snc_units/ snc_size"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["k"]$$; expr { expr="(float)num_intact_snc_units/ snc_size"; }; }; AssignExpr @[5] { desc=; flags=CAN_REVERT_TO_CODE; code_string="sse = network.sse"; pre_compile_code_string="sse = network.sse"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["sse"]$$; expr { expr="network.sse"; }; }; If @[6] { desc="apply phasic DA in plus phase"; flags=CAN_REVERT_TO_CODE; code_string="if (network.phase==LeabraNetwork::PLUS_PHASE)"; pre_compile_code_string="if (network.phase==LeabraNetwork::PLUS_PHASE)"; cond { expr="network.phase==LeabraNetwork::PLUS_PHASE"; }; true_code { name=; el_typ=ProgCode; el_def=0; AssignExpr @[0] { desc="store minus phase activation of motor ctx unit 0"; flags=CAN_REVERT_TO_CODE; code_string="actM0 = Motor_Cortex.units[0].act_m"; pre_compile_code_string="actM0 = Motor_Cortex.units[0].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM0"]$$; expr { expr="Motor_Cortex.units[0].act_m"; }; }; AssignExpr @[1] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM1 = Motor_Cortex.units[1].act_m"; pre_compile_code_string="actM1 = Motor_Cortex.units[1].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM1"]$$; expr { expr="Motor_Cortex.units[1].act_m"; }; }; AssignExpr @[2] { desc="store minus phase activation of motor ctx unit 0"; flags=CAN_REVERT_TO_CODE; code_string="actM2 = Motor_Cortex.units[2].act_m"; pre_compile_code_string="actM2 = Motor_Cortex.units[2].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM2"]$$; expr { expr="Motor_Cortex.units[2].act_m"; }; }; AssignExpr @[3] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM3 = Motor_Cortex.units[3].act_m"; pre_compile_code_string="actM3 = Motor_Cortex.units[3].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM3"]$$; expr { expr="Motor_Cortex.units[3].act_m"; }; }; AssignExpr @[4] { desc="store minus phase activation of motor ctx unit 0"; flags=CAN_REVERT_TO_CODE; code_string="actM4 = Motor_Cortex.units[4].act_m"; pre_compile_code_string="actM4 = Motor_Cortex.units[4].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM4"]$$; expr { expr="Motor_Cortex.units[4].act_m"; }; }; AssignExpr @[5] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM5 = Motor_Cortex.units[5].act_m"; pre_compile_code_string="actM5 = Motor_Cortex.units[5].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM5"]$$; expr { expr="Motor_Cortex.units[5].act_m"; }; }; AssignExpr @[6] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM6 = Motor_Cortex.units[6].act_m"; pre_compile_code_string="actM6 = Motor_Cortex.units[6].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM6"]$$; expr { expr="Motor_Cortex.units[6].act_m"; }; }; AssignExpr @[7] { desc="store minus phase act of motor unit 1"; flags=CAN_REVERT_TO_CODE; code_string="actM7 = Motor_Cortex.units[7].act_m"; pre_compile_code_string="actM7 = Motor_Cortex.units[7].act_m"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["actM7"]$$; expr { expr="Motor_Cortex.units[7].act_m"; }; }; MemberAssign @[8] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[0].ext = actM0"; pre_compile_code_string="Motor_Cortex.units[0].ext = actM0"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[0].ext"; expr { expr="actM0"; }; update_after=0; }; MemberAssign @[9] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[1].ext = actM1"; pre_compile_code_string="Motor_Cortex.units[1].ext = actM1"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[1].ext"; expr { expr="actM1"; }; update_after=0; }; MemberAssign @[10] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[2].ext = actM2"; pre_compile_code_string="Motor_Cortex.units[2].ext = actM2"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[2].ext"; expr { expr="actM2"; }; update_after=0; }; MemberAssign @[11] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[3].ext = actM3"; pre_compile_code_string="Motor_Cortex.units[3].ext = actM3"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[3].ext"; expr { expr="actM3"; }; update_after=0; }; MemberAssign @[12] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[4].ext = actM4"; pre_compile_code_string="Motor_Cortex.units[4].ext = actM4"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[4].ext"; expr { expr="actM4"; }; update_after=0; }; MemberAssign @[13] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[5].ext = actM5"; pre_compile_code_string="Motor_Cortex.units[5].ext = actM5"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[5].ext"; expr { expr="actM5"; }; update_after=0; }; MemberAssign @[14] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[6].ext = actM6"; pre_compile_code_string="Motor_Cortex.units[6].ext = actM6"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[6].ext"; expr { expr="actM6"; }; update_after=0; }; MemberAssign @[15] { desc="set plus phase acts to reflect minus phase response"; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex.units[7].ext = actM7"; pre_compile_code_string="Motor_Cortex.units[7].ext = actM7"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["Motor_Cortex"]$; path="units[7].ext"; expr { expr="actM7"; }; update_after=0; }; ForLoop @[16] { desc=; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < 8; i++)"; pre_compile_code_string="for (i = 0; i < 8; i++)"; loop_code { name="ProgEl_List_189"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[i].bias.SetCnValName(0,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[i].bias.SetCnValName(0,0,\"wt\");"; expr { expr="Motor_Cortex->units[i].bias.SetCnValName(0,0,\"wt\");"; }; }; }; init { expr="i = 0"; }; test { expr="i < 8"; }; iter { expr="i++"; }; }; AssignExpr @[17] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 0"; pre_compile_code_string="action = 0"; result_var=.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["action"]$$; expr { expr="0"; }; }; If @[18] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Output.acts.max >0.05)"; pre_compile_code_string="if (Output.acts.max >0.05)"; cond { expr="Output.acts.max >0.05"; }; true_code { name=; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (( actM0+actM4 > actM1+actM5) & ( actM0+actM4 > actM2+actM6) & ( actM0+actM4 > actM3+actM7))"; pre_compile_code_string="if (( actM0+actM4 > actM1+actM5) & ( actM0+actM4 > actM2+actM6) & ( actM0+actM4 > actM3+actM7))"; cond { expr="( actM0+actM4 > actM1+actM5) & ( actM0+actM4 > actM2+actM6) & ( actM0+actM4 > actM3+actM7)"; }; true_code { name=; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[0].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[0].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[0].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[4].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[4].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[4].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 1"; pre_compile_code_string="action = 1"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["action"]$; expr { expr="1"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (( actM1+actM5 > actM0+actM4) & ( actM1+actM5 > actM2+actM6) & ( actM1+actM5 > actM3+actM7))"; pre_compile_code_string="if (( actM1+actM5 > actM0+actM4) & ( actM1+actM5 > actM2+actM6) & ( actM1+actM5 > actM3+actM7))"; cond { expr="( actM1+actM5 > actM0+actM4) & ( actM1+actM5 > actM2+actM6) & ( actM1+actM5 > actM3+actM7)"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[1].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[1].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[1].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[5].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[5].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[5].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 2"; pre_compile_code_string="action = 2"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["action"]$; expr { expr="2"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (( actM2+actM6 > actM0+actM4) & ( actM2+actM6 > actM1+actM5) & ( actM2+actM6 > actM3+actM7))"; pre_compile_code_string="if (( actM2+actM6 > actM0+actM4) & ( actM2+actM6 > actM1+actM5) & ( actM2+actM6 > actM3+actM7))"; cond { expr="( actM2+actM6 > actM0+actM4) & ( actM2+actM6 > actM1+actM5) & ( actM2+actM6 > actM3+actM7)"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[2].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[2].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[2].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[6].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[6].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[6].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 3"; pre_compile_code_string="action = 3"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["action"]$; expr { expr="3"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[3].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[3].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[3].bias.SetCnValName(10,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[7].bias.SetCnValName(10,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[7].bias.SetCnValName(10,0,\"wt\");"; expr { expr="Motor_Cortex->units[7].bias.SetCnValName(10,0,\"wt\");"; }; }; AssignExpr @[2] { desc="TS"; flags=CAN_REVERT_TO_CODE; code_string="action = 4"; pre_compile_code_string="action = 4"; result_var=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["action"]$; expr { expr="4"; }; }; }; }; }; }; }; }; }; }; If @[19] { desc="if error is below threshold, given DA burst"; flags=CAN_REVERT_TO_CODE; code_string="if (network.trial_name.contains(\"9060\"))"; pre_compile_code_string="if (network.trial_name.contains(\"9060\"))"; cond { expr="network.trial_name.contains(\"9060\")"; }; true_code { name=; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (action==1)"; pre_compile_code_string="if (action==1)"; cond { expr="action==1"; }; true_code { name="ProgEl_List_170"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Random::IntZeroN(10)>0)"; pre_compile_code_string="if (Random::IntZeroN(10)>0)"; cond { expr="Random::IntZeroN(10)>0"; }; true_code { name="ProgEl_List_168"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set external input on SNC to high value for DA burst"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_burst_val"; pre_compile_code_string="SNc.units[i].ext = DA_burst_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_burst_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_dip_val"; pre_compile_code_string="SNc.units[i].ext = DA_dip_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_dip_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc="R2 = 80% neg, R3/R4 neutral"; flags=CAN_REVERT_TO_CODE; code_string="if (action==2)"; pre_compile_code_string="if (action==2)"; cond { expr="action==2"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Random::IntZeroN(10)>3)"; pre_compile_code_string="if (Random::IntZeroN(10)>3)"; cond { expr="Random::IntZeroN(10)>3"; }; true_code { name=; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set external input on SNC to high value for DA burst"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_burst_val"; pre_compile_code_string="SNc.units[i].ext = DA_burst_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_burst_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < snc_size; i++)"; pre_compile_code_string="for (i = 0; i < snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_dip_val"; pre_compile_code_string="SNc.units[i].ext = DA_dip_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_dip_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < snc_size"; }; iter { expr="i++"; }; }; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = tonic_DA"; pre_compile_code_string="SNc.units[i].ext = tonic_DA"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="tonic_DA"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; }; }; }; }; Else @[20] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc="R3 60 R4 40 R1/R2 neutral"; flags=CAN_REVERT_TO_CODE; code_string="if (network.trial_name.contains(\"4010\"))"; pre_compile_code_string="if (network.trial_name.contains(\"4010\"))"; cond { expr="network.trial_name.contains(\"4010\")"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (action==3)"; pre_compile_code_string="if (action==3)"; cond { expr="action==3"; }; true_code { name=; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Random::IntZeroN(10)>5)"; pre_compile_code_string="if (Random::IntZeroN(10)>5)"; cond { expr="Random::IntZeroN(10)>5"; }; true_code { name=; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set external input on SNC to high value for DA burst"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_burst_val"; pre_compile_code_string="SNc.units[i].ext = DA_burst_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_burst_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_dip_val"; pre_compile_code_string="SNc.units[i].ext = DA_dip_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_dip_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; If @[0] { desc="R2 = 80% neg, R3/R4 neutral"; flags=CAN_REVERT_TO_CODE; code_string="if (action==4)"; pre_compile_code_string="if (action==4)"; cond { expr="action==4"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; If @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Random::IntZeroN(10)>8)"; pre_compile_code_string="if (Random::IntZeroN(10)>8)"; cond { expr="Random::IntZeroN(10)>8"; }; true_code { name=; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name=; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set external input on SNC to high value for DA burst"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_burst_val"; pre_compile_code_string="SNc.units[i].ext = DA_burst_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_burst_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < snc_size; i++)"; pre_compile_code_string="for (i = 0; i < snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = DA_dip_val"; pre_compile_code_string="SNc.units[i].ext = DA_dip_val"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="DA_dip_val"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < snc_size"; }; iter { expr="i++"; }; }; }; }; }; }; Else @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = tonic_DA"; pre_compile_code_string="SNc.units[i].ext = tonic_DA"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="tonic_DA"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; }; }; }; }; }; }; }; }; Else @[7] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; ForLoop @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < 8; i++)"; pre_compile_code_string="for (i = 0; i < 8; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[i].bias.SetCnValName(0,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[i].bias.SetCnValName(0,0,\"wt\");"; expr { expr="Motor_Cortex->units[i].bias.SetCnValName(0,0,\"wt\");"; }; }; }; init { expr="i = 0"; }; test { expr="i < 8"; }; iter { expr="i++"; }; }; If @[1] { desc="if error is below threshold, given DA burst"; flags=CAN_REVERT_TO_CODE; code_string="if (network.trial_name.contains(\"9060\"))"; pre_compile_code_string="if (network.trial_name.contains(\"9060\"))"; cond { expr="network.trial_name.contains(\"9060\")"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[0].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[0].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[0].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[4].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[4].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[4].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[1].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[1].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[1].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[5].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[5].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[5].bias.SetCnValName(bias,0,\"wt\");"; }; }; }; }; If @[2] { desc="if error is below threshold, given DA burst"; flags=CAN_REVERT_TO_CODE; code_string="if (network.trial_name.contains(\"4010\"))"; pre_compile_code_string="if (network.trial_name.contains(\"4010\"))"; cond { expr="network.trial_name.contains(\"4010\")"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; }; }; }; }; If @[3] { desc="if error is below threshold, given DA burst"; flags=CAN_REVERT_TO_CODE; code_string="if (network.trial_name.contains(\"comboA\"))"; pre_compile_code_string="if (network.trial_name.contains(\"comboA\"))"; cond { expr="network.trial_name.contains(\"comboA\")"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[0].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[0].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[0].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[4].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[4].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[4].bias.SetCnValName(bias,0,\"wt\");"; }; }; If @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Random::IntZeroN(2)==0)"; pre_compile_code_string="if (Random::IntZeroN(2)==0)"; cond { expr="Random::IntZeroN(2)==0"; }; true_code { name=; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; }; }; }; }; Else @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; }; }; }; }; }; }; If @[4] { desc="if error is below threshold, given DA burst"; flags=CAN_REVERT_TO_CODE; code_string="if (network.trial_name.contains(\"comboB\"))"; pre_compile_code_string="if (network.trial_name.contains(\"comboB\"))"; cond { expr="network.trial_name.contains(\"comboB\")"; }; true_code { name="true_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[1].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[1].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[1].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[5].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[5].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[5].bias.SetCnValName(bias,0,\"wt\");"; }; }; If @[2] { desc=; flags=CAN_REVERT_TO_CODE; code_string="if (Random::IntZeroN(2)==0)"; pre_compile_code_string="if (Random::IntZeroN(2)==0)"; cond { expr="Random::IntZeroN(2)==0"; }; true_code { name="ProgEl_List_200"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[2].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[6].bias.SetCnValName(bias,0,\"wt\");"; }; }; }; }; Else @[3] { desc=; flags=CAN_REVERT_TO_CODE; code_string="else"; pre_compile_code_string="else"; else_code { name="else_code"; el_typ=ProgCode; el_def=0; CssExpr @[0] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[3].bias.SetCnValName(bias,0,\"wt\");"; }; }; CssExpr @[1] { desc=; flags=CAN_REVERT_TO_CODE; code_string="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; pre_compile_code_string="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; expr { expr="Motor_Cortex->units[7].bias.SetCnValName(bias,0,\"wt\");"; }; }; }; }; }; }; ForLoop @[5] { desc="loop over snc units"; flags=CAN_REVERT_TO_CODE; code_string="for (i = 0; i < k*snc_size; i++)"; pre_compile_code_string="for (i = 0; i < k*snc_size; i++)"; loop_code { name="loop_code"; el_typ=ProgCode; el_def=0; MemberAssign @[0] { desc="set tonic DA val"; flags=CAN_REVERT_TO_CODE; code_string="SNc.units[i].ext = tonic_DA"; pre_compile_code_string="SNc.units[i].ext = tonic_DA"; obj=$.projects["BG_9060_4010"].programs.gp["LeabraAll_Std"]["DA_Rew_Punish"].vars["SNc"]$; path="units[i].ext"; expr { expr="tonic_DA"; }; update_after=0; }; }; init { expr="i = 0"; }; test { expr="i < k*snc_size"; }; iter { expr="i++"; }; }; }; }; }; step_prog=NULL; step_n=1; doc { name="doc"; desc=; web_doc=0; wiki=; url="local"; full_url="local"; text_size=1; text=; html_text=; }; }; }; }; viewers { name="viewers"; el_typ=MainWindowViewer; el_def=0; MainWindowViewer @["Browser"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["view_win_lft"] { name="view_win_lft"; value 8 0=-0.05902778; val_type_fixed=0; }; UserDataItem @["view_win_top"] { name="view_win_top"; value 8 0=0.06506024; val_type_fixed=0; }; UserDataItem @["view_win_wd"] { name="view_win_wd"; value 8 0=1; val_type_fixed=0; }; UserDataItem @["view_win_ht"] { name="view_win_ht"; value 8 0=0.7939759; val_type_fixed=0; }; UserDataItem @["view_win_iconified"] { name="view_win_iconified"; value 1 0=0; val_type_fixed=0; }; UserDataItem @["view_splitter_state"] { name="view_splitter_state"; value 9 0="AAAA/wAAAAEAAAADAAACIwAAAdgAAAFGAQAAAAYBAAAAAQE="; val_type_fixed=0; }; }; name="Browser"; m_data=.projects["BG_9060_4010"]$$; cur_font_size=12; visible=1; win_name=".projects[\"BG_9060_4010\"] - BG_9060_4010.proj"; m_is_root=0; m_is_viewer_xor_browser=0; m_is_proj_viewer=1; m_is_dialog=0; toolbars { name="toolbars"; el_typ=ToolBar; el_def=0; ToolBar @["Application"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["view_win_visible"] { name="view_win_visible"; value 1 0=1; val_type_fixed=0; }; }; name="Application"; m_data=NULL; cur_font_size=12; visible=0; lft=0; top=0; o=Horizontal; }; }; frames { name="frames"; el_typ=BrowseViewerTaBase; el_def=0; BrowseViewerTaBase @["Navigator"] { name="Navigator"; m_data=NULL; cur_font_size=12; visible=1; root_typ=LeabraProject; root_md=NULL; m_root=$.projects["BG_9060_4010"]$; }; PanelViewer @["Editor"] { name="Editor"; m_data=NULL; cur_font_size=12; visible=1; }; T3PanelViewer @["T3Frames"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_78"; el_typ=UserDataItem; el_def=0; UserDataItem @["view_panel_selected"] { name="view_panel_selected"; value 1 0=1; val_type_fixed=0; }; }; name="T3Frames"; m_data=NULL; cur_font_size=12; visible=1; panels { name="panels"; el_typ=T3Panel; el_def=0; T3Panel @["BGLoop1"] { name="BGLoop1"; m_data=NULL; cur_font_size=12; visible=1; root_view { name="root_view"; m_data=NULL; cur_font_size=12; m_transform=NULL; children { name="children"; el_typ=NetView; el_def=0; NetView @["BG_4s_View"] { name="BG_4s_View"; m_data=$.projects["BG_9060_4010"].networks["BG_4s"]$; cur_font_size=12; taTransform @*(.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: }: }; annotations { name="annotations"; el_typ=T3Annotation; el_def=0; }; annote_children { name="annote_children"; el_typ=T3DataView; el_def=0; }; display=0; lay_layout=THREE_D; lay_mv=1; net_text=1; show_iconified=0; net_text_xform {scale={x=0: y=0: z=0: }: rotate={x=1: y=0: z=0: rot=0: }: translate={x=0: y=-0.5: z=0: }: }; net_text_rot=0; cur_unit_vals{ act; }; unit_src_path=".layers.gp[0][1].units[8]"; con_type=ANY_CON; hist_idx=0; hist_save=1; hist_max=100; hist_ff=5; unit_disp_mode=UDM_CYLINDER; unit_text_disp=UTD_NONE; max_size {x=40: y=9: z=2.333333: }; max_size2d {x=10: y=36: z=1: }; eff_max_size {x=40: y=9: z=2.333333: }; font_sizes { net_name=0.05; net_vals=0.05; layer=0.04; layer_min=0.01; 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_B; prjn_name=0; prjn_width=0.002; prjn_trans=0.5; lay_trans=0.4; unit_trans=0.4; laygp_width=1; show_laygp=1; }; wt_line_disp=0; wt_line_width=4; wt_line_thr=0.8; wt_line_swt=0; wt_prjn_k_un=4; wt_prjn_k_gp=1; wt_prjn_lay=NULL; snap_bord_disp=0; snap_bord_width=4; scale { name="scale"; chunks=133; min=-1; max=1; last_min=0; last_max=0; range=1; zero=0; spec=.colorspecs["C_ColdHot"]$$; auto_scale=0; }; scale_ranges { name="scale_ranges"; el_typ=ScaleRange; el_def=0; ScaleRange @[0] { var_name="act"; auto_scale=0; min=-1; max=1; }; ScaleRange @[1] { var_name="r.wt"; auto_scale=0; min=-1; max=1; }; ScaleRange @[2] { var_name="s.wt"; auto_scale=0; min=-1; max=1; }; ScaleRange @[3] { var_name="r.pdw"; auto_scale=1; min=-0.02148556; max=0.02148556; }; ScaleRange @[4] { var_name="act_p"; auto_scale=0; min=-1; max=1; }; ScaleRange @[5] { var_name="act_dif"; auto_scale=0; min=-1; max=1; }; ScaleRange @[6] { var_name="act_m"; auto_scale=0; min=-1; max=1; }; ScaleRange @[7] { var_name="bias.wt"; auto_scale=0; min=-1; max=1; }; ScaleRange @[8] { var_name="targ"; auto_scale=0; min=-1; max=1; }; ScaleRange @[9] { var_name="ext"; auto_scale=0; min=-1; max=1; }; ScaleRange @[10] { var_name="net"; auto_scale=0; min=-1; max=1; }; ScaleRange @[11] { var_name="thal"; auto_scale=0; min=-1; max=1; }; }; lay_disp_modes{ Input=-1;GP_Int=-1;GP_Ext=-1;Thalamus=-1;PMC=-1;Output=-1;SNc=-1;ctxt=-1;Go=-1;NoGo=-1;Striatum_Inhib=-1; }; }; }; }; bg_color {r=1: g=1: b=1: a=1: }; text_color {r=0: g=0: b=0: a=1: }; headlight_on=1; headlight_intensity=1; ambient_light=0; camera_params { field_of_view=45; near_distance=0.1; focal=5; far_distance=1000; }; stereo_view=STEREO_NONE; saved_views { name="saved_views"; el_typ=T3SavedView; el_def=0; T3SavedView @["Vw_0"] { name="Vw_0"; view_saved=1; pos {x=0.50625: y=0.6861241: z=1.52285: }; orient {x=-0.9999916: y=0: z=0: rot=0.08800074: }; focal_dist=1.734215; }; T3SavedView @["Vw_1"] { name="Vw_1"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_2"] { name="Vw_2"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_3"] { name="Vw_3"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_4"] { name="Vw_4"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_5"] { name="Vw_5"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_6"] { name="Vw_6"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_7"] { name="Vw_7"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_8"] { name="Vw_8"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_9"] { name="Vw_9"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; }; }; T3Panel @["Stats"] { name="Stats"; m_data=NULL; cur_font_size=12; visible=1; root_view { name="root_view"; m_data=NULL; cur_font_size=12; m_transform=NULL; children { name="children"; el_typ=GraphTableView; el_def=0; GraphTableView @["Stats_Graph"] { name="Stats_Graph"; m_data=$.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"]$; cur_font_size=12; taTransform @*(.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="children"; el_typ=GraphColView; el_def=0; GraphColView @["trial_name_group_group"] { name="trial_name_group_group"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["trial_name_group_group"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r1_mean_mean"] { name="r1_mean_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r1_mean_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r1_mean_sem"] { name="r1_mean_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r1_mean_sem"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r2_mean_mean"] { name="r2_mean_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r2_mean_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r2_mean_sem"] { name="r2_mean_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r2_mean_sem"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r3_mean_mean"] { name="r3_mean_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r3_mean_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r3_mean_sem"] { name="r3_mean_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r3_mean_sem"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r4_mean_mean"] { name="r4_mean_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r4_mean_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r4_mean_sem"] { name="r4_mean_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["Stats"].data["r4_mean_sem"]$$; cur_font_size=12; m_transform=NULL; 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: }: }; annotations { name="annotations"; el_typ=T3Annotation; el_def=0; }; annote_children { name="annote_children"; el_typ=T3DataView; el_def=0; }; view_rows=10000; view_range {min=0: max=-1: }; page_rows=-65537; display_on=1; manip_ctrl_on=1; graph_type=BAR; plot_style=LINE; negative_draw=0; negative_draw_z=1; line_width=2; point_size=0.01; point_spacing=1; solid_lines=0; bar_space=0.2; bar_depth=0.01; label_spacing=-1; width=1; depth=1; axis_font_size=0.05; label_font_size=0.04; x_axis { name="x_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=X; col_name="trial_name_group_group"; is_string=1; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=1: min=1.5: fix_max=1: max=3.6: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=1; }; z_axis { name="z_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Z; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=-1: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=1; }; tot_plots=16; plots { name="plots"; el_typ=GraphPlotView; el_def=0; GraphPlotView @["Stats_Graph_plot_1"] { name="Stats_Graph_plot_1"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r1_mean_mean"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=1: max=1: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_2"] { name="Stats_Graph_plot_2"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r2_mean_mean"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; show_axis_label=1; show_alt_axis_label=1; color {name="red": r=1: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=SQUARE; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_3"] { name="Stats_Graph_plot_3"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=DIAMOND; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_4"] { name="Stats_Graph_plot_4"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="green3": r=0: g=0.8039216: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE_UP; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_5"] { name="Stats_Graph_plot_5"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=PLUS; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_6"] { name="Stats_Graph_plot_6"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="orange": r=1: g=0.6470588: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CROSS; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_7"] { name="Stats_Graph_plot_7"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="brown": r=0.6470588: g=0.1647059: b=0.1647059: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=STAR; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_8"] { name="Stats_Graph_plot_8"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="chartreuse": r=0.4980392: g=1: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE_DN; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_9"] { name="Stats_Graph_plot_9"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_10"] { name="Stats_Graph_plot_10"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="red": r=1: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=SQUARE; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_11"] { name="Stats_Graph_plot_11"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=DIAMOND; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_12"] { name="Stats_Graph_plot_12"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="green3": r=0: g=0.8039216: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=TRIANGLE_UP; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_13"] { name="Stats_Graph_plot_13"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=TRIANGLE_DN; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_14"] { name="Stats_Graph_plot_14"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="orange": r=1: g=0.6470588: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=PLUS; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_15"] { name="Stats_Graph_plot_15"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="brown": r=0.6470588: g=0.1647059: b=0.1647059: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=CROSS; alt_y=0; }; GraphPlotView @["Stats_Graph_plot_16"] { name="Stats_Graph_plot_16"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="chartreuse": r=0.4980392: g=1: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=STAR; alt_y=0; }; }; errbars { name="errbars"; el_typ=GraphPlotView; el_def=0; GraphPlotView @["Stats_Graph_err_1"] { name="Stats_Graph_err_1"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r1_mean_sem"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_2"] { name="Stats_Graph_err_2"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r2_mean_sem"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_3"] { name="Stats_Graph_err_3"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_4"] { name="Stats_Graph_err_4"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_5"] { name="Stats_Graph_err_5"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_6"] { name="Stats_Graph_err_6"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_7"] { name="Stats_Graph_err_7"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_8"] { name="Stats_Graph_err_8"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_9"] { name="Stats_Graph_err_9"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_10"] { name="Stats_Graph_err_10"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_11"] { name="Stats_Graph_err_11"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_12"] { name="Stats_Graph_err_12"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_13"] { name="Stats_Graph_err_13"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_14"] { name="Stats_Graph_err_14"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_15"] { name="Stats_Graph_err_15"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["Stats_Graph_err_16"] { name="Stats_Graph_err_16"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; }; err_spacing=1; err_bar_width=0.02; color_mode=FIXED; color_axis { name="color_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=0; }; colorscale { name="colorscale"; chunks=133; min=-1; max=1; last_min=-1; last_max=1; range=0; zero=0; spec=$.colorspecs["C_ColdHot"]$; auto_scale=0; }; raster_axis { name="raster_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=0; }; thresh=0.5; thr_line_len=0.48; matrix_mode=SEP_GRAPHS; mat_layout=BOT_ZERO; mat_odd_vert=1; two_d_font=0; two_d_font_scale=350; }; }; }; bg_color {r=1: g=1: b=1: a=1: }; text_color {r=0: g=0: b=0: a=1: }; headlight_on=1; headlight_intensity=1; ambient_light=0; camera_params { field_of_view=45; near_distance=0.1; focal=5; far_distance=1000; }; stereo_view=STEREO_NONE; saved_views { name="saved_views"; el_typ=T3SavedView; el_def=0; T3SavedView @["Vw_0"] { name="Vw_0"; view_saved=1; pos {x=1.4275: y=0.4449999: z=1.624621: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=1.637121; }; T3SavedView @["Vw_1"] { name="Vw_1"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_2"] { name="Vw_2"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_3"] { name="Vw_3"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_4"] { name="Vw_4"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_5"] { name="Vw_5"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_6"] { name="Vw_6"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_7"] { name="Vw_7"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_8"] { name="Vw_8"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_9"] { name="Vw_9"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; }; }; T3Panel @["trl_group"] { name="trl_group"; m_data=NULL; cur_font_size=12; visible=1; root_view { name="root_view"; m_data=NULL; cur_font_size=12; m_transform=NULL; children { name="children"; el_typ=T3DataViewMain; el_def=0; GraphTableView @["trl_group2_Graph"] { name="trl_group2_Graph"; m_data=$.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"]$; cur_font_size=12; taTransform @*(.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="children"; el_typ=GraphColView; el_def=0; GraphColView @["trial_name_group"] { name="trial_name_group"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["trial_name_group"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["epoch_group"] { name="epoch_group"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["epoch_group"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r1_mean"] { name="r1_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["r1_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r2_mean"] { name="r2_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["r2_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r3_mean"] { name="r3_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["r3_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r4_mean"] { name="r4_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["r4_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["minus_cycles_mean"] { name="minus_cycles_mean"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["minus_cycles_mean"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r1_sem"] { name="r1_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["r1_sem"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["r3_sem"] { name="r3_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["r3_sem"]$$; cur_font_size=12; m_transform=NULL; visible=1; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; data_range {min=0: max=0: }; }; GraphColView @["minus_cycles_sem"] { name="minus_cycles_sem"; m_data=.projects["BG_9060_4010"].data.gp["AnalysisData"]["trl_group"].data["minus_cycles_sem"]$$; cur_font_size=12; m_transform=NULL; 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: }: }; annotations { name="annotations"; el_typ=T3Annotation; el_def=0; }; annote_children { name="annote_children"; el_typ=T3DataView; el_def=0; }; view_rows=10000; view_range {min=0: max=-1: }; page_rows=-16777216; display_on=1; manip_ctrl_on=1; graph_type=XY; plot_style=LINE; negative_draw=0; negative_draw_z=1; line_width=2; point_size=0.01; point_spacing=1; solid_lines=0; bar_space=0.2; bar_depth=0.01; label_spacing=-1; width=1; depth=1; axis_font_size=0.05; label_font_size=0.04; x_axis { name="x_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=X; col_name="epoch_group"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=0; }; z_axis { name="z_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Z; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=-1: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=1; }; tot_plots=16; plots { name="plots"; el_typ=GraphPlotView; el_def=0; GraphPlotView @["trl_group2_Graph_plot_1"] { name="trl_group2_Graph_plot_1"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r1_mean"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_2"] { name="trl_group2_Graph_plot_2"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r3_mean"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=1: }; show_axis_label=1; show_alt_axis_label=1; color {name="red": r=1: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=SQUARE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_3"] { name="trl_group2_Graph_plot_3"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name="minus_cycles_mean"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=63.95: fix_max=0: max=124.75: }; show_axis_label=1; show_alt_axis_label=1; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=DIAMOND; alt_y=1; }; GraphPlotView @["trl_group2_Graph_plot_4"] { name="trl_group2_Graph_plot_4"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="green3": r=0: g=0.8039216: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE_UP; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_5"] { name="trl_group2_Graph_plot_5"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=PLUS; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_6"] { name="trl_group2_Graph_plot_6"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="orange": r=1: g=0.6470588: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CROSS; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_7"] { name="trl_group2_Graph_plot_7"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="brown": r=0.6470588: g=0.1647059: b=0.1647059: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=STAR; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_8"] { name="trl_group2_Graph_plot_8"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="chartreuse": r=0.4980392: g=1: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=TRIANGLE_DN; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_9"] { name="trl_group2_Graph_plot_9"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_10"] { name="trl_group2_Graph_plot_10"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="red": r=1: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=SQUARE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_11"] { name="trl_group2_Graph_plot_11"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="blue": r=0: g=0: b=1: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=DIAMOND; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_12"] { name="trl_group2_Graph_plot_12"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="green3": r=0: g=0.8039216: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=TRIANGLE_UP; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_13"] { name="trl_group2_Graph_plot_13"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="purple": r=0.627451: g=0.1254902: b=0.9411765: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=TRIANGLE_DN; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_14"] { name="trl_group2_Graph_plot_14"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="orange": r=1: g=0.6470588: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=PLUS; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_15"] { name="trl_group2_Graph_plot_15"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="brown": r=0.6470588: g=0.1647059: b=0.1647059: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=CROSS; alt_y=0; }; GraphPlotView @["trl_group2_Graph_plot_16"] { name="trl_group2_Graph_plot_16"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="chartreuse": r=0.4980392: g=1: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=DOT; point_style=STAR; alt_y=0; }; }; errbars { name="errbars"; el_typ=GraphPlotView; el_def=0; GraphPlotView @["trl_group2_Graph_err_1"] { name="trl_group2_Graph_err_1"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r1_sem"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_2"] { name="trl_group2_Graph_err_2"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="r3_sem"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_3"] { name="trl_group2_Graph_err_3"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=1; axis=Y; col_name="minus_cycles_sem"; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_4"] { name="trl_group2_Graph_err_4"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_5"] { name="trl_group2_Graph_err_5"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_6"] { name="trl_group2_Graph_err_6"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_7"] { name="trl_group2_Graph_err_7"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_8"] { name="trl_group2_Graph_err_8"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_9"] { name="trl_group2_Graph_err_9"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_10"] { name="trl_group2_Graph_err_10"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_11"] { name="trl_group2_Graph_err_11"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_12"] { name="trl_group2_Graph_err_12"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_13"] { name="trl_group2_Graph_err_13"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_14"] { name="trl_group2_Graph_err_14"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_15"] { name="trl_group2_Graph_err_15"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; GraphPlotView @["trl_group2_Graph_err_16"] { name="trl_group2_Graph_err_16"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; line_style=SOLID; point_style=CIRCLE; alt_y=0; }; }; err_spacing=1; err_bar_width=0.02; color_mode=FIXED; color_axis { name="color_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=0; }; colorscale { name="colorscale"; chunks=133; min=-1; max=1; last_min=-1; last_max=1; range=0; zero=0; spec=$.colorspecs["C_ColdHot"]$; auto_scale=0; }; raster_axis { name="raster_axis"; m_data=NULL; cur_font_size=12; m_transform=NULL; on=0; axis=Y; col_name=; is_string=0; is_matrix=0; n_cells=1; matrix_cell=0; fixed_range {fix_min=0: min=0: fix_max=0: max=0: }; show_axis_label=1; show_alt_axis_label=1; color {name="black": r=0: g=0: b=0: a=1: desc="": }; n_ticks=10; axis_length=1; row_num=0; }; thresh=0.5; thr_line_len=0.48; matrix_mode=SEP_GRAPHS; mat_layout=BOT_ZERO; mat_odd_vert=1; two_d_font=0; two_d_font_scale=350; }; }; }; bg_color {r=1: g=1: b=1: a=1: }; text_color {r=0: g=0: b=0: a=1: }; headlight_on=1; headlight_intensity=1; ambient_light=0; camera_params { field_of_view=45; near_distance=0.1; focal=5; far_distance=1000; }; stereo_view=STEREO_NONE; saved_views { name="saved_views"; el_typ=T3SavedView; el_def=0; T3SavedView @["Vw_0"] { name="Vw_0"; view_saved=1; pos {x=1.4275: y=0.445: z=1.567173: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=1.579673; }; T3SavedView @["Vw_1"] { name="Vw_1"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_2"] { name="Vw_2"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_3"] { name="Vw_3"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_4"] { name="Vw_4"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_5"] { name="Vw_5"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_6"] { name="Vw_6"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_7"] { name="Vw_7"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_8"] { name="Vw_8"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; T3SavedView @["Vw_9"] { name="Vw_9"; view_saved=0; pos {x=0: y=0: z=0: }; orient {x=0: y=0: z=1: rot=0: }; focal_dist=0; }; }; }; }; }; }; docks { name="docks"; el_typ=ToolBoxDockViewer; el_def=0; ToolBoxDockViewer @["Tools"] { UserDataItem_List @*(.user_data_) { name=; el_typ=UserDataItem; el_def=0; UserDataItem @["view_win_lft"] { name="view_win_lft"; value 8 0=0; val_type_fixed=0; }; UserDataItem @["view_win_top"] { name="view_win_top"; value 8 0=0.03253012; val_type_fixed=0; }; UserDataItem @["view_win_wd"] { name="view_win_wd"; value 8 0=0.05694444; val_type_fixed=0; }; UserDataItem @["view_win_ht"] { name="view_win_ht"; value 8 0=0.6831325; val_type_fixed=0; }; UserDataItem @["view_win_iconified"] { name="view_win_iconified"; value 1 0=0; val_type_fixed=0; }; UserDataItem @["view_visible"] { name="view_visible"; value 1 0=1; val_type_fixed=0; }; }; name="Tools"; m_data=NULL; cur_font_size=12; visible=1; win_name=; dock_flags=DV_MOVABLE|DV_FLOATABLE; dock_area=1; }; }; }; }; save_view=1; save_as_only=0; auto_name=1; last_change_desc=" "; tree_state{ .;.docs;.wizards;.ctrl_panels;.ctrl_panels[0];.data;.data.gp[0];.data.gp[1];.data.gp[2];.programs;.programs.gp[0];.programs.gp[0][0];.programs.gp[0][0].vars;.programs.gp[0][1];.programs.gp[0][1].types;.programs.gp[0][1].args;.programs.gp[0][1].vars;.programs.gp[0][1].prog_code;.programs.gp[0][1].prog_code[0];.programs.gp[0][1].prog_code[15];.programs.gp[0][1].prog_code[18];.programs.gp[0][12];.programs.gp[0][12].objs;.programs.gp[0][12].vars;.programs.gp[0][12].functions;.programs.gp[0][12].prog_code;.programs.gp[0][12].prog_code[0];.programs.gp[0][12].prog_code[6];.programs.gp[0][12].prog_code[6].true_code[19];.programs.gp[0][12].prog_code[6].true_code[19].true_code[0];.programs.gp[0][12].prog_code[6].true_code[19].true_code[0].true_code[0];.programs.gp[0][12].prog_code[6].true_code[19].true_code[0].true_code[1];.programs.gp[0][12].prog_code[6].true_code[19].true_code[1];.programs.gp[0][12].prog_code[6].true_code[19].true_code[1].else_code[0];.programs.gp[0][12].prog_code[6].true_code[19].true_code[1].else_code[1];.programs.gp[0][12].prog_code[6].true_code[20];.programs.gp[0][12].prog_code[6].true_code[20].else_code[0];.programs.gp[0][12].prog_code[6].true_code[20].else_code[0].true_code[0];.programs.gp[0][12].prog_code[6].true_code[20].else_code[0].true_code[1];.programs.gp[0][12].prog_code[6].true_code[20].else_code[0].true_code[1].else_code[0];.viewers[0];.viewers[0].frames[2];.networks;.networks[0];.networks[0].specs;.networks[0].specs.gp[1];.networks[0].specs.gp[1][6];.networks[0].specs.gp[2];.networks[0].specs.gp[2][0];.networks[0].layers;.networks[0].layers.gp[0];.networks[0].layers.gp[0][0];.networks[0].layers.gp[0][0].projections;.networks[0].layers.gp[0][1];.networks[0].layers.gp[0][1].projections; }; networks { name="networks"; el_typ=LeabraNetwork; el_def=0; LeabraNetwork @["BG_4s"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_90"; el_typ=UserDataItem; el_def=0; UserDataItem @["trial_cos_diff"] { name="trial_cos_diff"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["avg_act_diff"] { name="avg_act_diff"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["cos_diff"] { name="cos_diff"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["cos_err"] { name="cos_err"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["norm_err"] { name="norm_err"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["ext_rew"] { name="ext_rew"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["maxda"] { name="maxda"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["minus_output_name"] { name="minus_output_name"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["minus_cycles"] { name="minus_cycles"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["ct_cycle"] { name="ct_cycle"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["phase_no"] { name="phase_no"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["phase"] { name="phase"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["sse"] { name="sse"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["output_name"] { name="output_name"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["trial_name"] { name="trial_name"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["group_name"] { name="group_name"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["time"] { name="time"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["cycle"] { name="cycle"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["tick"] { name="tick"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["trial"] { name="trial"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["group"] { name="group"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["epoch"] { name="epoch"; value 1 0=1; val_type_fixed=1; }; UserDataItem @["batch"] { name="batch"; value 1 0=1; val_type_fixed=1; }; }; name="BG_4s"; desc=; specs { name="specs"; el_typ=ConSpec; el_def=0; ConSpec @["ConSpec_0"] { name="ConSpec_0"; desc=; unique{ }; children { name="children"; el_typ=ConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0: var=0.5: par=1: }; wt_limits {type=NONE: min=-1: max=1: sym=0: }; }; UniformRndPrjnSpec @["STN_GPe_RndPrjnSpec_0"] { name="STN_GPe_RndPrjnSpec_0"; desc=; unique{ }; children { name="children"; el_typ=UniformRndPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; p_con=1; sym_self=1; same_seed=0; rndm_seed { name="rndm_seed"; rnd_seed=367706797; }; }; UniformRndPrjnSpec @["GPe_STN_RndPrjnSpec_1"] { name="GPe_STN_RndPrjnSpec_1"; desc=; unique{ }; children { name="children"; el_typ=UniformRndPrjnSpec; el_def=0; }; self_con=0; init_wts=1; add_rnd_wts=0; add_rnd_wts_scale=1; p_con=0.4; sym_self=1; same_seed=0; rndm_seed { name="rndm_seed"; rnd_seed=381591469; }; }; BaseSpec_Group @.gp["LeabraPrjns"] { name="LeabraPrjns"; el_typ=LeabraUnitSpec; el_def=0; FullPrjnSpec @["FullPrjnSpec_0"] { name="FullPrjnSpec_0"; desc=; unique{ }; children { name="children"; el_typ=FullPrjnSpec; el_def=0; }; self_con=1; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; }; OneToOnePrjnSpec @["OneToOne"] { name="OneToOne"; desc=; unique{ self_con; }; children { name="children"; el_typ=OneToOnePrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; n_conns=-1; recv_start=0; send_start=0; use_gp=0; }; TesselPrjnSpec @["Striatum_GPext"] { name="Striatum_GPext"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; TesselPrjnSpec @["PFC_Act_Deep"] { name="PFC_Act_Deep"; desc=; unique{ send_scale; }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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=0; send_scale {x=1: y=0: }; send_off {x=3: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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=0; send_scale {x=1: y=1: }; send_off {x=3: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["nogo_nogo"] { name="nogo_nogo"; desc=; unique{ ;;;;;;;;;;;;;;;;;; }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; TesselPrjnSpec @["PFC_Act_Deep"] { name="PFC_Act_Deep"; desc=; unique{ send_scale; }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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_off {x=0: y=0: }; send_offs { name="send_offs"; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=2: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=3: y=0: }; wt_val=1; }; TessEl @[3] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=2: y=1: }; wt_val=1; }; TessEl @[5] { send_off {x=3: y=1: }; wt_val=1; }; TessEl @[6] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[7] { send_off {x=2: y=2: }; wt_val=1; }; TessEl @[8] { send_off {x=3: y=2: }; wt_val=1; }; TessEl @[9] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[10] { send_off {x=2: y=3: }; wt_val=1; }; TessEl @[11] { send_off {x=3: y=3: }; wt_val=1; }; TessEl @[12] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[13] { send_off {x=2: y=4: }; wt_val=1; }; TessEl @[14] { send_off {x=3: y=4: }; wt_val=1; }; TessEl @[15] { send_off {x=1: y=5: }; wt_val=1; }; TessEl @[16] { send_off {x=2: y=5: }; wt_val=1; }; TessEl @[17] { send_off {x=3: y=5: }; wt_val=1; }; TessEl @[18] { send_off {x=1: y=6: }; wt_val=1; }; TessEl @[19] { send_off {x=2: y=6: }; wt_val=1; }; TessEl @[20] { send_off {x=3: y=6: }; wt_val=1; }; TessEl @[21] { send_off {x=1: y=7: }; wt_val=1; }; TessEl @[22] { send_off {x=2: y=7: }; wt_val=1; }; TessEl @[23] { send_off {x=3: y=7: }; wt_val=1; }; TessEl @[24] { send_off {x=1: y=8: }; wt_val=1; }; TessEl @[25] { send_off {x=2: y=8: }; wt_val=1; }; TessEl @[26] { send_off {x=3: y=8: }; wt_val=1; }; }; last_make_cmd=; last_weights_cmd=; }; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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=9: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=1: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=2: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=3: y=0: }; wt_val=1; }; TessEl @[3] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=2: y=1: }; wt_val=1; }; TessEl @[5] { send_off {x=3: y=1: }; wt_val=1; }; TessEl @[6] { send_off {x=1: y=2: }; wt_val=1; }; TessEl @[7] { send_off {x=2: y=2: }; wt_val=1; }; TessEl @[8] { send_off {x=3: y=2: }; wt_val=1; }; TessEl @[9] { send_off {x=1: y=3: }; wt_val=1; }; TessEl @[10] { send_off {x=2: y=3: }; wt_val=1; }; TessEl @[11] { send_off {x=3: y=3: }; wt_val=1; }; TessEl @[12] { send_off {x=1: y=4: }; wt_val=1; }; TessEl @[13] { send_off {x=2: y=4: }; wt_val=1; }; TessEl @[14] { send_off {x=3: y=4: }; wt_val=1; }; TessEl @[15] { send_off {x=1: y=5: }; wt_val=1; }; TessEl @[16] { send_off {x=2: y=5: }; wt_val=1; }; TessEl @[17] { send_off {x=3: y=5: }; wt_val=1; }; TessEl @[18] { send_off {x=1: y=6: }; wt_val=1; }; TessEl @[19] { send_off {x=2: y=6: }; wt_val=1; }; TessEl @[20] { send_off {x=3: y=6: }; wt_val=1; }; TessEl @[21] { send_off {x=1: y=7: }; wt_val=1; }; TessEl @[22] { send_off {x=2: y=7: }; wt_val=1; }; TessEl @[23] { send_off {x=3: y=7: }; wt_val=1; }; TessEl @[24] { send_off {x=1: y=8: }; wt_val=1; }; TessEl @[25] { send_off {x=2: y=8: }; wt_val=1; }; TessEl @[26] { send_off {x=3: y=8: }; wt_val=1; }; }; last_make_cmd="MakeRectangle(width=3, height=9, left=1, bottom=0)"; last_weights_cmd=; }; TesselPrjnSpec @["dMatrosomesGP"] { name="dMatrosomesGP"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["SNc_GO"] { name="SNc_GO"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=0: y=0: }; recv_n {x=4: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["SNc_GO2"] { name="SNc_GO2"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=0: y=0: }; recv_n {x=3: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["Context_TS_1"] { name="Context_TS_1"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=0: y=0: }; recv_n {x=4: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=2: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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=2: y=0: }; wt_val=1; }; TessEl @[3] { send_off {x=0: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=1: y=1: }; wt_val=1; }; TessEl @[5] { send_off {x=2: y=1: }; wt_val=1; }; }; last_make_cmd="MakeRectangle(width=3, height=2, left=0, bottom=0)"; last_weights_cmd=; }; TesselPrjnSpec @["Context_TS_2"] { name="Context_TS_2"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=1: 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=3: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=3: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=4: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=5: y=0: }; wt_val=1; }; TessEl @[3] { send_off {x=3: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=4: y=1: }; wt_val=1; }; TessEl @[5] { send_off {x=5: y=1: }; wt_val=1; }; }; last_make_cmd="MakeRectangle(width=3, height=2, left=3, bottom=0)"; last_weights_cmd=; }; TesselPrjnSpec @["Context_TS_3"] { name="Context_TS_3"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=2: 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=3: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; el_typ=TessEl; el_def=0; TessEl @[0] { send_off {x=6: y=0: }; wt_val=1; }; TessEl @[1] { send_off {x=7: y=0: }; wt_val=1; }; TessEl @[2] { send_off {x=8: y=0: }; wt_val=1; }; TessEl @[3] { send_off {x=6: y=1: }; wt_val=1; }; TessEl @[4] { send_off {x=7: y=1: }; wt_val=1; }; TessEl @[5] { send_off {x=8: y=1: }; wt_val=1; }; }; last_make_cmd="MakeRectangle(width=3, height=2, left=6, bottom=0)"; last_weights_cmd=; }; TesselPrjnSpec @["MotorCortex_Striatum"] { name="MotorCortex_Striatum"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["SNc_NOGO"] { name="SNc_NOGO"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=4: y=0: }; recv_n {x=4: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["SNc_NOGO2"] { name="SNc_NOGO2"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=3: y=0: }; recv_n {x=3: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["Striatum_GPInt"] { name="Striatum_GPInt"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; 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_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; TessEl @[9] { send_off {x=0: y=9: }; wt_val=1; }; TessEl @[10] { send_off {x=0: y=10: }; wt_val=1; }; TessEl @[11] { send_off {x=0: y=11: }; wt_val=1; }; TessEl @[12] { send_off {x=0: y=12: }; wt_val=1; }; TessEl @[13] { send_off {x=0: y=13: }; wt_val=1; }; TessEl @[14] { send_off {x=0: y=14: }; wt_val=1; }; TessEl @[15] { send_off {x=0: y=15: }; wt_val=1; }; TessEl @[16] { send_off {x=0: y=16: }; wt_val=1; }; TessEl @[17] { send_off {x=0: y=17: }; wt_val=1; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["Fm_Stimuli_To_MC"] { name="Fm_Stimuli_To_MC"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=2: y=1: }; wrap=1; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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=2: y=0: }; wt_val=1; }; TessEl @[3] { send_off {x=3: y=0: }; wt_val=1; }; TessEl @[4] { send_off {x=4: y=0: }; wt_val=1; }; TessEl @[5] { send_off {x=5: y=0: }; wt_val=1; }; }; last_make_cmd="MakeRectangle(width=6, height=1, left=0, bottom=0)"; last_weights_cmd=; }; TesselPrjnSpec @["MotorCortex2_NoGoStriatum2"] { name="MotorCortex2_NoGoStriatum2"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=4: 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_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["MotorCortex_NoGoStriatum"] { name="MotorCortex_NoGoStriatum"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=3: 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_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["Fm_Output2_To_InputHidden"] { name="Fm_Output2_To_InputHidden"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=0: y=0: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=3: }; wrap=0; send_scale {x=1: y=1: }; send_off {x=0: y=0: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; TesselPrjnSpec @["Fm_Output2_To_InputHiddenB"] { name="Fm_Output2_To_InputHiddenB"; desc=; unique{ }; children { name="children"; el_typ=TesselPrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; recv_off {x=0: y=3: }; recv_n {x=-1: y=-1: }; recv_skip {x=1: y=1: }; recv_group {x=1: y=3: }; wrap=0; send_scale {x=1: y=1: }; send_off {x=0: y=-2: }; send_offs { name="send_offs"; 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; }; }; last_make_cmd=; last_weights_cmd=; }; OneToOnePrjnSpec @["OneToOne_2"] { name="OneToOne_2"; desc=; unique{ self_con; }; children { name="children"; el_typ=OneToOnePrjnSpec; el_def=0; }; self_con=0; init_wts=0; add_rnd_wts=0; add_rnd_wts_scale=1; n_conns=-1; recv_start=0; send_start=0; use_gp=0; }; }; BaseSpec_Group @.gp["Connections"] { name="Connections"; el_typ=LeabraUnitSpec; el_def=0; LeabraBiasSpec @["LearnBias"] { name="LearnBias"; desc=; unique{ rnd;wt_limits;wt_scale;wt_scale_init; }; children { name="children"; el_typ=LeabraBiasSpec; el_def=0; LeabraBiasSpec @["FixedBias"] { name="FixedBias"; desc=; unique{ lrate;wt_limits;wt_scale;wt_scale_init; }; children { name="children"; el_typ=LeabraBiasSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0: var=0: par=1: }; wt_limits {type=NONE: min=-1: max=5: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0: err=1: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=0: var=0: par=1: }; wt_limits {type=NONE: min=-1: max=5: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0.01; cur_lrate=0.01; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0: err=1: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["FixedFull"] { name="FixedFull"; desc=; unique{ rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["InhibCons"] { name="InhibCons"; desc=; unique{ rnd;wt_limits;inhib;wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.75: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.4: rel=1.2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.3: rel=2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["FixedFull2"] { name="FixedFull2"; desc=; unique{ rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["FixedFull3"] { name="FixedFull3"; desc=; unique{ rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=0.2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["FixedHalf"] { name="FixedHalf"; desc=; unique{ rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["GPeGPiInhib"] { name="GPeGPiInhib"; desc=; unique{ rnd;inhib; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["ThalInhib"] { name="ThalInhib"; desc=; unique{ wt_scale;wt_sig;savg_cor; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=1: rel=3: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["ThalInhib2"] { name="ThalInhib2"; desc=; unique{ wt_scale;wt_sig;savg_cor; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.7: rel=5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["Inhib_Learn"] { name="Inhib_Learn"; desc=; unique{ rnd;wt_scale;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.35: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=8: rel=2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=1e-5; cur_lrate=1e-5; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["Inhib_Learn2"] { name="Inhib_Learn2"; desc=; unique{ rnd;wt_scale;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.35: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=8: rel=2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=1e-5; cur_lrate=1e-5; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=1: rel=1.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["Fixed"] { name="Fixed"; desc=; unique{ rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["STNcons"] { name="STNcons"; desc=; unique{ rnd;wt_scale;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.21: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=0.7: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0.001; cur_lrate=0.001; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["MotorCortex_Striatum"] { name="MotorCortex_Striatum"; desc=; unique{ rnd;wt_limits;wt_scale;savg_cor;lrate;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.1: err=0.9: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0: thresh=0.01: }; 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 @["MotorCortex2_Striatum2"] { name="MotorCortex2_Striatum2"; desc=; unique{ rnd;wt_limits;wt_scale;savg_cor;lrate;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.6: rel=1.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=1: err=0: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0: thresh=0.01: }; 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 @["Motor_NoGo"] { name="Motor_NoGo"; desc="additional excitability for striatopallidal neurons (e.g, Beretta et al, 1997; Lei et al, 2004) )"; unique{ rnd;wt_limits;wt_scale;savg_cor;lmix;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.65: rel=2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.1: err=0.9: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0: thresh=0.01: }; 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 @["Motor_NoGo2"] { name="Motor_NoGo2"; desc="additional excitability for striatopallidal neurons (e.g, Beretta et al, 1997; Lei et al, 2004) )"; unique{ rnd;wt_limits;wt_scale;savg_cor;lrate;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=0.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=1: err=0: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0: thresh=0.01: }; 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 @["Input_Motor_Prepotent_"] { name="Input_Motor_Prepotent_"; desc=; unique{ rnd;wt_scale;lmix;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.35: var=0.005: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=5: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=1: err=0: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["Context_Motor_prepotent"] { name="Context_Motor_prepotent"; desc=; unique{ rnd;wt_scale;lrate;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["C_TS"] { name="C_TS"; desc=; unique{ wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.35: var=0.005: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=3: rel=0: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=1: err=0: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=0.35: var=0.005: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=3: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=1: err=0: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["InputStriatum"] { name="InputStriatum"; desc=; unique{ rnd;wt_scale;lrate;savg_cor;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.45: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.6: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0.05; cur_lrate=0.05; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.1: err=0.9: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.001: }; 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 @["inNoGO"] { name="inNoGO"; desc=; unique{ rnd;wt_scale;lrate;lmix;savg_cor; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.45: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.65: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0.05; cur_lrate=0.05; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.1: err=0.9: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["ContextStriatum"] { name="ContextStriatum"; desc=; unique{ rnd;wt_scale;lrate;savg_cor;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.45: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.6: rel=1.25: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.1: err=0.9: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.001: }; 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 @["MC2_Striatum"] { name="MC2_Striatum"; desc=; unique{ rnd;wt_scale;lrate;savg_cor;lmix; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.45: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0.15; cur_lrate=0.15; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.1: err=0.9: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.001: }; 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 @["STN_GPi"] { name="STN_GPi"; desc=; unique{ rnd;wt_scale;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0.21: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=0.2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["Mtr_STNcons"] { name="Mtr_STNcons"; desc=; unique{ rnd;wt_scale;lrate; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.65: var=0.2: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=0.1: var=0.01: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0.001; cur_lrate=0.0075; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["Dopamine_D1_"] { name="Dopamine_D1_"; desc=; unique{ rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["D1_Stronger"] { name="D1_Stronger"; desc=; unique{ wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.5: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.5: rel=2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=0.5: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.7: rel=0.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["SNc_Inhib_D2_"] { name="SNc_Inhib_D2_"; desc=; unique{ rnd;inhib; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["D2_Stronger"] { name="D2_Stronger"; desc=; unique{ wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.5: rel=1.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=1: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.08: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=0.4: thresh=0.01: }; 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 @["Inhib"] { name="Inhib"; desc=; unique{ rnd;inhib; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.7: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=1: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.1: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["NoGo_inhib_Go"] { name="NoGo_inhib_Go"; desc=; unique{ rnd;wt_limits;inhib;wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.75: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.6: rel=1.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["NoGo_inhib_NoGo"] { UserDataItem_List @*(.user_data_) { name="UserDataItem_List_179"; el_typ=UserDataItem; el_def=0; UserDataItem @["user_pinned"] { name="user_pinned"; value 1 0=0; val_type_fixed=0; }; }; name="NoGo_inhib_NoGo"; desc=; unique{ rnd;wt_limits;inhib;wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.75: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.4: rel=0: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["InhibInhib"] { name="InhibInhib"; desc=; unique{ rnd;wt_limits;inhib;wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.8: var=0: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=1; wt_scale {abs=0.25: rel=1.5: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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 @["FBtoInhib"] { name="FBtoInhib"; desc=; unique{ wt_limits;rnd;lrate;wt_scale; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; LeabraConSpec @["FFtoInhib"] { name="FFtoInhib"; desc=; unique{ wt_scale;rnd; }; children { name="children"; el_typ=LeabraConSpec; el_def=0; }; rnd {name="rnd": type=UNIFORM: mean=0.35: var=0.25: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.6: rel=1: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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="rnd": type=UNIFORM: mean=0.25: var=0.1: par=1: }; wt_limits {type=MIN_MAX: min=0: max=1: sym=0: }; learn_rule=LEABRA_CHL; inhib=0; wt_scale {abs=0.85: rel=2: sem_extra=2: }; diff_scale_p=0; wt_scale_p {abs=1: rel=1: sem_extra=2: }; wt_scale_init {init=0: abs=1: rel=1: }; learn=1; lrate=0; cur_lrate=0; lrs_value=EPOCH; lrate_sched { name="lrate_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=0; }; ignore_unlearnable=1; wt_sig {gain=6: off=1.25: dwt_norm=0: }; stable_mix {stable_pct=0: learn_pct=1: cos_diff_lrate=0: }; lmix {hebb=0.01: err=0.99: err_sb=1: }; xcal {l_mix=L_MIX: thr_l_mix=0.01: thr_m_mix=0.99: s_mix=0.9: m_mix=0.1: d_rev=0.1: d_thr=0.0001: d_rev_ratio=-9: }; savg_cor {cor=1: thresh=0.01: }; 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["Units"] { name="Units"; el_typ=LeabraUnitSpec; el_def=0; LeabraUnitSpec @["FixedBiasUnitSpec"] { name="FixedBiasUnitSpec"; desc=; unique{ opt_thresh; }; children { name="children"; el_typ=LeabraUnitSpec; el_def=0; LeabraUnitSpec @["GPExt_UnitSpec"] { name="GPExt_UnitSpec"; desc=; unique{ bias_spec;act;opt_thresh;v_m_init;dt;g_bar;e_rev; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.26: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.1: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=10: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; g_bar {e=1: l=1: i=1.5: h=0.1: a=0.5: }; e_rev {e=1: l=0.26: 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["OutputUnitSpec"] { name="OutputUnitSpec"; desc=; unique{ bias_spec;act;opt_thresh;g_bar;dt; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.2: gain=20: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.03: net=0.1: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=33.33334: net_time=10: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["Output3UnitSpec"] { name="Output3UnitSpec"; desc=; unique{ bias_spec;act;opt_thresh;g_bar;dt; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.2: gain=100: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.03: net=0.1: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=33.33334: net_time=10: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["Thalamus"] { name="Thalamus"; desc=; unique{ bias_spec;opt_thresh;dt;g_bar; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.05: net=0.4: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=20: net_time=2.5: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["LearnBiasUnitSpec"] { name="LearnBiasUnitSpec"; desc=; unique{ bias_spec;dt; }; children { name="children"; el_typ=LeabraUnitSpec; el_def=0; LeabraUnitSpec @["matrisom_unitspec"] { name="matrisom_unitspec"; desc=; unique{ bias_spec;act;opt_thresh;g_bar;act_reg;noise_type;noise;dt;noise_adapt; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.26: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.023: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=43.47826: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; g_bar {e=1: l=0.35: i=7.5: 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=VM_NOISE; noise {name="noise": type=GAUSSIAN: mean=0.001: var=0: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["Motor_Cortex_unitspec"] { name="Motor_Cortex_unitspec"; desc=; unique{ bias_spec;opt_thresh;dt;acc;noise_type;noise;noise_sched;noise_adapt; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.05: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=20: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=VM_NOISE; noise {name="noise": type=GAUSSIAN: mean=0.0005: var=0.001: par=1: }; noise_adapt {trial_fixed=0: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; 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 @["Motor_Cortex_1_unitspec"] { name="Motor_Cortex_1_unitspec"; desc=; unique{ bias_spec;opt_thresh;dt;acc;noise_type;noise;noise_sched;noise_adapt; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.1: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=10: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=VM_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=0: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; SchedItem @[0] { start_ctr=0; start_val=1; duration=85; step=0; }; SchedItem @[1] { start_ctr=85; start_val=1; duration=55; step=-0.009090909; }; SchedItem @[2] { start_ctr=140; start_val=0.5; duration=20; step=-0.015; }; SchedItem @[3] { start_ctr=160; start_val=0.2; duration=1; step=1; }; }; }; LeabraUnitSpec @["STN_unitspec"] { name="STN_unitspec"; desc=; unique{ bias_spec;act;opt_thresh;v_m_init;dt;g_bar;e_rev;noise_type;noise;acc; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.25: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.045: net=0.17: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=22.22222: net_time=5.882353: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; g_bar {e=1: l=1: i=1: h=0.1: a=3.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=1: 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0.0015: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"]$$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.1: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=10: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["GPInt_UnitSpec"] { name="GPInt_UnitSpec"; desc=; unique{ bias_spec;opt_thresh;v_m_init;dt;g_bar;e_rev; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.26: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.2: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=5: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; g_bar {e=1: l=3: i=1: h=0.1: a=0.5: }; e_rev {e=1: l=0.27: 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["InhibUnits"] { name="InhibUnits"; desc=; unique{ dt;g_bar; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.125: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=8: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; g_bar {e=1: l=0.1: i=4: 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; }; act_range {min=0: max=1: range=1: scale=1: }; bias_con_type=LeabraCon; bias_spec {type=LeabraBiasSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=600: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.1: net=0.7: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=10: net_time=1.428571: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NO_NOISE; noise {name="noise": type=GAUSSIAN: mean=0: var=0.001: par=1: }; noise_adapt {trial_fixed=1: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["SNc_UnitSpec"] { name="SNc_UnitSpec"; desc=; unique{ opt_thresh; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=100: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.95: net=1: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=1.052632: net_time=1: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NETIN_NOISE; noise {name="noise": type=GAUSSIAN: mean=0.0015: var=0.0015: par=1: }; noise_adapt {trial_fixed=0: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; LeabraUnitSpec @["SNc_UnitSpec_slower"] { name="SNc_UnitSpec_slower"; desc=; unique{ opt_thresh; }; children { name="children"; 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["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["LearnBias"].children["FixedBias"]$: }; sse_tol=0.5; act_fun=NOISY_XX1; act {gelin=0: thr=0.25: gain=100: nvar=0.005: avg_dt=0.005: avg_init=0.15: rescale_ctxt=1: i_thr=STD: }; act_lrn_on=0; act_lrn {gelin=1: thr=0.5: gain=100: nvar=0.005: }; spike {rise=0: decay=0.05: g_gain=5: window=3: eq_gain=10: eq_dt=0.02: }; spike_misc { exp_slope=0.02; spk_thr=1.2; clamp_max_p=0.11; clamp_type=REGULAR; vm_r=0; t_r=6; vm_dend=0.3; vm_dend_dt=0.16; vm_dend_time=6.25; }; opt_thresh {send=0.1: delta=0.005: phase_dif=0: xcal_lrn=0.01: }; maxda {val=INET_DA: inet_scale=1: lay_avg_thr=0.01: }; 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="v_m_init": type=UNIFORM: mean=0.15: var=0: par=1: }; act_init {name="act_init": type=NONE: mean=0: var=0: par=1: }; dt {integ=1: vm=0.95: net=0.03: midpoint=0: d_vm_max=0.025: vm_eq_cyc=0: vm_eq_dt=1: integ_time=1: vm_time=1.052632: net_time=33.33334: }; act_avg {l_up_add=0: l_dn_pct=0: l_up_dt=0.6: l_dn_dt=0.05: m_dt=0.1: s_dt=0.2: ss_dt=1: use_nd=0: l_time=20: m_time=10: s_time=5: ss_time=0.9999999: }; 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: }; adapt { on=0; dt=0.007; vm_gain=0.1; spike_gain=0.01; interval=10; trials=0; dt_time=142.8571; }; depress {phase_act=ACT_ND: on=0: rec=0.2: asymp_act=0.5: depl=0.2105263: delay=0: interval=1: trials=0: max_amp=2: }; syn_delay { on=0; delay=4; }; cifer {on=0: phase_updt=0: super_gain=0.05: thal_5b_thr=0.5: act_5b_thr=0.5: binary5b=0: ti_5b=0.5: bg_lrate=1: fg_lrate=0: }; da_mod {on=0: mod=PLUS_CONT: gain=0.1: }; noise_type=NETIN_NOISE; noise {name="noise": type=GAUSSIAN: mean=0.0015: var=0.0005: par=1: }; noise_adapt {trial_fixed=0: k_pos_noise=0: mode=FIXED_NOISE: min_pct=0.5: min_pct_c=0.5: }; noise_sched { name="noise_sched"; el_typ=SchedItem; el_def=0; default_val=1; interpolate=1; }; }; }; BaseSpec_Group @.gp["LayerSpecs"] { name="LayerSpecs"; el_typ=LeabraUnitSpec; el_def=0; LeabraLayerSpec @["LayerSpec_0"] { name="LayerSpec_0"; desc=; unique{ kwta; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; LeabraLayerSpec @["Matrisome_layerspec"] { name="Matrisome_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=3: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["GP_layerspec"] { name="GP_layerspec"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=0: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["Thalamus_layerspec"] { name="Thalamus_layerspec"; desc=; unique{ kwta;compute_i;decay;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["Output_layerspec"] { name="Output_layerspec"; desc=; unique{ kwta;inhib_group;compute_i;i_kwta_pt;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["PFC_Out_layerspec"] { name="PFC_Out_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=LAY_AND_GPS; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["InputLayer"] { name="InputLayer"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.25; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=6: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["SNc_layerspec"] { name="SNc_layerspec"; desc=; unique{ kwta;compute_i;clamp;inhib;decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=0: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["MCLayerSpec"] { name="MCLayerSpec"; desc=; unique{ decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["MC2LayerSpec"] { name="MC2LayerSpec"; desc=; unique{ decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=0: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; 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; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["inhidden"] { name="inhidden"; desc=; unique{ kwta; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; LeabraLayerSpec @["Matrisome_layerspec"] { name="Matrisome_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;clamp;decay;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=3: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["GP_layerspec"] { name="GP_layerspec"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=0: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["Thalamus_layerspec"] { name="Thalamus_layerspec"; desc=; unique{ kwta;compute_i;decay;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["Output_layerspec"] { name="Output_layerspec"; desc=; unique{ kwta;inhib_group;compute_i;i_kwta_pt;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["PFC_Out_layerspec"] { name="PFC_Out_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=LAY_AND_GPS; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["InputLayer"] { name="InputLayer"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.25; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["SNc_layerspec"] { name="SNc_layerspec"; desc=; unique{ kwta;compute_i;clamp;inhib;decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=0: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; 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; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=3: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["LayerSpec_1"] { name="LayerSpec_1"; desc=; unique{ kwta; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; LeabraLayerSpec @["Matrisome_layerspec"] { name="Matrisome_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;clamp;decay;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=3: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["GP_layerspec"] { name="GP_layerspec"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=0: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["Thalamus_layerspec"] { name="Thalamus_layerspec"; desc=; unique{ kwta;compute_i;decay;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["Output_layerspec"] { name="Output_layerspec"; desc=; unique{ kwta;inhib_group;compute_i;i_kwta_pt;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["PFC_Out_layerspec"] { name="PFC_Out_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=LAY_AND_GPS; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["InputLayer"] { name="InputLayer"; desc=; unique{ kwta;compute_i;i_kwta_pt;clamp;inhib; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=KWTA_INHIB; kwta_pt=0.25; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["SNc_layerspec"] { name="SNc_layerspec"; desc=; unique{ kwta;compute_i;clamp;inhib;decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=0: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; 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; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["NoDecayLayers"] { name="NoDecayLayers"; desc=; unique{ }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; LeabraLayerSpec @["STN"] { name="STN"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib;decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.5; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=2: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["PFCIn_layerspec"] { name="PFCIn_layerspec"; desc=; unique{ kwta;gp_kwta;inhib_group;compute_i;i_kwta_pt;inhib;decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=LAY_AND_GPS; inhib { type=KWTA_AVG_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=5: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=1: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; 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; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_K: k=1: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=0: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.05: p_dt=0: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; LeabraLayerSpec @["InhibLayers"] { name="InhibLayers"; desc=; unique{ kwta;inhib;decay; }; children { name="children"; el_typ=LeabraLayerSpec; el_def=0; }; inhib_group=ENTIRE_LAYER; inhib { type=UNIT_INHIB; kwta_pt=0.6; gi=2; ff=1; fb=0.5; self_fb=0; prv_trl_ff=0; prv_phs_ff=0; dt=0.7; up_immed=0; ff0=0.1; min_i=0; }; kwta {k_from=USE_PCT: k=3: pct=0.34: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; gp_kwta {k_from=USE_PCT: k=12: pct=0.25: pat_q=0.5: avg_dt=0.005: diff_act_pct=0: act_pct=0.1: }; lay_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; unit_gp_inhib {on=0: fffb=0: lay_gi=2: gp_g=0.5: self_g=1: diff_act_pct=0: act_pct_mult=0.3333333: pct_fm_frac=1: act_denom=3: }; clamp {hard=1: gain=0.5: max_plus=0: plus=0.01: min_clamp=0.5: minus_targ_gain=0: }; decay {event=0: phase=0: phase2=0: }; cos_diff_lrate {on=0: lo_diff=0: lo_lrate=0.01: hi_diff=1: hi_lrate=0.01: avg_dt=0.002: }; ct_inhib_mod { manual_sravg=0; sravg_delay=0; use_sin=0; burst_i=0.02; trough_i=0.02; use_fin=0; inhib_i=0; }; tie_brk {on=0: k_thr=1: diff_thr=0.2: thr_gain=0.005: loser_gain=1: }; adapt_i {type=NONE: tol=0.02: p_dt=0.1: mx_d=0.2: l=0.2: a_dt=0.005: }; abs_net_adapt { on=0; trg_net=0.5; tol=0.1; abs_lrate=0.1; }; }; }; }; layers { name="layers"; el_typ=LeabraLayer; el_def=0; pos {x=0: y=0: z=0: }; pos2d {x=0: y=0: }; max_disp_size {x=40: y=9: z=3: }; max_disp_size2d {x=10: y=36: }; LeabraLayer @["Input"] { name="Input"; desc=; flags=0; layer_type=INPUT; pos {x=2: y=4: z=2: }; pos2d {x=0: y=0: }; disp_scale=1; un_geom {x=6: y=3: n_not_xy=0: n=18: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=6: y=3: n_not_xy=0: n=18: }; disp_geom {x=6: y=3: n_not_xy=0: n=18: }; scaled_disp_geom {x=6: y=3: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"].projections["Fm_Input"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"].projections["Fm_Input"]; Projection_Group @. = [2] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_Input"]; Projection_Group @. = [3] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"].projections["Fm_Input"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["InputLayer"]$$: }; }; LeabraLayer @["GP_Int"] { name="GP_Int"; desc=; flags=0; layer_type=HIDDEN; pos {x=28: y=0: z=0: }; pos2d {x=0: y=3: }; disp_scale=1; un_geom {x=4: y=2: n_not_xy=0: n=8: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=4: y=2: n_not_xy=0: n=8: }; disp_geom {x=4: y=2: n_not_xy=0: n=8: }; scaled_disp_geom {x=4: y=2: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_Go"] { name="Fm_Go"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"]$$; spec {type=TesselPrjnSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["Striatum_GPInt"]$$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["GPeGPiInhib"].children["Inhib_Learn"]$$: }; recv_idx=0; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_GP_Ext"] { name="Fm_GP_Ext"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers["GP_Ext"]$$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["Striatum_GPInt"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["GPeGPiInhib"]$$: }; recv_idx=1; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["Thalamus"].projections["Fm_GP_Int"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["GPInt_UnitSpec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["GP_layerspec"]$$: }; }; LeabraLayer @["GP_Ext"] { name="GP_Ext"; desc=; flags=0; layer_type=HIDDEN; pos {x=28: y=4: z=0: }; pos2d {x=0: y=6: }; disp_scale=1; un_geom {x=4: y=1: n_not_xy=0: n=4: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=4: y=1: n_not_xy=0: n=4: }; disp_geom {x=4: y=1: n_not_xy=0: n=4: }; scaled_disp_geom {x=4: y=1: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_NoGo"] { name="Fm_NoGo"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"]$$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["Striatum_GPInt"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Inhib"]$$: }; recv_idx=0; send_idx=3; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["GP_Int"].projections["Fm_GP_Ext"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["GPExt_UnitSpec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["GP_layerspec"]$: }; }; LeabraLayer @["Thalamus"] { name="Thalamus"; desc=; flags=0; layer_type=HIDDEN; pos {x=32: y=0: z=1: }; pos2d {x=0: y=9: }; disp_scale=1; un_geom {x=4: y=1: n_not_xy=0: n=4: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=4: y=1: n_not_xy=0: n=4: }; disp_geom {x=4: y=1: n_not_xy=0: n=4: }; scaled_disp_geom {x=4: y=1: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_GP_Int"] { name="Fm_GP_Int"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers["GP_Int"]$$; spec {type=TesselPrjnSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["dMatrosomesGP"]$$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["GPeGPiInhib"].children["ThalInhib2"]$$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_PMC"] { name="Fm_PMC"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["dMatrosomesGP"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FixedFull"]$$: }; recv_idx=1; send_idx=5; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"].projections["Fm_Thalamus"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["Thalamus"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["Thalamus_layerspec"]$$: }; }; LeabraLayer @["PMC"] { name="PMC"; desc=; flags=NO_ADD_SSE|NO_ADD_COMP_SSE; layer_type=TARGET; pos {x=28: y=0: z=2: }; pos2d {x=0: y=12: }; disp_scale=1; un_geom {x=4: y=2: n_not_xy=0: n=8: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=4: y=2: n_not_xy=0: n=8: }; disp_geom {x=4: y=2: n_not_xy=0: n=8: }; scaled_disp_geom {x=4: y=2: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_Thalamus"] { name="Fm_Thalamus"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["Thalamus"]$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["dMatrosomesGP"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FixedFull"]$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_ctxt"] { name="Fm_ctxt"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers["ctxt"]$$; spec {type=FullPrjnSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["Input_Motor_Prepotent_"]$: }; recv_idx=1; send_idx=3; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_Input"] { name="Fm_Input"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers["Input"]$$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["Input_Motor_Prepotent_"]$: }; recv_idx=2; send_idx=3; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["Thalamus"].projections["Fm_PMC"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["Output"].projections["Fm_PMC"]; Projection_Group @. = [2] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["Output"].projections["Fm_PMC_1"]; Projection_Group @. = [3] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"].projections["Fm_PMC"]; Projection_Group @. = [4] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"].projections["Fm_PMC"]; Projection_Group @. = [5] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_PMC"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["LearnBiasUnitSpec"].children["Motor_Cortex_1_unitspec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["MCLayerSpec"]$$: }; }; LeabraLayer @["Output"] { name="Output"; desc=; flags=0; layer_type=TARGET; pos {x=36: y=0: z=2: }; pos2d {x=0: y=15: }; disp_scale=1; un_geom {x=4: y=1: n_not_xy=0: n=4: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=4: y=1: n_not_xy=0: n=4: }; disp_geom {x=4: y=1: n_not_xy=0: n=4: }; scaled_disp_geom {x=4: y=1: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_PMC"] { name="Fm_PMC"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["Striatum_GPInt"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FixedFull"]$: }; recv_idx=0; send_idx=3; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_PMC_1"] { name="Fm_PMC_1"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; spec {type=OneToOnePrjnSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["OneToOne_2"]$$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FixedFull"]$: }; recv_idx=1; send_idx=4; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["OutputUnitSpec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["Output_layerspec"]$$: }; }; LeabraLayer @["SNc"] { name="SNc"; desc=; flags=0; layer_type=INPUT; pos {x=6: y=0: z=0: }; pos2d {x=0: y=18: }; disp_scale=1; un_geom {x=2: y=2: n_not_xy=0: n=4: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=2: y=2: n_not_xy=0: n=4: }; disp_geom {x=2: y=2: n_not_xy=0: n=4: }; scaled_disp_geom {x=2: y=2: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"].projections["Fm_SNc"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"].projections["Fm_SNc"]; Projection_Group @. = [2] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_SNc"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["SNc_UnitSpec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["SNc_layerspec"]$$: }; }; LeabraLayer @["ctxt"] { name="ctxt"; desc=; flags=ICONIFIED; layer_type=INPUT; pos {x=3: y=1: z=2: }; pos2d {x=0: y=21: }; disp_scale=1; un_geom {x=9: y=2: n_not_xy=0: n=18: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=0: y=0: }; flat_geom {x=9: y=2: n_not_xy=0: n=18: }; disp_geom {x=9: y=2: n_not_xy=0: n=18: }; scaled_disp_geom {x=9: y=2: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"].projections["Fm_ctxt"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"].projections["Fm_ctxt"]; Projection_Group @. = [2] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_ctxt"]; Projection_Group @. = [3] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"].projections["Fm_ctxt"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"]$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["InputLayer"]$: }; }; Layer_Group @.gp["Striatum"] { name="Striatum"; el_typ=LeabraLayer; el_def=0; pos {x=9: y=0: z=1: }; pos2d {x=0: y=24: }; max_disp_size {x=15: y=9: z=1: }; max_disp_size2d {x=10: y=12: }; LeabraLayer @["Go"] { name="Go"; desc=; flags=0; layer_type=HIDDEN; pos {x=0: y=0: z=0: }; pos2d {x=0: y=0: }; disp_scale=1; un_geom {x=4: y=9: n_not_xy=0: n=36: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=1: y=1: }; flat_geom {x=4: y=9: n_not_xy=0: n=36: }; disp_geom {x=4: y=9: n_not_xy=0: n=36: }; scaled_disp_geom {x=4: y=9: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_Input"] { name="Fm_Input"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["Input"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["InputStriatum"]$: }; recv_idx=0; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_ctxt"] { name="Fm_ctxt"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["ctxt"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["ContextStriatum"]$$: }; recv_idx=1; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_Striatum_Inhib"] { name="Fm_Striatum_Inhib"; off=0; disp=1; from_type=CUSTOM; from=.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"]$$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FixedFull"].children["InhibCons"]$$: }; recv_idx=2; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_SNc"] { name="Fm_SNc"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["SNc"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Dopamine_D1_"]$: }; recv_idx=3; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_PMC"] { name="Fm_PMC"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; spec {type=TesselPrjnSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["MotorCortex_Striatum"]$$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["MotorCortex2_Striatum2"]$$: }; recv_idx=4; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_NoGo"] { name="Fm_NoGo"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"]$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["Striatum_GPInt"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["NoGo_inhib_Go"]$$: }; recv_idx=5; send_idx=2; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_Go"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["GP_Int"].projections["Fm_Go"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["LearnBiasUnitSpec"].children["matrisom_unitspec"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["Matrisome_layerspec"]$$: }; }; LeabraLayer @["NoGo"] { name="NoGo"; desc=; flags=0; layer_type=HIDDEN; pos {x=8: y=0: z=0: }; pos2d {x=6: y=3: }; disp_scale=1; un_geom {x=4: y=9: n_not_xy=0: n=36: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=1: y=1: }; flat_geom {x=4: y=9: n_not_xy=0: n=36: }; disp_geom {x=4: y=9: n_not_xy=0: n=36: }; scaled_disp_geom {x=4: y=9: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_Input"] { name="Fm_Input"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["Input"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["inNoGO"]$: }; recv_idx=0; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_NoGo"] { name="Fm_NoGo"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"]$; spec {type=TesselPrjnSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["nogo_nogo"]$$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["NoGo_inhib_NoGo"]$$: }; recv_idx=1; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.886: b=0.486: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_ctxt"] { name="Fm_ctxt"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["ctxt"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["ContextStriatum"]$: }; recv_idx=2; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_Striatum_Inhib"] { name="Fm_Striatum_Inhib"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FixedFull"].children["InhibCons"]$: }; recv_idx=3; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.886: b=0.486: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_SNc"] { name="Fm_SNc"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["SNc"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["SNc_Inhib_D2_"]$: }; recv_idx=4; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_PMC"] { name="Fm_PMC"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; spec {type=TesselPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["MotorCortex_Striatum"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["Fixed"].children["Motor_NoGo"]$$: }; recv_idx=5; send_idx=1; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_NoGo"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"].projections["Fm_NoGo"]; Projection_Group @. = [2] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers["GP_Ext"].projections["Fm_NoGo"]; Projection_Group @. = [3] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"].projections["Fm_NoGo"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["LearnBiasUnitSpec"].children["matrisom_unitspec"]$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["LayerSpec_0"].children["Matrisome_layerspec"]$: }; }; LeabraLayer @["Striatum_Inhib"] { name="Striatum_Inhib"; desc=; flags=ICONIFIED; layer_type=HIDDEN; pos {x=14: y=0: z=0: }; pos2d {x=0: y=11: }; disp_scale=1; un_geom {x=2: y=8: n_not_xy=0: n=16: }; unit_groups=0; virt_groups=1; gp_geom {x=1: y=1: n_not_xy=0: n=1: }; gp_spc {x=1: y=1: }; flat_geom {x=2: y=8: n_not_xy=0: n=16: }; disp_geom {x=2: y=8: n_not_xy=0: n=16: }; scaled_disp_geom {x=2: y=8: n_not_xy=0: n=1: }; projections { name="projections"; el_typ=LeabraPrjn; el_def=0; LeabraPrjn @["Fm_Input"] { name="Fm_Input"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["Input"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FBtoInhib"].children["FFtoInhib"]$$: }; recv_idx=0; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_ctxt"] { name="Fm_ctxt"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["ctxt"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FBtoInhib"].children["FFtoInhib"]$: }; recv_idx=1; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_SNc"] { name="Fm_SNc"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["SNc"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FBtoInhib"].children["FFtoInhib"]$: }; recv_idx=2; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_PMC"] { name="Fm_PMC"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers["PMC"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FBtoInhib"].children["FFtoInhib"]$: }; recv_idx=3; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_Striatum_Inhib"] { name="Fm_Striatum_Inhib"; off=0; disp=1; from_type=SELF; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["InhibInhib"]$$: }; recv_idx=4; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_Go"] { name="Fm_Go"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FBtoInhib"]$$: }; recv_idx=5; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; LeabraPrjn @["Fm_NoGo"] { name="Fm_NoGo"; off=0; disp=1; from_type=CUSTOM; from=$.projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"]$; spec {type=FullPrjnSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LeabraPrjns"]["FullPrjnSpec_0"]$: }; con_type=LeabraCon; recvcons_type=LeabraRecvCons; sendcons_type=LeabraSendCons; con_spec {type=LeabraConSpec: spec=$.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Connections"]["FBtoInhib"]$: }; recv_idx=6; send_idx=0; recv_n=1; send_n=1; projected=1; direction=DIR_UNKNOWN; prjn_clr {r=1: g=0.9: b=0.5: a=1: }; trg_netin_rel=-1; }; }; send_prjns { name="send_prjns"; el_typ=LeabraPrjn; el_def=0; Projection_Group @. = [0] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Striatum_Inhib"].projections["Fm_Striatum_Inhib"]; Projection_Group @. = [1] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["Go"].projections["Fm_Striatum_Inhib"]; Projection_Group @. = [2] = LeabraPrjn .projects["BG_9060_4010"].networks["BG_4s"].layers.gp["Striatum"]["NoGo"].projections["Fm_Striatum_Inhib"]; }; units { name="units"; el_typ=LeabraUnit; el_def=0; pos {x=0: y=0: z=0: }; output_name=; }; unit_spec {type=LeabraUnitSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["Units"]["FixedBiasUnitSpec"].children["InhibUnits"]$$: }; dmem_dist=DMEM_DIST_DEFAULT; dist { fm_input=-1; fm_output=-1; }; units_lesioned=0; gp_unit_names_4d=0; brain_area=; voxel_fill_pct=1; spec {type=LeabraLayerSpec: spec=.projects["BG_9060_4010"].networks["BG_4s"].specs.gp["LayerSpecs"]["InhibLayers"]$$: }; }; }; }; weights { name="weights"; el_typ=Weights; el_def=0; }; flags=NETIN_PER_PRJN; auto_build=AUTO_BUILD; brain_atlas_name=; train_mode=TRAIN; wt_update=ON_LINE; small_batch_n=5; sse_unit_avg=0; sse_sqrt=0; cnt_err_tol=0.7; compute_prerr=0; threads { run_time {name="TimeUsedHR_12": s_used=0: n_used=0: avg_used={avg=0: sum=0: n=0: }: }; sync_time {name="TimeUsedHR_13": s_used=0: n_used=0: avg_used={avg=0: sum=0: n=0: }: }; total_time {name="TimeUsedHR_14": s_used=0: n_used=0: avg_used={avg=0: sum=0: n=0: }: }; n_wake_in_sync=0; run_time_pct=0; sync_time_pct=0; wake_in_sync_pct=5.262939115043168e+294; interleave=1; ignore_lay_sync=0; }; dmem_sync_level=DMEM_SYNC_NETWORK; dmem_nprocs=1; usr1_save_fmt=FULL_NET; wt_save_fmt=TEXT; n_units=156; n_cons=8088; max_prjns=7; max_disp_size {x=40: y=9: z=3: }; max_disp_size2d {x=10: y=36: }; learn_rule=LEABRA_CHL; ti_mode=0; phase_order=MINUS_PLUS; no_plus_test=1; sequence_init=DO_NOTHING; phase_max=2; time_inc=1; cycle_max=30; mid_minus_cycle=-1; min_cycles=15; min_cycles_phase2=35; dwt_norm_enabled=0; ct_time { use=0; minus=50; plus=20; inhib=1; n_avg_only_epcs=0; total_cycles=71; inhib_start=70; }; ct_sravg { manual=0; start=30; end=1; interval=1; plus_s_st=19; plus_s_only=0; force_con=0; }; ct_sin_i { start=30; duration=20; n_pi=2; burst_i=0; trough_i=0; }; ct_fin_i { start=20; end=25; inhib_i=0; }; ct_lrn_trig { plus_lrn_cyc=-1; davg_dt=0.1; davg_s_dt=0.05; davg_m_dt=0.03; davg_l_dt=0.0005; thr_min=0; thr_max=0.5; loc_max_cyc=8; loc_max_dec=0.01; lrn_delay=40; lrn_refract=100; davg_l_init=0; davg_max_init=0.001; davg_time=10; davg_s_time=20; davg_m_time=33.33333; davg_l_time=2000; lrn_delay_inc=0.025; lrn_refract_inc=0.01; }; lrn_trig { davg=0; davg_s=0; davg_m=0; davg_smd=0; davg_l=0; davg_max=0.001; cyc_fm_inc=0; cyc_fm_dec=0; loc_max=0; lrn_max=0; lrn_trig=0; lrn=0; }; net_misc { cyc_syn_dep=0; syn_dep_int=20; }; maxda_stopcrit=0.005; trg_max_act_stopcrit=1; norew_val=0.5; off_errs=1; on_errs=1; cos_err_lrn_thr=-1; cos_diff_on=0; cos_diff_auto=0; }; }; };