Skip to content

template

Name: TemplateCurriculum

Version: 0.1.0

Pkg-location: aind_behavior_vr_foraging_curricula.template

Diagram

template diagram

Specification

{
  "pkg_location": "aind_behavior_vr_foraging_curricula.template",
  "name": "TemplateCurriculum",
  "version": "0.1.0",
  "graph": {
    "nodes": {
      "0": {
        "name": "stage_a",
        "task": {
          "name": "AindVrForaging",
          "description": "",
          "task_parameters": {
            "rng_seed": 1.0,
            "aind_behavior_services_pkg_version": "0.12.0",
            "updaters": {
              "RewardDelayOffset": {
                "operation": "Offset",
                "parameters": {
                  "initial_value": 0.0,
                  "increment": 0.005,
                  "decrement": 0.0,
                  "minimum": 0.0,
                  "maximum": 0.2
                }
              },
              "StopDurationOffset": {
                "operation": "Offset",
                "parameters": {
                  "initial_value": 0.0,
                  "increment": 0.005,
                  "decrement": 0.0,
                  "minimum": 0.0,
                  "maximum": 0.5
                }
              },
              "StopVelocityThreshold": {
                "operation": "OffsetPercentage",
                "parameters": {
                  "initial_value": 40.0,
                  "increment": 0.0,
                  "decrement": -0.25,
                  "minimum": 10.0,
                  "maximum": 40.0
                }
              }
            },
            "environment": {
              "blocks": [
                {
                  "environment_statistics": {
                    "patches": [
                      {
                        "label": "reset",
                        "state_index": 0,
                        "odor_specification": {
                          "index": 1,
                          "concentration": 1.0
                        },
                        "reward_specification": {
                          "operant_logic": {
                            "is_operant": false,
                            "stop_duration": 0.2,
                            "time_to_collect_reward": 1000000.0,
                            "grace_distance_threshold": 10.0
                          },
                          "delay": {
                            "family": "Exponential",
                            "distribution_parameters": {
                              "family": "Exponential",
                              "rate": 1.0
                            },
                            "truncation_parameters": {
                              "is_truncated": true,
                              "min": 0.0,
                              "max": 10.0
                            },
                            "scaling_parameters": {
                              "scale": 1.0,
                              "offset": 0.0
                            }
                          },
                          "amount": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 1.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "probability": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 1.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "available": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 5.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "reward_function": [
                            {
                              "function_type": "PatchRewardFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "ClampedRateFunction",
                                "minimum": 0.0,
                                "maximum": 5.0,
                                "rate": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": -1.0
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnReward"
                            },
                            {
                              "function_type": "OnThisPatchEntryFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "SetValueFunction",
                                "value": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": 0.1
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnThisPatchEntry"
                            }
                          ]
                        },
                        "patch_virtual_sites_generator": {
                          "inter_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "InterSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "inter_patch": {
                            "render_specification": {
                              "contrast": 1.0
                            },
                            "label": "InterPatch",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "post_patch": {
                            "render_specification": {
                              "contrast": 1.0
                            },
                            "label": "PostPatch",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.5
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "reward_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "RewardSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          }
                        },
                        "patch_terminators": [
                          {
                            "terminator_type": "OnRejection",
                            "count": {
                              "family": "Scalar",
                              "distribution_parameters": {
                                "family": "Scalar",
                                "value": 1.0
                              },
                              "truncation_parameters": null,
                              "scaling_parameters": null
                            }
                          }
                        ]
                      },
                      {
                        "label": "slow-replenish",
                        "state_index": 1,
                        "odor_specification": {
                          "index": 0,
                          "concentration": 1.0
                        },
                        "reward_specification": {
                          "operant_logic": {
                            "is_operant": false,
                            "stop_duration": 0.2,
                            "time_to_collect_reward": 1000000.0,
                            "grace_distance_threshold": 10.0
                          },
                          "delay": {
                            "family": "Exponential",
                            "distribution_parameters": {
                              "family": "Exponential",
                              "rate": 1.0
                            },
                            "truncation_parameters": {
                              "is_truncated": true,
                              "min": 0.0,
                              "max": 10.0
                            },
                            "scaling_parameters": {
                              "scale": 1.0,
                              "offset": 0.0
                            }
                          },
                          "amount": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 5.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "probability": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 1.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "available": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 5.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "reward_function": [
                            {
                              "function_type": "PatchRewardFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "ClampedRateFunction",
                                "minimum": 0.0,
                                "maximum": 5.0,
                                "rate": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": -1.0
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnReward"
                            },
                            {
                              "function_type": "OutsideRewardFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "ClampedRateFunction",
                                "minimum": 0.0,
                                "maximum": 5.0,
                                "rate": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": 1.0
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnTime",
                              "delay": 0.0
                            }
                          ]
                        },
                        "patch_virtual_sites_generator": {
                          "inter_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "InterSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "inter_patch": {
                            "render_specification": {
                              "contrast": 1.0
                            },
                            "label": "InterPatch",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "post_patch": null,
                          "reward_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "RewardSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          }
                        },
                        "patch_terminators": [
                          {
                            "terminator_type": "OnRejection",
                            "count": {
                              "family": "Scalar",
                              "distribution_parameters": {
                                "family": "Scalar",
                                "value": 1.0
                              },
                              "truncation_parameters": null,
                              "scaling_parameters": null
                            }
                          }
                        ]
                      }
                    ],
                    "transition_matrix": [
                      [
                        1.0,
                        0.0
                      ],
                      [
                        0.0,
                        1.0
                      ]
                    ],
                    "first_state_occupancy": [
                      1.0,
                      0.0
                    ]
                  },
                  "end_conditions": []
                }
              ],
              "sampling_mode": "Random"
            },
            "operation_control": {
              "movable_spout_control": {
                "enabled": true,
                "time_to_collect_after_reward": 1.0,
                "retracting_distance": 2000.0
              },
              "odor_control": {
                "valve_max_open_time": 100000.0,
                "target_total_flow": 1000.0,
                "use_channel_3_as_carrier": true,
                "target_odor_flow": 100.0
              },
              "position_control": {
                "gain": {
                  "x": 1.0,
                  "y": 1.0,
                  "z": 1.0
                },
                "initial_position": {
                  "x": 0.0,
                  "y": 2.56,
                  "z": 0.0
                },
                "frequency_filter_cutoff": 5.0,
                "velocity_threshold": 40.0
              },
              "audio_control": {
                "duration": 0.2,
                "frequency": 1000.0
              }
            }
          },
          "version": "0.6.0",
          "stage_name": null
        },
        "graph": {
          "nodes": {
            "0": "aind_behavior_vr_foraging_curricula.template.stages.p_set_mode_from_metric1"
          },
          "graph": {
            "0": []
          }
        },
        "start_policies": [
          "aind_behavior_vr_foraging_curricula.template.stages.p_set_mode_from_metric1"
        ],
        "metrics_provider": "aind_behavior_vr_foraging_curricula.template.metrics.metrics_from_dataset"
      },
      "1": {
        "name": "stage_b",
        "task": {
          "name": "AindVrForaging",
          "description": "",
          "task_parameters": {
            "rng_seed": 2.0,
            "aind_behavior_services_pkg_version": "0.12.0",
            "updaters": {
              "RewardDelayOffset": {
                "operation": "Offset",
                "parameters": {
                  "initial_value": 0.0,
                  "increment": 0.005,
                  "decrement": 0.0,
                  "minimum": 0.0,
                  "maximum": 0.2
                }
              },
              "StopDurationOffset": {
                "operation": "Offset",
                "parameters": {
                  "initial_value": 0.0,
                  "increment": 0.005,
                  "decrement": 0.0,
                  "minimum": 0.0,
                  "maximum": 0.5
                }
              },
              "StopVelocityThreshold": {
                "operation": "OffsetPercentage",
                "parameters": {
                  "initial_value": 40.0,
                  "increment": 0.0,
                  "decrement": -0.25,
                  "minimum": 10.0,
                  "maximum": 40.0
                }
              }
            },
            "environment": {
              "blocks": [
                {
                  "environment_statistics": {
                    "patches": [
                      {
                        "label": "reset",
                        "state_index": 0,
                        "odor_specification": {
                          "index": 1,
                          "concentration": 1.0
                        },
                        "reward_specification": {
                          "operant_logic": {
                            "is_operant": false,
                            "stop_duration": 0.2,
                            "time_to_collect_reward": 1000000.0,
                            "grace_distance_threshold": 10.0
                          },
                          "delay": {
                            "family": "Exponential",
                            "distribution_parameters": {
                              "family": "Exponential",
                              "rate": 1.0
                            },
                            "truncation_parameters": {
                              "is_truncated": true,
                              "min": 0.0,
                              "max": 10.0
                            },
                            "scaling_parameters": {
                              "scale": 1.0,
                              "offset": 0.0
                            }
                          },
                          "amount": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 1.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "probability": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 1.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "available": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 5.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "reward_function": [
                            {
                              "function_type": "PatchRewardFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "ClampedRateFunction",
                                "minimum": 0.0,
                                "maximum": 5.0,
                                "rate": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": -1.0
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnReward"
                            },
                            {
                              "function_type": "OnThisPatchEntryFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "SetValueFunction",
                                "value": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": 0.1
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnThisPatchEntry"
                            }
                          ]
                        },
                        "patch_virtual_sites_generator": {
                          "inter_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "InterSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "inter_patch": {
                            "render_specification": {
                              "contrast": 1.0
                            },
                            "label": "InterPatch",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "post_patch": {
                            "render_specification": {
                              "contrast": 1.0
                            },
                            "label": "PostPatch",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.5
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "reward_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "RewardSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          }
                        },
                        "patch_terminators": [
                          {
                            "terminator_type": "OnRejection",
                            "count": {
                              "family": "Scalar",
                              "distribution_parameters": {
                                "family": "Scalar",
                                "value": 1.0
                              },
                              "truncation_parameters": null,
                              "scaling_parameters": null
                            }
                          }
                        ]
                      },
                      {
                        "label": "slow-replenish",
                        "state_index": 1,
                        "odor_specification": {
                          "index": 0,
                          "concentration": 1.0
                        },
                        "reward_specification": {
                          "operant_logic": {
                            "is_operant": false,
                            "stop_duration": 0.2,
                            "time_to_collect_reward": 1000000.0,
                            "grace_distance_threshold": 10.0
                          },
                          "delay": {
                            "family": "Exponential",
                            "distribution_parameters": {
                              "family": "Exponential",
                              "rate": 1.0
                            },
                            "truncation_parameters": {
                              "is_truncated": true,
                              "min": 0.0,
                              "max": 10.0
                            },
                            "scaling_parameters": {
                              "scale": 1.0,
                              "offset": 0.0
                            }
                          },
                          "amount": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 5.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "probability": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 1.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "available": {
                            "family": "Scalar",
                            "distribution_parameters": {
                              "family": "Scalar",
                              "value": 5.0
                            },
                            "truncation_parameters": null,
                            "scaling_parameters": null
                          },
                          "reward_function": [
                            {
                              "function_type": "PatchRewardFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "ClampedRateFunction",
                                "minimum": 0.0,
                                "maximum": 5.0,
                                "rate": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": -1.0
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnReward"
                            },
                            {
                              "function_type": "OutsideRewardFunction",
                              "amount": null,
                              "probability": null,
                              "available": {
                                "function_type": "ClampedRateFunction",
                                "minimum": 0.0,
                                "maximum": 5.0,
                                "rate": {
                                  "family": "Scalar",
                                  "distribution_parameters": {
                                    "family": "Scalar",
                                    "value": 1.0
                                  },
                                  "truncation_parameters": null,
                                  "scaling_parameters": null
                                }
                              },
                              "rule": "OnTime",
                              "delay": 0.0
                            }
                          ]
                        },
                        "patch_virtual_sites_generator": {
                          "inter_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "InterSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "inter_patch": {
                            "render_specification": {
                              "contrast": 1.0
                            },
                            "label": "InterPatch",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          },
                          "post_patch": null,
                          "reward_site": {
                            "render_specification": {
                              "contrast": 0.5
                            },
                            "label": "RewardSite",
                            "length_distribution": {
                              "family": "Exponential",
                              "distribution_parameters": {
                                "family": "Exponential",
                                "rate": 1.0
                              },
                              "truncation_parameters": {
                                "is_truncated": true,
                                "min": 0.0,
                                "max": 10.0
                              },
                              "scaling_parameters": {
                                "scale": 1.0,
                                "offset": 0.0
                              }
                            },
                            "treadmill_specification": {
                              "friction": {
                                "family": "Scalar",
                                "distribution_parameters": {
                                  "family": "Scalar",
                                  "value": 0.0
                                },
                                "truncation_parameters": null,
                                "scaling_parameters": null
                              }
                            }
                          }
                        },
                        "patch_terminators": [
                          {
                            "terminator_type": "OnRejection",
                            "count": {
                              "family": "Scalar",
                              "distribution_parameters": {
                                "family": "Scalar",
                                "value": 1.0
                              },
                              "truncation_parameters": null,
                              "scaling_parameters": null
                            }
                          }
                        ]
                      }
                    ],
                    "transition_matrix": [
                      [
                        1.0,
                        0.0
                      ],
                      [
                        0.0,
                        1.0
                      ]
                    ],
                    "first_state_occupancy": [
                      1.0,
                      0.0
                    ]
                  },
                  "end_conditions": []
                }
              ],
              "sampling_mode": "Random"
            },
            "operation_control": {
              "movable_spout_control": {
                "enabled": true,
                "time_to_collect_after_reward": 1.0,
                "retracting_distance": 2000.0
              },
              "odor_control": {
                "valve_max_open_time": 100000.0,
                "target_total_flow": 1000.0,
                "use_channel_3_as_carrier": true,
                "target_odor_flow": 100.0
              },
              "position_control": {
                "gain": {
                  "x": 1.0,
                  "y": 1.0,
                  "z": 1.0
                },
                "initial_position": {
                  "x": 0.0,
                  "y": 2.56,
                  "z": 0.0
                },
                "frequency_filter_cutoff": 5.0,
                "velocity_threshold": 40.0
              },
              "audio_control": {
                "duration": 0.2,
                "frequency": 1000.0
              }
            }
          },
          "version": "0.6.0",
          "stage_name": null
        },
        "graph": {
          "nodes": {},
          "graph": {}
        },
        "start_policies": [],
        "metrics_provider": "aind_behavior_vr_foraging_curricula.template.metrics.metrics_from_dataset"
      }
    },
    "graph": {
      "0": [
        [
          "aind_behavior_vr_foraging_curricula.template.curriculum.st_s_stage_a_s_stage_b",
          1
        ]
      ],
      "1": []
    }
  }
}