{ "$defs": { "AindBehaviorSessionModel": { "properties": { "aind_behavior_services_pkg_version": { "default": "0.12.0", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "title": "aind_behavior_services package version", "type": "string" }, "version": { "const": "0.3.1", "default": "0.3.1", "title": "Version", "type": "string" }, "experiment": { "description": "Name of the experiment", "title": "Experiment", "type": "string" }, "experimenter": { "default": [], "description": "Name of the experimenter", "items": { "type": "string" }, "title": "Experimenter", "type": "array" }, "date": { "description": "Date of the experiment", "format": "date-time", "title": "Date", "type": "string" }, "root_path": { "description": "Root path where data will be logged", "title": "Root Path", "type": "string" }, "session_name": { "default": null, "description": "Name of the session. This will be used to create a folder in the root path.", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Name" }, "subject": { "description": "Name of the subject", "title": "Subject", "type": "string" }, "experiment_version": { "description": "Version of the experiment", "title": "Experiment Version", "type": "string" }, "notes": { "default": null, "description": "Notes about the experiment", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" }, "commit_hash": { "default": null, "description": "Commit hash of the repository", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Commit Hash" }, "allow_dirty_repo": { "default": false, "description": "Allow running from a dirty repository", "title": "Allow Dirty Repo", "type": "boolean" }, "skip_hardware_validation": { "default": false, "description": "Skip hardware validation", "title": "Skip Hardware Validation", "type": "boolean" } }, "required": [ "experiment", "root_path", "subject", "experiment_version" ], "title": "AindBehaviorSessionModel", "type": "object" }, "AindManipulatorAdditionalSettings": { "description": "Additional settings for the manipulator device", "properties": { "spout_axis": { "$ref": "#/$defs/Axis", "default": 2, "description": "Spout axis" } }, "title": "AindManipulatorAdditionalSettings", "type": "object" }, "AindManipulatorCalibration": { "description": "Aind manipulator calibration class", "properties": { "device_name": { "default": "AindManipulator", "description": "Must match a device name in rig/instrument", "title": "Device name", "type": "string" }, "input": { "$ref": "#/$defs/AindManipulatorCalibrationInput", "title": "Input of the calibration" }, "output": { "$ref": "#/$defs/AindManipulatorCalibrationOutput", "title": "Output of the calibration." }, "date": { "default": null, "oneOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Date" }, "description": { "const": "Calibration of the load cells system", "default": "Calibration of the load cells system", "title": "Description", "type": "string" }, "notes": { "default": null, "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" } }, "required": [ "input", "output" ], "title": "AindManipulatorCalibration", "type": "object" }, "AindManipulatorCalibrationInput": { "properties": { "full_step_to_mm": { "$ref": "#/$defs/ManipulatorPosition", "default": { "x": 0.01, "y1": 0.01, "y2": 0.01, "z": 0.01 }, "title": "Full step to mm. Used to convert steps to SI Units" }, "axis_configuration": { "default": [ { "axis": 2, "step_acceleration_interval": 100, "step_interval": 100, "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, "max_limit": 25.0, "min_limit": -0.01 }, { "axis": 3, "step_acceleration_interval": 100, "step_interval": 100, "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, "max_limit": 25.0, "min_limit": -0.01 }, { "axis": 1, "step_acceleration_interval": 100, "step_interval": 100, "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, "max_limit": 25.0, "min_limit": -0.01 }, { "axis": 4, "step_acceleration_interval": 100, "step_interval": 100, "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, "max_limit": 25.0, "min_limit": -0.01 } ], "items": { "$ref": "#/$defs/AxisConfiguration" }, "title": "Axes configuration. Only the axes that are configured will be enabled.", "type": "array" }, "homing_order": { "default": [ 2, 3, 1, 4 ], "items": { "$ref": "#/$defs/Axis" }, "title": "Homing order", "type": "array" }, "initial_position": { "$ref": "#/$defs/ManipulatorPosition", "default": { "x": 0.0, "y1": 0.0, "y2": 0.0, "z": 0.0 } } }, "title": "AindManipulatorCalibrationInput", "type": "object" }, "AindManipulatorCalibrationOutput": { "properties": {}, "title": "AindManipulatorCalibrationOutput", "type": "object" }, "AindManipulatorDevice": { "description": "Overrides the default settings for the manipulator device by spec'ing additional_settings field", "properties": { "device_type": { "const": "StepperDriver", "default": "StepperDriver", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "$ref": "#/$defs/AindManipulatorAdditionalSettings", "default": { "spout_axis": 2 }, "description": "Additional settings" }, "calibration": { "default": null, "oneOf": [ { "$ref": "#/$defs/AindManipulatorCalibration" }, { "type": "null" } ], "title": "Calibration of the manipulator" }, "who_am_i": { "const": 1130, "default": 1130, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "AindManipulatorDevice", "type": "object" }, "AindVrForagingRig": { "properties": { "aind_behavior_services_pkg_version": { "default": "0.12.0", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "title": "aind_behavior_services package version", "type": "string" }, "version": { "const": "0.6.0-rc1", "default": "0.6.0-rc1", "title": "Version", "type": "string" }, "computer_name": { "description": "Computer name", "title": "Computer Name", "type": "string" }, "rig_name": { "description": "Rig name", "title": "Rig Name", "type": "string" }, "triggered_camera_controller": { "$ref": "#/$defs/CameraController_SpinnakerCamera_", "description": "Required camera controller to triggered cameras." }, "monitoring_camera_controller": { "default": null, "description": "Optional camera controller for monitoring cameras.", "oneOf": [ { "$ref": "#/$defs/CameraController_WebCamera_" }, { "type": "null" } ] }, "harp_behavior": { "$ref": "#/$defs/HarpBehavior", "description": "Harp behavior" }, "harp_olfactometer": { "$ref": "#/$defs/Olfactometer", "description": "Harp olfactometer" }, "harp_lickometer": { "$ref": "#/$defs/HarpLicketySplit", "description": "Harp lickometer" }, "harp_clock_generator": { "$ref": "#/$defs/HarpWhiteRabbit", "description": "Harp clock generator" }, "harp_analog_input": { "default": null, "description": "Harp analog input", "oneOf": [ { "$ref": "#/$defs/HarpAnalogInput" }, { "type": "null" } ] }, "harp_treadmill": { "$ref": "#/$defs/Treadmill", "description": "Harp treadmill" }, "harp_sniff_detector": { "default": null, "description": "Sniff detector settings", "oneOf": [ { "$ref": "#/$defs/HarpSniffDetector" }, { "type": "null" } ] }, "harp_environment_sensor": { "default": null, "description": "Environment sensor", "oneOf": [ { "$ref": "#/$defs/HarpEnvironmentSensor" }, { "type": "null" } ] }, "manipulator": { "$ref": "#/$defs/AindManipulatorDevice", "description": "Manipulator" }, "screen": { "$ref": "#/$defs/Screen", "default": { "device_type": "Screen", "device_name": "Screen", "additional_settings": null, "calibration": { "center": { "extrinsics": { "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, "translation": { "x": 0.0, "y": 1.309016, "z": -13.27 } }, "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 } }, "left": { "extrinsics": { "rotation": { "x": 0.0, "y": 1.0472, "z": 0.0 }, "translation": { "x": -16.6917756, "y": 1.309016, "z": -3.575264 } }, "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 } }, "right": { "extrinsics": { "rotation": { "x": 0.0, "y": -1.0472, "z": 0.0 }, "translation": { "x": 16.6917756, "y": 1.309016, "z": -3.575264 } }, "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 } } }, "display_index": 1, "target_render_frequency": 60.0, "target_update_frequency": 120.0, "texture_assets_directory": "Textures", "brightness": 0.0, "contrast": 1.0 }, "description": "Screen settings" }, "calibration": { "$ref": "#/$defs/RigCalibration", "description": "Calibration models" } }, "required": [ "rig_name", "triggered_camera_controller", "harp_behavior", "harp_olfactometer", "harp_lickometer", "harp_clock_generator", "harp_treadmill", "manipulator", "calibration" ], "title": "AindVrForagingRig", "type": "object" }, "AindVrForagingTaskLogic": { "additionalProperties": false, "description": "Main task logic model for the AIND VR Foraging task.\n\nThis is the top-level class that encapsulates the complete task logic\nspecification for the virtual reality foraging behavioral experiment.\nIt includes all task parameters, environment specifications, and control settings.", "properties": { "name": { "const": "AindVrForaging", "default": "AindVrForaging", "description": "Name of the task logic", "title": "Name", "type": "string" }, "description": { "default": "", "description": "Description of the task.", "title": "Description", "type": "string" }, "task_parameters": { "$ref": "#/$defs/AindVrForagingTaskParameters", "description": "Parameters of the task logic" }, "version": { "const": "0.6.0-rc1", "default": "0.6.0-rc1", "title": "Version", "type": "string" }, "stage_name": { "default": null, "description": "Optional stage name the `Task` object instance represents.", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stage Name" } }, "required": [ "task_parameters" ], "title": "AindVrForagingTaskLogic", "type": "object" }, "AindVrForagingTaskParameters": { "additionalProperties": true, "description": "Complete parameter specification for the AIND VR Foraging task.\n\nThis class contains all configurable parameters for the VR foraging task,\nincluding environment structure, task mode settings, operation control,\nand numerical updaters for dynamic parameter modification.", "properties": { "rng_seed": { "default": null, "description": "Seed of the random number generator", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { "default": "0.12.0", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "title": "aind_behavior_services package version", "type": "string" }, "updaters": { "additionalProperties": { "$ref": "#/$defs/NumericalUpdater" }, "description": "Look-up table for numeric updaters", "propertyNames": { "$ref": "#/$defs/UpdaterTarget" }, "title": "Updaters", "type": "object" }, "environment": { "$ref": "#/$defs/BlockStructure", "description": "Statistics of the environment" }, "operation_control": { "$ref": "#/$defs/OperationControl", "description": "Control of the operation" } }, "required": [ "environment", "operation_control" ], "title": "AindVrForagingTaskParameters", "type": "object" }, "AudioControl": { "description": "Controls audio feedback parameters for the task.\n\nThis class manages audio cue generation including tone duration and frequency\nfor auditory feedback during the behavioral task.", "properties": { "duration": { "default": 0.2, "description": "Duration", "minimum": 0, "title": "Duration", "type": "number" }, "frequency": { "default": 1000, "description": "Frequency (Hz) of the audio cue", "maximum": 9999, "minimum": 100, "title": "Frequency", "type": "number" } }, "title": "AudioControl", "type": "object" }, "Axis": { "description": "Motor axis available", "enum": [ 0, 1, 2, 3, 4 ], "title": "Axis", "type": "integer", "x-enumNames": [ "None", "X", "Y1", "Y2", "Z" ] }, "AxisConfiguration": { "description": "Axis configuration", "properties": { "axis": { "$ref": "#/$defs/Axis", "title": "Axis to be configured" }, "step_acceleration_interval": { "default": 100, "description": "Acceleration of the step interval in microseconds", "maximum": 2000, "minimum": 2, "title": "Acceleration", "type": "integer" }, "step_interval": { "default": 100, "description": "Step interval in microseconds.", "maximum": 20000, "minimum": 100, "title": "Step interval", "type": "integer" }, "microstep_resolution": { "$ref": "#/$defs/MicrostepResolution", "default": 0, "title": "Microstep resolution" }, "maximum_step_interval": { "default": 2000, "maximum": 20000, "minimum": 100, "title": "Configures the time between step motor pulses (us) used when starting or stopping a movement", "type": "integer" }, "motor_operation_mode": { "$ref": "#/$defs/MotorOperationMode", "default": 0, "title": "Motor operation mode" }, "max_limit": { "default": 25, "title": "Maximum limit in SI units. A value of 0 disables this limit.", "type": "number" }, "min_limit": { "default": -0.01, "title": "Minimum limit in SI units. A value of 0 disables this limit.", "type": "number" } }, "required": [ "axis" ], "title": "AxisConfiguration", "type": "object" }, "BaseModel": { "properties": {}, "title": "BaseModel", "type": "object" }, "BetaDistribution": { "properties": { "family": { "const": "Beta", "default": "Beta", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/BetaDistributionParameters", "default": { "family": "Beta", "alpha": 5.0, "beta": 5.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "BetaDistribution", "type": "object" }, "BetaDistributionParameters": { "properties": { "family": { "const": "Beta", "default": "Beta", "title": "Family", "type": "string" }, "alpha": { "default": 5, "description": "Alpha parameter of the distribution", "minimum": 0, "title": "Alpha", "type": "number" }, "beta": { "default": 5, "description": "Beta parameter of the distribution", "minimum": 0, "title": "Beta", "type": "number" } }, "title": "BetaDistributionParameters", "type": "object" }, "BinomialDistribution": { "properties": { "family": { "const": "Binomial", "default": "Binomial", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/BinomialDistributionParameters", "default": { "family": "Binomial", "n": 1, "p": 0.5 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "BinomialDistribution", "type": "object" }, "BinomialDistributionParameters": { "properties": { "family": { "const": "Binomial", "default": "Binomial", "title": "Family", "type": "string" }, "n": { "default": 1, "description": "Number of trials", "minimum": 0, "title": "N", "type": "integer" }, "p": { "default": 0.5, "description": "Probability of success", "maximum": 1, "minimum": 0, "title": "P", "type": "number" } }, "title": "BinomialDistributionParameters", "type": "object" }, "Block": { "description": "Configuration for a single experimental block.\n\nA block represents a period of the experiment with specific environment\nstatistics and ending conditions. Each block defines the environmental\nparameters and termination criteria for that experimental phase.", "properties": { "environment_statistics": { "$ref": "#/$defs/EnvironmentStatistics", "description": "Statistics of the environment" }, "end_conditions": { "default": [], "description": "List of end conditions that must be true for the block to end.", "items": { "$ref": "#/$defs/BlockEndCondition" }, "title": "End Conditions", "type": "array" } }, "required": [ "environment_statistics" ], "title": "Block", "type": "object" }, "BlockEndCondition": { "discriminator": { "mapping": { "Choice": "#/$defs/BlockEndConditionChoice", "Distance": "#/$defs/BlockEndConditionDistance", "Duration": "#/$defs/BlockEndConditionDuration", "PatchCount": "#/$defs/BlockEndConditionPatchCount", "Reward": "#/$defs/BlockEndConditionReward" }, "propertyName": "condition_type" }, "oneOf": [ { "$ref": "#/$defs/BlockEndConditionDuration" }, { "$ref": "#/$defs/BlockEndConditionDistance" }, { "$ref": "#/$defs/BlockEndConditionChoice" }, { "$ref": "#/$defs/BlockEndConditionReward" }, { "$ref": "#/$defs/BlockEndConditionPatchCount" } ] }, "BlockEndConditionChoice": { "description": "Block end condition based on number of choices made.\n\nThis condition ends a block after the animal has made a specified number\nof choices (e.g., patch visits or reward attempts).", "properties": { "condition_type": { "const": "Choice", "default": "Choice", "title": "Condition Type", "type": "string" }, "value": { "$ref": "#/$defs/Distribution", "description": "Number of choices after which the block ends." } }, "required": [ "value" ], "title": "BlockEndConditionChoice", "type": "object" }, "BlockEndConditionDistance": { "description": "Block end condition based on distance traveled.\n\nThis condition ends a block after the animal has traveled a specified distance.", "properties": { "condition_type": { "const": "Distance", "default": "Distance", "title": "Condition Type", "type": "string" }, "value": { "$ref": "#/$defs/Distribution", "description": "Distance after which the block ends." } }, "required": [ "value" ], "title": "BlockEndConditionDistance", "type": "object" }, "BlockEndConditionDuration": { "description": "Block end condition based on time duration.\n\nThis condition ends a block after a specified amount of time has elapsed.", "properties": { "condition_type": { "const": "Duration", "default": "Duration", "title": "Condition Type", "type": "string" }, "value": { "$ref": "#/$defs/Distribution", "description": "Time after which the block ends." } }, "required": [ "value" ], "title": "BlockEndConditionDuration", "type": "object" }, "BlockEndConditionPatchCount": { "description": "Block end condition based on number of patches visited.\n\nThis condition ends a block after the animal has visited a specified\nnumber of unique patches.", "properties": { "condition_type": { "const": "PatchCount", "default": "PatchCount", "title": "Condition Type", "type": "string" }, "value": { "$ref": "#/$defs/Distribution", "description": "Number of patches after which the block will end." } }, "required": [ "value" ], "title": "BlockEndConditionPatchCount", "type": "object" }, "BlockEndConditionReward": { "description": "Block end condition based on number of rewards obtained.\n\nThis condition ends a block after the animal has obtained a specified\nnumber of rewards.", "properties": { "condition_type": { "const": "Reward", "default": "Reward", "title": "Condition Type", "type": "string" }, "value": { "$ref": "#/$defs/Distribution", "description": "Number of rewards after which the block ends." } }, "required": [ "value" ], "title": "BlockEndConditionReward", "type": "object" }, "BlockStructure": { "description": "Structure defining the sequence and sampling of experimental blocks.\n\nThis class manages multiple experimental blocks and determines how they\nare presented during the experiment (sequentially or randomly).", "properties": { "blocks": { "description": "Statistics of the environment", "items": { "$ref": "#/$defs/Block" }, "minItems": 1, "title": "Blocks", "type": "array" }, "sampling_mode": { "default": "Sequential", "description": "Sampling mode of the blocks.", "enum": [ "Random", "Sequential" ], "title": "Sampling Mode", "type": "string" } }, "required": [ "blocks" ], "title": "BlockStructure", "type": "object" }, "CameraController_SpinnakerCamera_": { "properties": { "device_type": { "const": "CameraController", "default": "CameraController", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "cameras": { "additionalProperties": { "$ref": "#/$defs/SpinnakerCamera" }, "description": "Cameras to be instantiated", "title": "Cameras", "type": "object" }, "frame_rate": { "default": 30, "description": "Frame rate of the trigger to all cameras", "oneOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "title": "Frame Rate" } }, "required": [ "cameras" ], "title": "CameraController[SpinnakerCamera]", "type": "object" }, "CameraController_WebCamera_": { "properties": { "device_type": { "const": "CameraController", "default": "CameraController", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "cameras": { "additionalProperties": { "$ref": "#/$defs/WebCamera" }, "description": "Cameras to be instantiated", "title": "Cameras", "type": "object" }, "frame_rate": { "default": 30, "description": "Frame rate of the trigger to all cameras", "oneOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "title": "Frame Rate" } }, "required": [ "cameras" ], "title": "CameraController[WebCamera]", "type": "object" }, "ClampedMultiplicativeRateFunction": { "description": "A patch update function that applies multiplicative rate updates with bounds.\n\nUpdate in the form of x = clamp(x * rate ** tick_value).\nThis function multiplies the current value by the rate parameter, maintaining\nthe result within specified minimum and maximum bounds. Useful for percentage-\nbased changes and exponential decay/growth patterns.", "properties": { "function_type": { "const": "ClampedMultiplicativeRateFunction", "default": "ClampedMultiplicativeRateFunction", "title": "Function Type", "type": "string" }, "minimum": { "default": 0, "description": "Minimum value of the rate", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Minimum" }, "maximum": { "description": "Maximum value of the rate", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Maximum" }, "rate": { "$ref": "#/$defs/Distribution", "description": "Rate of the replenishment, in value per rule unit." } }, "required": [ "maximum", "rate" ], "title": "ClampedMultiplicativeRateFunction", "type": "object" }, "ClampedRateFunction": { "description": "A patch update function that applies a clamped rate-based update.\n\nUpdate in the form of x = clamp(x + rate * tick_value).\nThis function updates values at a specified rate while keeping results within\ndefined minimum and maximum bounds. The rate is applied per rule unit (e.g.,\ntime, distance, choices).", "properties": { "function_type": { "const": "ClampedRateFunction", "default": "ClampedRateFunction", "title": "Function Type", "type": "string" }, "minimum": { "default": 0, "description": "Minimum value of the rate", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Minimum" }, "maximum": { "description": "Maximum value of the rate", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Maximum" }, "rate": { "$ref": "#/$defs/Distribution", "description": "Rate of the replenishment, in value per rule unit." } }, "required": [ "maximum", "rate" ], "title": "ClampedRateFunction", "type": "object" }, "ConnectedClockOutput": { "properties": { "target_device": { "default": null, "description": "Optional device name to provide user additional information", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Device" }, "output_channel": { "description": "Output channel", "minimum": 0, "title": "Output Channel", "type": "integer" } }, "required": [ "output_channel" ], "title": "ConnectedClockOutput", "type": "object" }, "CtcmFunction": { "description": "A patch update function that uses a continuous-time Markov chain (CTMC)\nto determine patch updates based on a transition probability matrix.\n\nIt expects a transition matrix that takes the current value of the variable\nof interest (e.g. Probability), and outputs a new value based on the defined\nstochastic process in the transition matrix.", "properties": { "function_type": { "const": "CtcmFunction", "default": "CtcmFunction", "title": "Function Type", "type": "string" }, "transition_matrix": { "description": "Transition matrix between states", "items": { "items": { "minimum": 0, "type": "number" }, "type": "array" }, "title": "Transition Matrix", "type": "array" }, "rho": { "description": "The underlying value goverining the stochastic process", "title": "Rho", "type": "number" }, "minimum": { "default": 1, "description": "Maximum value after update", "title": "Minimum", "type": "number" }, "maximum": { "default": 0, "description": "Minimum value after update", "title": "Maximum", "type": "number" } }, "required": [ "transition_matrix", "rho" ], "title": "CtcmFunction", "type": "object" }, "DisplayCalibration": { "properties": { "intrinsics": { "$ref": "#/$defs/DisplayIntrinsics", "default": { "frame_width": 1920, "frame_height": 1080, "display_width": 20.0, "display_height": 15.0 }, "description": "Intrinsics" }, "extrinsics": { "$ref": "#/$defs/DisplayExtrinsics", "default": { "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, "translation": { "x": 0.0, "y": 1.309016, "z": -13.27 } }, "description": "Extrinsics" } }, "title": "DisplayCalibration", "type": "object" }, "DisplayExtrinsics": { "properties": { "rotation": { "$ref": "#/$defs/aind_behavior_services__rig__visual_stimulation__Vector3", "default": { "x": 0.0, "y": 0.0, "z": 0.0 }, "description": "Rotation vector (radians)" }, "translation": { "$ref": "#/$defs/aind_behavior_services__rig__visual_stimulation__Vector3", "default": { "x": 0.0, "y": 1.309016, "z": -13.27 }, "description": "Translation (in cm)" } }, "title": "DisplayExtrinsics", "type": "object" }, "DisplayIntrinsics": { "properties": { "frame_width": { "default": 1920, "description": "Frame width (px)", "minimum": 0, "title": "Frame Width", "type": "integer" }, "frame_height": { "default": 1080, "description": "Frame height (px)", "minimum": 0, "title": "Frame Height", "type": "integer" }, "display_width": { "default": 20, "description": "Display width (cm)", "minimum": 0, "title": "Display Width", "type": "number" }, "display_height": { "default": 15, "description": "Display width (cm)", "minimum": 0, "title": "Display Height", "type": "number" } }, "title": "DisplayIntrinsics", "type": "object" }, "DisplaysCalibration": { "properties": { "left": { "$ref": "#/$defs/DisplayCalibration", "default": { "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 }, "extrinsics": { "rotation": { "x": 0.0, "y": 1.0472, "z": 0.0 }, "translation": { "x": -16.6917756, "y": 1.309016, "z": -3.575264 } } }, "description": "Left display calibration" }, "center": { "$ref": "#/$defs/DisplayCalibration", "default": { "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 }, "extrinsics": { "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, "translation": { "x": 0.0, "y": 1.309016, "z": -13.27 } } }, "description": "Center display calibration" }, "right": { "$ref": "#/$defs/DisplayCalibration", "default": { "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 }, "extrinsics": { "rotation": { "x": 0.0, "y": -1.0472, "z": 0.0 }, "translation": { "x": 16.6917756, "y": 1.309016, "z": -3.575264 } } }, "description": "Right display calibration" } }, "title": "DisplaysCalibration", "type": "object" }, "Distribution": { "description": "Available distributions", "discriminator": { "mapping": { "Beta": "#/$defs/BetaDistribution", "Binomial": "#/$defs/BinomialDistribution", "Exponential": "#/$defs/ExponentialDistribution", "Gamma": "#/$defs/GammaDistribution", "LogNormal": "#/$defs/LogNormalDistribution", "Normal": "#/$defs/NormalDistribution", "Pdf": "#/$defs/PdfDistribution", "Poisson": "#/$defs/PoissonDistribution", "Scalar": "#/$defs/Scalar", "Uniform": "#/$defs/UniformDistribution" }, "propertyName": "family" }, "oneOf": [ { "$ref": "#/$defs/Scalar" }, { "$ref": "#/$defs/NormalDistribution" }, { "$ref": "#/$defs/LogNormalDistribution" }, { "$ref": "#/$defs/ExponentialDistribution" }, { "$ref": "#/$defs/UniformDistribution" }, { "$ref": "#/$defs/PoissonDistribution" }, { "$ref": "#/$defs/BinomialDistribution" }, { "$ref": "#/$defs/BetaDistribution" }, { "$ref": "#/$defs/GammaDistribution" }, { "$ref": "#/$defs/PdfDistribution" } ], "title": "Distribution" }, "EnvironmentStatistics": { "description": "Defines the statistical properties of the foraging environment.\n\nThis class specifies the patches available in the environment, their transition\nprobabilities, and initial state occupancy. It forms the core specification\nfor the foraging environment structure.", "properties": { "patches": { "description": "List of patches", "items": { "$ref": "#/$defs/Patch" }, "minItems": 1, "title": "Patches", "type": "array" }, "transition_matrix": { "default": [ [ 1 ] ], "description": "Determines the transition probabilities between patches", "items": { "items": { "minimum": 0, "type": "number" }, "type": "array" }, "title": "Transition Matrix", "type": "array" }, "first_state_occupancy": { "default": null, "description": "Determines the first state the animal will be in. If null, it will be randomly drawn.", "oneOf": [ { "items": { "minimum": 0, "type": "number" }, "type": "array" }, { "type": "null" } ], "title": "First State Occupancy" } }, "title": "EnvironmentStatistics", "type": "object" }, "ExponentialDistribution": { "properties": { "family": { "const": "Exponential", "default": "Exponential", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/ExponentialDistributionParameters", "default": { "family": "Exponential", "rate": 0.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "ExponentialDistribution", "type": "object" }, "ExponentialDistributionParameters": { "properties": { "family": { "const": "Exponential", "default": "Exponential", "title": "Family", "type": "string" }, "rate": { "default": 0, "description": "Rate parameter of the distribution", "minimum": 0, "title": "Rate", "type": "number" } }, "title": "ExponentialDistributionParameters", "type": "object" }, "GammaDistribution": { "properties": { "family": { "const": "Gamma", "default": "Gamma", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/GammaDistributionParameters", "default": { "family": "Gamma", "shape": 1.0, "rate": 1.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "GammaDistribution", "type": "object" }, "GammaDistributionParameters": { "properties": { "family": { "const": "Gamma", "default": "Gamma", "title": "Family", "type": "string" }, "shape": { "default": 1, "description": "Shape parameter of the distribution", "minimum": 0, "title": "Shape", "type": "number" }, "rate": { "default": 1, "description": "Rate parameter of the distribution", "minimum": 0, "title": "Rate", "type": "number" } }, "title": "GammaDistributionParameters", "type": "object" }, "HarpAnalogInput": { "properties": { "device_type": { "const": "AnalogInput", "default": "AnalogInput", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "who_am_i": { "const": 1236, "default": 1236, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "HarpAnalogInput", "type": "object" }, "HarpBehavior": { "properties": { "device_type": { "const": "Behavior", "default": "Behavior", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "who_am_i": { "const": 1216, "default": 1216, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "HarpBehavior", "type": "object" }, "HarpEnvironmentSensor": { "properties": { "device_type": { "const": "EnvironmentSensor", "default": "EnvironmentSensor", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "who_am_i": { "const": 1405, "default": 1405, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "HarpEnvironmentSensor", "type": "object" }, "HarpLicketySplit": { "properties": { "device_type": { "const": "LicketySplit", "default": "LicketySplit", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "who_am_i": { "const": 1400, "default": 1400, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "HarpLicketySplit", "type": "object" }, "HarpSniffDetector": { "properties": { "device_type": { "const": "SniffDetector", "default": "SniffDetector", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "who_am_i": { "const": 1401, "default": 1401, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "HarpSniffDetector", "type": "object" }, "HarpWhiteRabbit": { "properties": { "device_type": { "const": "WhiteRabbit", "default": "WhiteRabbit", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "who_am_i": { "const": 1404, "default": 1404, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" }, "connected_clock_outputs": { "default": [], "description": "Connected clock outputs", "items": { "$ref": "#/$defs/ConnectedClockOutput" }, "title": "Connected Clock Outputs", "type": "array" } }, "required": [ "port_name" ], "title": "HarpWhiteRabbit", "type": "object" }, "LogNormalDistribution": { "properties": { "family": { "const": "LogNormal", "default": "LogNormal", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/LogNormalDistributionParameters", "default": { "family": "LogNormal", "mean": 0.0, "std": 0.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "LogNormalDistribution", "type": "object" }, "LogNormalDistributionParameters": { "properties": { "family": { "const": "LogNormal", "default": "LogNormal", "title": "Family", "type": "string" }, "mean": { "default": 0, "description": "Mean of the distribution", "title": "Mean", "type": "number" }, "std": { "default": 0, "description": "Standard deviation of the distribution", "title": "Std", "type": "number" } }, "title": "LogNormalDistributionParameters", "type": "object" }, "LookupTableFunction": { "description": "A patch update function that uses lookup table interpolation.\n\nUpdate in the form of x = lut_values[lerp(lut_keys, lut_values, tick_value)].\nThis function maps input values to output values using a lookup table with\nlinear interpolation between defined points. Useful for complex, non-linear\nreward schedules or parameter updates.", "properties": { "function_type": { "const": "LookupTableFunction", "default": "LookupTableFunction", "title": "Function Type", "type": "string" }, "lut_keys": { "description": "List of keys of the lookup table", "items": { "type": "number" }, "minItems": 1, "title": "Lut Keys", "type": "array" }, "lut_values": { "description": "List of values of the lookup table", "items": { "type": "number" }, "minItems": 1, "title": "Lut Values", "type": "array" } }, "required": [ "lut_keys", "lut_values" ], "title": "LookupTableFunction", "type": "object" }, "ManipulatorPosition": { "properties": { "x": { "title": "X coordinate", "type": "number" }, "y1": { "title": "Y1 coordinate", "type": "number" }, "y2": { "title": "Y2 coordinate", "type": "number" }, "z": { "title": "Z coordinate", "type": "number" } }, "required": [ "x", "y1", "y2", "z" ], "title": "ManipulatorPosition", "type": "object" }, "Measurement": { "description": "Input for water valve calibration class", "properties": { "valve_open_interval": { "description": "Time between two consecutive valve openings (s)", "exclusiveMinimum": 0, "title": "Valve open interval", "type": "number" }, "valve_open_time": { "description": "Valve open interval (s)", "exclusiveMinimum": 0, "title": "Valve open time", "type": "number" }, "water_weight": { "description": "Weight of water delivered (g)", "items": { "exclusiveMinimum": 0, "type": "number" }, "minItems": 1, "title": "Water weight", "type": "array" }, "repeat_count": { "description": "Number of times the valve opened.", "minimum": 0, "title": "Repeat count", "type": "integer" } }, "required": [ "valve_open_interval", "valve_open_time", "water_weight", "repeat_count" ], "title": "Measurement", "type": "object" }, "MicrostepResolution": { "enum": [ 0, 1, 2, 3 ], "title": "MicrostepResolution", "type": "integer", "x-enumNames": [ "Microstep8", "Microstep16", "Microstep32", "Microstep64" ] }, "MotorOperationMode": { "enum": [ 0, 1 ], "title": "MotorOperationMode", "type": "integer", "x-enumNames": [ "Quiet", "Dynamic" ] }, "MovableSpoutControl": { "description": "Controls the movable water spout behavior for reward delivery.\n\nThis class configures how the movable spout operates, including when it's\nenabled, timing for reward collection, and retraction distance for operant\nconditioning protocols.", "properties": { "enabled": { "default": false, "description": "Whether the movable spout is enabled", "title": "Enabled", "type": "boolean" }, "time_to_collect_after_reward": { "default": 1, "description": "Time (s) to collect after reward", "minimum": 0, "title": "Time To Collect After Reward", "type": "number" }, "retracting_distance": { "default": 0, "description": "The distance, relative to the default position, the spout will be retracted by", "minimum": 0, "title": "Retracting Distance", "type": "number" } }, "title": "MovableSpoutControl", "type": "object" }, "NormalDistribution": { "properties": { "family": { "const": "Normal", "default": "Normal", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/NormalDistributionParameters", "default": { "family": "Normal", "mean": 0.0, "std": 0.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "NormalDistribution", "type": "object" }, "NormalDistributionParameters": { "properties": { "family": { "const": "Normal", "default": "Normal", "title": "Family", "type": "string" }, "mean": { "default": 0, "description": "Mean of the distribution", "title": "Mean", "type": "number" }, "std": { "default": 0, "description": "Standard deviation of the distribution", "title": "Std", "type": "number" } }, "title": "NormalDistributionParameters", "type": "object" }, "NumericalUpdater": { "description": "A numerical updater that modifies task parameters during execution.\n\nThis class combines an operation type with parameters to define how values\nshould be updated dynamically during the task, enabling adaptive behavior\nbased on animal performance or other criteria.", "properties": { "operation": { "$ref": "#/$defs/NumericalUpdaterOperation", "default": "None", "description": "Operation to perform on the parameter" }, "parameters": { "$ref": "#/$defs/NumericalUpdaterParameters", "default": { "initial_value": 0.0, "increment": 0.0, "decrement": 0.0, "minimum": 0.0, "maximum": 0.0 }, "description": "Parameters of the updater" } }, "title": "NumericalUpdater", "type": "object" }, "NumericalUpdaterOperation": { "description": "Enumeration of operations that can be performed by numerical updaters.\n\nThese operations define how parameter values are modified during task execution,\nallowing for dynamic adjustment of task parameters based on performance or other criteria.", "enum": [ "None", "Offset", "Gain", "Set", "OffsetPercentage" ], "title": "NumericalUpdaterOperation", "type": "string" }, "NumericalUpdaterParameters": { "description": "Parameters that control how numerical updates are applied to task values.\n\nThese parameters define the bounds and increments for updating numerical values\nduring task execution, ensuring values stay within acceptable ranges.", "properties": { "initial_value": { "default": 0.0, "description": "Initial value of the parameter", "title": "Initial Value", "type": "number" }, "increment": { "default": 0.0, "description": "Value to increment the parameter by", "title": "Increment", "type": "number" }, "decrement": { "default": 0.0, "description": "Value to decrement the parameter by", "title": "Decrement", "type": "number" }, "minimum": { "default": 0.0, "description": "Minimum value of the parameter", "title": "Minimum", "type": "number" }, "maximum": { "default": 0.0, "description": "Minimum value of the parameter", "title": "Maximum", "type": "number" } }, "title": "NumericalUpdaterParameters", "type": "object" }, "OdorControl": { "description": "Controls the odor delivery system parameters.\n\nThis class manages the olfactory stimulus delivery system, including flow rates,\nvalve timing, and carrier gas configuration. It ensures proper odor concentration\nand delivery timing for the behavioral task.", "properties": { "valve_max_open_time": { "default": 10, "description": "Maximum time (s) the valve can be open continuously", "minimum": 0, "title": "Valve Max Open Time", "type": "number" }, "target_total_flow": { "default": 1000, "description": "Target total flow (ml/s) of the odor mixture", "maximum": 1000, "minimum": 100, "title": "Target Total Flow", "type": "number" }, "use_channel_3_as_carrier": { "default": true, "description": "Whether to use channel 3 as carrier", "title": "Use Channel 3 As Carrier", "type": "boolean" }, "target_odor_flow": { "default": 100, "description": "Target odor flow (ml/s) in the odor mixture", "maximum": 100, "minimum": 0, "title": "Target Odor Flow", "type": "number" } }, "title": "OdorControl", "type": "object" }, "OdorSpecification": { "description": "Specifies odor delivery parameters for olfactory cues in the VR environment.\n\nOdors can be delivered at specific locations to provide additional sensory\ninformation for navigation and foraging decisions.", "properties": { "index": { "description": "Index of the odor to be used", "maximum": 3, "minimum": 0, "title": "Index", "type": "integer" }, "concentration": { "default": 1, "description": "Concentration of the odor", "maximum": 1, "minimum": 0, "title": "Concentration", "type": "number" } }, "required": [ "index" ], "title": "OdorSpecification", "type": "object" }, "Olfactometer": { "properties": { "device_type": { "const": "Olfactometer", "default": "Olfactometer", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "oneOf": [ { "$ref": "#/$defs/OlfactometerCalibration" }, { "type": "null" } ], "title": "Calibration of the olfactometer" }, "who_am_i": { "const": 1140, "default": 1140, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "Olfactometer", "type": "object" }, "OlfactometerCalibration": { "description": "Olfactometer calibration class", "properties": { "device_name": { "default": "Olfactometer", "description": "Name of the device being calibrated", "title": "Device name", "type": "string" }, "input": { "$ref": "#/$defs/OlfactometerCalibrationInput", "title": "Input of the calibration" }, "output": { "$ref": "#/$defs/OlfactometerCalibrationOutput", "title": "Output of the calibration" }, "date": { "default": null, "oneOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Date" }, "description": { "const": "Calibration of the harp olfactometer device", "default": "Calibration of the harp olfactometer device", "title": "Description", "type": "string" }, "notes": { "default": null, "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" } }, "required": [ "input", "output" ], "title": "OlfactometerCalibration", "type": "object" }, "OlfactometerCalibrationInput": { "properties": { "channel_config": { "additionalProperties": { "$ref": "#/$defs/OlfactometerChannelConfig" }, "default": {}, "description": "Configuration of olfactometer channels", "propertyNames": { "$ref": "#/$defs/OlfactometerChannel" }, "title": "Channel Config", "type": "object" } }, "title": "OlfactometerCalibrationInput", "type": "object" }, "OlfactometerCalibrationOutput": { "properties": {}, "title": "OlfactometerCalibrationOutput", "type": "object" }, "OlfactometerChannel": { "description": "Harp Olfactometer available channel", "enum": [ 0, 1, 2, 3 ], "title": "OlfactometerChannel", "type": "integer", "x-enumNames": [ "Channel0", "Channel1", "Channel2", "Channel3" ] }, "OlfactometerChannelConfig": { "properties": { "channel_index": { "title": "Channel index", "type": "integer" }, "channel_type": { "$ref": "#/$defs/OlfactometerChannelType", "default": "Odor", "title": "Channel type" }, "flow_rate_capacity": { "default": 100, "enum": [ 100, 1000 ], "title": "Flow capacity. mL/min", "type": "integer" }, "flow_rate": { "default": 100, "maximum": 100, "title": "Target flow rate. mL/min. If channel_type == CARRIER, this value is ignored.", "type": "number" }, "odorant": { "default": null, "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Odorant name" }, "odorant_dilution": { "default": null, "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Odorant dilution (%v/v)" } }, "required": [ "channel_index" ], "title": "OlfactometerChannelConfig", "type": "object" }, "OlfactometerChannelType": { "description": "Channel type", "enum": [ "Odor", "Carrier" ], "title": "OlfactometerChannelType", "type": "string" }, "OnThisPatchEntryFunction": { "description": "A RewardFunction that is applied when the animal enters the patch.", "properties": { "function_type": { "const": "OnThisPatchEntryFunction", "default": "OnThisPatchEntryFunction", "title": "Function Type", "type": "string" }, "amount": { "default": null, "description": "Defines the amount of reward replenished per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "probability": { "default": null, "description": "Defines the probability of reward replenished per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "available": { "default": null, "description": "Defines the amount of reward available replenished in the patch per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "rule": { "const": "OnThisPatchEntry", "default": "OnThisPatchEntry", "description": "Rule to trigger reward function", "title": "Rule", "type": "string" } }, "title": "OnThisPatchEntryFunction", "type": "object" }, "OperantLogic": { "description": "Defines operant conditioning logic for reward delivery in the VR foraging task.\n\nThis class controls when and how rewards are delivered based on animal behavior,\nimplementing stopping requirements, collection timeouts, and spatial constraints.", "properties": { "is_operant": { "default": true, "description": "Will the trial implement operant logic", "title": "Is Operant", "type": "boolean" }, "stop_duration": { "default": 0, "description": "Duration (s) the animal must stop for to lock its choice", "minimum": 0, "title": "Stop Duration", "type": "number" }, "time_to_collect_reward": { "default": 100000, "description": "Time(s) the animal has to collect the reward", "minimum": 0, "title": "Time To Collect Reward", "type": "number" }, "grace_distance_threshold": { "default": 10, "description": "Virtual distance (cm) the animal must be within to not abort the current choice", "minimum": 0, "title": "Grace Distance Threshold", "type": "number" } }, "title": "OperantLogic", "type": "object" }, "OperationControl": { "description": "Master control class for all operational hardware systems.\n\nThis class aggregates all the hardware control specifications including\nmovable spout, odor delivery, position tracking, and audio systems.\nIt provides a centralized configuration point for all task hardware.", "properties": { "movable_spout_control": { "$ref": "#/$defs/MovableSpoutControl", "default": { "enabled": false, "time_to_collect_after_reward": 1.0, "retracting_distance": 0.0 }, "description": "Control of the movable spout" }, "odor_control": { "$ref": "#/$defs/OdorControl", "default": { "valve_max_open_time": 10.0, "target_total_flow": 1000.0, "use_channel_3_as_carrier": true, "target_odor_flow": 100.0 }, "description": "Control of the odor" }, "position_control": { "$ref": "#/$defs/PositionControl", "default": { "gain": { "x": 1.0, "y": 1.0, "z": 1.0 }, "initial_position": { "x": 0.0, "y": 2.56, "z": 0.0 }, "frequency_filter_cutoff": 0.5, "velocity_threshold": 1.0 }, "description": "Control of the position" }, "audio_control": { "$ref": "#/$defs/AudioControl", "default": { "duration": 0.2, "frequency": 1000.0 }, "description": "Control of the audio" } }, "title": "OperationControl", "type": "object" }, "OutsideRewardFunction": { "description": "A RewardFunction that is applied when the animal is outside of the patch.", "properties": { "function_type": { "const": "OutsideRewardFunction", "default": "OutsideRewardFunction", "title": "Function Type", "type": "string" }, "amount": { "default": null, "description": "Defines the amount of reward replenished per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "probability": { "default": null, "description": "Defines the probability of reward replenished per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "available": { "default": null, "description": "Defines the amount of reward available replenished in the patch per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "rule": { "default": "OnTime", "description": "Rule to trigger reward function", "enum": [ "OnTime", "OnDistance", "OnTimeAccumulated", "OnDistanceAccumulated" ], "title": "Rule", "type": "string" }, "delay": { "default": 0, "description": "Delay (s) before the replenishment starts after the rule is triggered.", "minimum": 0, "title": "Delay", "type": "number" } }, "title": "OutsideRewardFunction", "type": "object" }, "Patch": { "description": "Represents statistics for a patch in the VR foraging task.", "properties": { "label": { "default": "", "description": "Label of the patch", "title": "Label", "type": "string" }, "state_index": { "default": 0, "description": "Index of the state", "minimum": 0, "title": "State Index", "type": "integer" }, "odor_specification": { "default": null, "description": "The optional odor specification of the patch", "oneOf": [ { "$ref": "#/$defs/OdorSpecification" }, { "type": "null" } ] }, "reward_specification": { "$ref": "#/$defs/RewardSpecification", "default": { "operant_logic": null, "delay": { "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "amount": { "distribution_parameters": { "family": "Scalar", "value": 5.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "probability": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "available": { "distribution_parameters": { "family": "Scalar", "value": 5.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "reward_function": [] }, "description": "The optional reward specification of the patch" }, "patch_virtual_sites_generator": { "$ref": "#/$defs/PatchVirtualSitesGenerator", "default": { "inter_site": { "label": "InterSite", "length_distribution": { "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "render_specification": { "contrast": null }, "treadmill_specification": null }, "inter_patch": { "label": "InterPatch", "length_distribution": { "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "render_specification": { "contrast": null }, "treadmill_specification": null }, "post_patch": null, "reward_site": { "label": "RewardSite", "length_distribution": { "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "render_specification": { "contrast": null }, "treadmill_specification": null } }, "description": "Virtual site generation specification" }, "patch_terminators": { "default": [ { "terminator_type": "OnRejection", "count": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null } } ], "description": "The optional termination specification of the patch", "items": { "$ref": "#/$defs/PatchTerminator" }, "title": "Patch Terminators", "type": "array" } }, "title": "Patch", "type": "object" }, "PatchRewardFunction": { "description": "A RewardFunction that is applied when the animal is inside the patch.\nFor the purposes of this function post-patch and inter-patch are excluded.", "properties": { "function_type": { "const": "PatchRewardFunction", "default": "PatchRewardFunction", "title": "Function Type", "type": "string" }, "amount": { "default": null, "description": "Defines the amount of reward replenished per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "probability": { "default": null, "description": "Defines the probability of reward replenished per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "available": { "default": null, "description": "Defines the amount of reward available replenished in the patch per rule unit.", "oneOf": [ { "$ref": "#/$defs/PatchUpdateFunction" }, { "type": "null" } ] }, "rule": { "default": "OnReward", "description": "Rule to trigger reward function", "enum": [ "OnReward", "OnChoice", "OnTime", "OnDistance", "OnChoiceAccumulated", "OnRewardAccumulated", "OnTimeAccumulated", "OnDistanceAccumulated" ], "title": "Rule", "type": "string" } }, "title": "PatchRewardFunction", "type": "object" }, "PatchTerminator": { "discriminator": { "mapping": { "OnChoice": "#/$defs/PatchTerminatorOnChoice", "OnDistance": "#/$defs/PatchTerminatorOnDistance", "OnRejection": "#/$defs/PatchTerminatorOnRejection", "OnReward": "#/$defs/PatchTerminatorOnReward", "OnTime": "#/$defs/PatchTerminatorOnTime" }, "propertyName": "terminator_type" }, "oneOf": [ { "$ref": "#/$defs/PatchTerminatorOnRejection" }, { "$ref": "#/$defs/PatchTerminatorOnChoice" }, { "$ref": "#/$defs/PatchTerminatorOnReward" }, { "$ref": "#/$defs/PatchTerminatorOnTime" }, { "$ref": "#/$defs/PatchTerminatorOnDistance" } ] }, "PatchTerminatorOnChoice": { "description": "Terminates the patch after \"count\" choices.", "properties": { "terminator_type": { "const": "OnChoice", "default": "OnChoice", "title": "Terminator Type", "type": "string" }, "count": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Number of choices the animal must make to terminate the patch" } }, "title": "PatchTerminatorOnChoice", "type": "object" }, "PatchTerminatorOnDistance": { "description": "Terminates the patch after a \"count\" distance.", "properties": { "terminator_type": { "const": "OnDistance", "default": "OnDistance", "title": "Terminator Type", "type": "string" }, "count": { "$ref": "#/$defs/Distribution", "description": "Number of distance units to wait before terminating the patch" } }, "required": [ "count" ], "title": "PatchTerminatorOnDistance", "type": "object" }, "PatchTerminatorOnRejection": { "description": "Terminates the patch after a reward site where the animal does not stop in \"count\" reward sites.", "properties": { "terminator_type": { "const": "OnRejection", "default": "OnRejection", "title": "Terminator Type", "type": "string" }, "count": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Number of reward sites the animal must not stop in to terminate the patch" } }, "title": "PatchTerminatorOnRejection", "type": "object" }, "PatchTerminatorOnReward": { "description": "Terminates the patch after \"count\" rewards.", "properties": { "terminator_type": { "const": "OnReward", "default": "OnReward", "title": "Terminator Type", "type": "string" }, "count": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Number of rewards the animal must collect to terminate the patch" } }, "title": "PatchTerminatorOnReward", "type": "object" }, "PatchTerminatorOnTime": { "description": "Terminates the patch after a \"count\" seconds.", "properties": { "terminator_type": { "const": "OnTime", "default": "OnTime", "title": "Terminator Type", "type": "string" }, "count": { "$ref": "#/$defs/Distribution", "description": "Number of seconds to wait before terminating the patch" } }, "required": [ "count" ], "title": "PatchTerminatorOnTime", "type": "object" }, "PatchUpdateFunction": { "discriminator": { "mapping": { "ClampedMultiplicativeRateFunction": "#/$defs/ClampedMultiplicativeRateFunction", "ClampedRateFunction": "#/$defs/ClampedRateFunction", "CtcmFunction": "#/$defs/CtcmFunction", "LookupTableFunction": "#/$defs/LookupTableFunction", "SetValueFunction": "#/$defs/SetValueFunction" }, "propertyName": "function_type" }, "oneOf": [ { "$ref": "#/$defs/ClampedRateFunction" }, { "$ref": "#/$defs/ClampedMultiplicativeRateFunction" }, { "$ref": "#/$defs/SetValueFunction" }, { "$ref": "#/$defs/LookupTableFunction" }, { "$ref": "#/$defs/CtcmFunction" } ] }, "PatchVirtualSitesGenerator": { "description": "Defines the generation specifications for all virtual site types within a patch.\n\nThis class contains generators for all the different types of virtual sites\nthat can appear within a patch environment. Each generator defines how sites\nof that type should be created with their properties and distributions.", "properties": { "inter_site": { "$ref": "#/$defs/VirtualSiteGenerator", "default": { "render_specification": { "contrast": null }, "label": "InterSite", "length_distribution": { "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "treadmill_specification": null }, "description": "Generator of the inter-site virtual sites" }, "inter_patch": { "$ref": "#/$defs/VirtualSiteGenerator", "default": { "render_specification": { "contrast": null }, "label": "InterPatch", "length_distribution": { "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "treadmill_specification": null }, "description": "Generator of the inter-patch virtual sites" }, "post_patch": { "default": null, "description": "Generator of the post-patch virtual sites", "oneOf": [ { "$ref": "#/$defs/VirtualSiteGenerator" }, { "type": "null" } ] }, "reward_site": { "$ref": "#/$defs/VirtualSiteGenerator", "default": { "render_specification": { "contrast": null }, "label": "RewardSite", "length_distribution": { "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "treadmill_specification": null }, "description": "Generator of the reward-site virtual sites" } }, "title": "PatchVirtualSitesGenerator", "type": "object" }, "PdfDistribution": { "properties": { "family": { "const": "Pdf", "default": "Pdf", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/PdfDistributionParameters", "default": { "family": "Pdf", "pdf": [ 1.0 ], "index": [ 0.0 ] }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "PdfDistribution", "type": "object" }, "PdfDistributionParameters": { "properties": { "family": { "const": "Pdf", "default": "Pdf", "title": "Family", "type": "string" }, "pdf": { "default": [ 1 ], "description": "The probability density function", "items": { "minimum": 0, "type": "number" }, "title": "Pdf", "type": "array" }, "index": { "default": [ 0 ], "description": "The index of the probability density function", "items": { "type": "number" }, "title": "Index", "type": "array" } }, "title": "PdfDistributionParameters", "type": "object" }, "PoissonDistribution": { "properties": { "family": { "const": "Poisson", "default": "Poisson", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/PoissonDistributionParameters", "default": { "family": "Poisson", "rate": 1.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "PoissonDistribution", "type": "object" }, "PoissonDistributionParameters": { "properties": { "family": { "const": "Poisson", "default": "Poisson", "title": "Family", "type": "string" }, "rate": { "default": 1, "description": "Rate parameter of the Poisson process that generates the distribution", "minimum": 0, "title": "Rate", "type": "number" } }, "title": "PoissonDistributionParameters", "type": "object" }, "PositionControl": { "description": "Controls the position tracking and movement detection parameters.\n\nThis class manages the position control system including coordinate transformations,\ninitial positioning, signal filtering, and movement detection thresholds for the\nvirtual reality foraging task.", "properties": { "gain": { "$ref": "#/$defs/aind_behavior_vr_foraging__task_logic__Vector3", "default": { "x": 1.0, "y": 1.0, "z": 1.0 }, "description": "Gain of the position control." }, "initial_position": { "$ref": "#/$defs/aind_behavior_vr_foraging__task_logic__Vector3", "default": { "x": 0.0, "y": 2.56, "z": 0.0 }, "description": "Gain of the position control." }, "frequency_filter_cutoff": { "default": 0.5, "description": "Cutoff frequency (Hz) of the low-pass filter used to filter the velocity signal.", "maximum": 100, "minimum": 0, "title": "Frequency Filter Cutoff", "type": "number" }, "velocity_threshold": { "default": 1, "description": "Threshold (cm/s) of the velocity signal used to detect when the animal is moving.", "minimum": 0, "title": "Velocity Threshold", "type": "number" } }, "title": "PositionControl", "type": "object" }, "Rect": { "properties": { "x": { "default": 0, "description": "X coordinate of the top-left corner", "minimum": 0, "title": "X", "type": "integer" }, "y": { "default": 0, "description": "Y coordinate of the top-left corner", "minimum": 0, "title": "Y", "type": "integer" }, "width": { "default": 0, "description": "Width of the rectangle", "minimum": 0, "title": "Width", "type": "integer" }, "height": { "default": 0, "description": "Height of the rectangle", "minimum": 0, "title": "Height", "type": "integer" } }, "title": "Rect", "type": "object" }, "RenderSpecification": { "description": "Defines visual rendering properties for virtual environment elements.\n\nThis class controls the visual appearance of virtual sites, including\ncontrast and other visual parameters that affect how elements are rendered\nin the VR environment.", "properties": { "contrast": { "default": null, "description": "Contrast of the texture", "oneOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "title": "Contrast" } }, "title": "RenderSpecification", "type": "object" }, "RewardFunction": { "discriminator": { "mapping": { "OnThisPatchEntryFunction": "#/$defs/OnThisPatchEntryFunction", "OutsideRewardFunction": "#/$defs/OutsideRewardFunction", "PatchRewardFunction": "#/$defs/PatchRewardFunction" }, "propertyName": "function_type" }, "oneOf": [ { "$ref": "#/$defs/PatchRewardFunction" }, { "$ref": "#/$defs/OutsideRewardFunction" }, { "$ref": "#/$defs/OnThisPatchEntryFunction" } ] }, "RewardSpecification": { "description": "Specifies reward parameters and behavior for a patch.\n\nThis class defines all aspects of reward delivery including amounts, probabilities,\ndelays, operant logic, and dynamic update functions. It serves as the complete\nspecification for how rewards are managed in a given Patch.", "properties": { "operant_logic": { "default": null, "description": "The optional operant logic of the reward", "oneOf": [ { "$ref": "#/$defs/OperantLogic" }, { "type": "null" } ] }, "delay": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "The optional distribution where the delay to reward will be drawn from" }, "amount": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 5.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Initial amount of reward in microliters" }, "probability": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Initial probability of reward delivery" }, "available": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 5.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Initial amount of reward available in the patch in microliters" }, "reward_function": { "default": [], "description": "Reward function of the patch", "items": { "$ref": "#/$defs/RewardFunction" }, "title": "Reward Function", "type": "array" } }, "title": "RewardSpecification", "type": "object" }, "RigCalibration": { "description": "Container class for calibration models. In a future release these will be moved to the respective devices", "properties": { "water_valve": { "$ref": "#/$defs/WaterValveCalibration", "description": "Water valve calibration" } }, "required": [ "water_valve" ], "title": "RigCalibration", "type": "object" }, "Scalar": { "properties": { "family": { "const": "Scalar", "default": "Scalar", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/ScalarDistributionParameter", "default": { "family": "Scalar", "value": 0.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "const": null, "default": null, "title": "Truncation Parameters", "type": "null" }, "scaling_parameters": { "const": null, "default": null, "title": "Scaling Parameters", "type": "null" } }, "title": "Scalar", "type": "object" }, "ScalarDistributionParameter": { "properties": { "family": { "const": "Scalar", "default": "Scalar", "title": "Family", "type": "string" }, "value": { "default": 0, "description": "The static value of the distribution", "title": "Value", "type": "number" } }, "title": "ScalarDistributionParameter", "type": "object" }, "ScalingParameters": { "properties": { "scale": { "default": 1, "description": "Scaling factor to apply on the sampled distribution", "title": "Scale", "type": "number" }, "offset": { "default": 0, "description": "Offset factor to apply on the sampled distribution", "title": "Offset", "type": "number" } }, "title": "ScalingParameters", "type": "object" }, "Screen": { "properties": { "device_type": { "const": "Screen", "default": "Screen", "description": "Device type", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "$ref": "#/$defs/DisplaysCalibration", "default": { "left": { "extrinsics": { "rotation": { "x": 0.0, "y": 1.0472, "z": 0.0 }, "translation": { "x": -16.6917756, "y": 1.309016, "z": -3.575264 } }, "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 } }, "center": { "extrinsics": { "rotation": { "x": 0.0, "y": 0.0, "z": 0.0 }, "translation": { "x": 0.0, "y": 1.309016, "z": -13.27 } }, "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 } }, "right": { "extrinsics": { "rotation": { "x": 0.0, "y": -1.0472, "z": 0.0 }, "translation": { "x": 16.6917756, "y": 1.309016, "z": -3.575264 } }, "intrinsics": { "display_height": 15.0, "display_width": 20.0, "frame_height": 1080, "frame_width": 1920 } } }, "description": "Screen calibration" }, "display_index": { "default": 1, "description": "Display index", "title": "Display Index", "type": "integer" }, "target_render_frequency": { "default": 60, "description": "Target render frequency", "title": "Target Render Frequency", "type": "number" }, "target_update_frequency": { "default": 120, "description": "Target update frequency", "title": "Target Update Frequency", "type": "number" }, "texture_assets_directory": { "default": "Textures", "description": "Calibration directory", "title": "Texture Assets Directory", "type": "string" }, "brightness": { "default": 0, "description": "Brightness", "maximum": 1, "minimum": -1, "title": "Brightness", "type": "number" }, "contrast": { "default": 1, "description": "Contrast", "maximum": 1, "minimum": -1, "title": "Contrast", "type": "number" } }, "title": "Screen", "type": "object" }, "SetValueFunction": { "description": "A patch update function that sets the target to a specific value.\n\nUpdate in the form of x = value.\nThis function directly sets the target parameter to a value drawn from the\nspecified distribution, ignoring the current value. Useful for resetting\nparameters or applying discrete changes.", "properties": { "function_type": { "const": "SetValueFunction", "default": "SetValueFunction", "title": "Function Type", "type": "string" }, "value": { "$ref": "#/$defs/Distribution", "description": "Sets the value of the target to this value." } }, "required": [ "value" ], "title": "SetValueFunction", "type": "object" }, "Size": { "description": "Represents 2D dimensions with width and height.\n\nUsed for defining texture sizes, corridor dimensions, and other 2D measurements\nin the VR foraging environment.", "properties": { "width": { "default": 0, "description": "Width of the texture", "title": "Width", "type": "number" }, "height": { "default": 0, "description": "Height of the texture", "title": "Height", "type": "number" } }, "title": "Size", "type": "object" }, "SpinnakerCamera": { "properties": { "device_type": { "const": "SpinnakerCamera", "default": "SpinnakerCamera", "description": "Device type", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "serial_number": { "description": "Camera serial number", "title": "Serial Number", "type": "string" }, "binning": { "default": 1, "description": "Binning", "minimum": 1, "title": "Binning", "type": "integer" }, "color_processing": { "default": "Default", "description": "Color processing", "enum": [ "Default", "NoColorProcessing" ], "title": "Color Processing", "type": "string" }, "exposure": { "default": 1000, "description": "Exposure time", "minimum": 100, "title": "Exposure", "type": "integer" }, "gain": { "default": 0, "description": "Gain", "minimum": 0, "title": "Gain", "type": "number" }, "gamma": { "default": null, "description": "Gamma. If None, will disable gamma correction.", "oneOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "title": "Gamma" }, "adc_bit_depth": { "default": 0, "description": "ADC bit depth. If None will be left as default.", "oneOf": [ { "$ref": "#/$defs/SpinnakerCameraAdcBitDepth" }, { "type": "null" } ] }, "pixel_format": { "default": 0, "description": "Pixel format. If None will be left as default.", "oneOf": [ { "$ref": "#/$defs/SpinnakerCameraPixelFormat" }, { "type": "null" } ] }, "region_of_interest": { "$ref": "#/$defs/Rect", "default": { "x": 0, "y": 0, "width": 0, "height": 0 }, "description": "Region of interest" }, "video_writer": { "default": null, "description": "Video writer. If not provided, no video will be saved.", "oneOf": [ { "$ref": "#/$defs/VideoWriter" }, { "type": "null" } ] } }, "required": [ "serial_number" ], "title": "SpinnakerCamera", "type": "object" }, "SpinnakerCameraAdcBitDepth": { "enum": [ 0, 1, 2 ], "title": "SpinnakerCameraAdcBitDepth", "type": "integer", "x-enumNames": [ "Adc8bit", "Adc10bit", "Adc12bit" ] }, "SpinnakerCameraPixelFormat": { "enum": [ 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, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143 ], "title": "SpinnakerCameraPixelFormat", "type": "integer", "x-enumNames": [ "Mono8", "Mono16", "Rgb8packed", "Bayergr8", "Bayerrg8", "Bayergb8", "Bayerbg8", "Bayergr16", "Bayerrg16", "Bayergb16", "Bayerbg16", "Mono12packed", "Bayergr12packed", "Bayerrg12packed", "Bayergb12packed", "Bayerbg12packed", "Yuv411packed", "Yuv422packed", "Yuv444packed", "Mono12p", "Bayergr12p", "Bayerrg12p", "Bayergb12p", "Bayerbg12p", "Ycbcr8", "Ycbcr4228", "Ycbcr4118", "Bgr8", "Bgra8", "Mono10packed", "Bayergr10packed", "Bayerrg10packed", "Bayergb10packed", "Bayerbg10packed", "Mono10p", "Bayergr10p", "Bayerrg10p", "Bayergb10p", "Bayerbg10p", "Mono1p", "Mono2p", "Mono4p", "Mono8s", "Mono10", "Mono12", "Mono14", "Mono16s", "Mono32f", "Bayerbg10", "Bayerbg12", "Bayergb10", "Bayergb12", "Bayergr10", "Bayergr12", "Bayerrg10", "Bayerrg12", "Rgba8", "Rgba10", "Rgba10p", "Rgba12", "Rgba12p", "Rgba14", "Rgba16", "Rgb8", "Rgb8Planar", "Rgb10", "Rgb10Planar", "Rgb10p", "Rgb10p32", "Rgb12", "Rgb12Planar", "Rgb12p", "Rgb14", "Rgb16", "Rgb16s", "Rgb32f", "Rgb16Planar", "Rgb565p", "Bgra10", "Bgra10p", "Bgra12", "Bgra12p", "Bgra14", "Bgra16", "Rgba32f", "Bgr10", "Bgr10p", "Bgr12", "Bgr12p", "Bgr14", "Bgr16", "Bgr565p", "R8", "R10", "R12", "R16", "G8", "G10", "G12", "G16", "B8", "B10", "B12", "B16", "Coord3dAbc8", "Coord3dAbc8Planar", "Coord3dAbc10p", "Coord3dAbc10pPlanar", "Coord3dAbc12p", "Coord3dAbc12pPlanar", "Coord3dAbc16", "Coord3dAbc16Planar", "Coord3dAbc32f", "Coord3dAbc32fPlanar", "Coord3dAc8", "Coord3dAc8Planar", "Coord3dAc10p", "Coord3dAc10pPlanar", "Coord3dAc12p", "Coord3dAc12pPlanar", "Coord3dAc16", "Coord3dAc16Planar", "Coord3dAc32f", "Coord3dAc32fPlanar", "Coord3dA8", "Coord3dA10p", "Coord3dA12p", "Coord3dA16", "Coord3dA32f", "Coord3dB8", "Coord3dB10p", "Coord3dB12p", "Coord3dB16", "Coord3dB32f", "Coord3dC8", "Coord3dC10p", "Coord3dC12p", "Coord3dC16", "Coord3dC32f", "Confidence1", "Confidence1p", "Confidence8", "Confidence16", "Confidence32f" ] }, "Texture": { "description": "Defines visual texture properties for VR environment surfaces.\n\nTextures are applied to walls, floors, and other surfaces in the virtual\nenvironment to provide visual cues and context for the foraging task.\n\nTexture name must correspond to a valid texture asset loaded in the workflow.", "properties": { "name": { "default": "default", "description": "Name of the texture", "title": "Name", "type": "string" }, "size": { "$ref": "#/$defs/Size", "default": { "width": 40.0, "height": 40.0 }, "description": "Size of the texture" } }, "title": "Texture", "type": "object" }, "Treadmill": { "properties": { "device_type": { "const": "Treadmill", "default": "Treadmill", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "oneOf": [ { "$ref": "#/$defs/TreadmillCalibration" }, { "type": "null" } ], "title": "Calibration of the treadmill" }, "who_am_i": { "const": 1402, "default": 1402, "title": "Who Am I", "type": "integer" }, "serial_number": { "default": null, "description": "Device serial number", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Serial Number" }, "port_name": { "description": "Device port name", "title": "Port Name", "type": "string" } }, "required": [ "port_name" ], "title": "Treadmill", "type": "object" }, "TreadmillCalibration": { "description": "Treadmill calibration class", "properties": { "device_name": { "default": "Treadmill", "description": "Must match a device name in rig/instrument", "title": "Device name", "type": "string" }, "input": { "$ref": "#/$defs/TreadmillCalibrationInput", "title": "Input of the calibration" }, "output": { "$ref": "#/$defs/TreadmillCalibrationOutput", "title": "Output of the calibration." }, "date": { "default": null, "oneOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Date" }, "description": { "const": "Calibration of the treadmill system", "default": "Calibration of the treadmill system", "title": "Description", "type": "string" }, "notes": { "default": null, "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" } }, "required": [ "input", "output" ], "title": "TreadmillCalibration", "type": "object" }, "TreadmillCalibrationInput": { "properties": {}, "title": "TreadmillCalibrationInput", "type": "object" }, "TreadmillCalibrationOutput": { "properties": { "wheel_diameter": { "default": 15, "description": "Wheel diameter", "minimum": 0, "title": "Wheel Diameter", "type": "number" }, "pulses_per_revolution": { "default": 28800, "description": "Pulses per revolution", "minimum": 1, "title": "Pulses Per Revolution", "type": "integer" }, "invert_direction": { "default": false, "description": "Invert direction", "title": "Invert Direction", "type": "boolean" }, "brake_lookup_calibration": { "description": "Brake lookup calibration. Each pair of values define (input [torque], output [brake set-point U16])", "items": { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, "minItems": 2, "title": "Brake Lookup Calibration", "type": "array" } }, "required": [ "brake_lookup_calibration" ], "title": "TreadmillCalibrationOutput", "type": "object" }, "TreadmillSpecification": { "description": "Defines treadmill friction properties for virtual sites.\n\nThis class controls the friction experienced by the animal when moving\nthrough different virtual sites, allowing for varied locomotion dynamics\nacross different regions of the environment.", "properties": { "friction": { "default": null, "description": "Friction of the treadmill (0-1). The drawn value must be between 0 and 1", "oneOf": [ { "$ref": "#/$defs/Distribution" }, { "type": "null" } ] } }, "title": "TreadmillSpecification", "type": "object" }, "TruncationParameters": { "properties": { "is_truncated": { "default": false, "description": "Whether the distribution is truncated", "title": "Is Truncated", "type": "boolean" }, "min": { "default": 0, "description": "Minimum value of the sampled distribution", "title": "Min", "type": "number" }, "max": { "default": 0, "description": "Maximum value of the sampled distribution", "title": "Max", "type": "number" } }, "title": "TruncationParameters", "type": "object" }, "UniformDistribution": { "properties": { "family": { "const": "Uniform", "default": "Uniform", "title": "Family", "type": "string" }, "distribution_parameters": { "$ref": "#/$defs/UniformDistributionParameters", "default": { "family": "Uniform", "min": 0.0, "max": 0.0 }, "description": "Parameters of the distribution" }, "truncation_parameters": { "default": null, "description": "Truncation parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/TruncationParameters" }, { "type": "null" } ] }, "scaling_parameters": { "default": null, "description": "Scaling parameters of the distribution", "oneOf": [ { "$ref": "#/$defs/ScalingParameters" }, { "type": "null" } ] } }, "title": "UniformDistribution", "type": "object" }, "UniformDistributionParameters": { "properties": { "family": { "const": "Uniform", "default": "Uniform", "title": "Family", "type": "string" }, "min": { "default": 0, "description": "Minimum value of the distribution", "title": "Min", "type": "number" }, "max": { "default": 0, "description": "Maximum value of the distribution", "title": "Max", "type": "number" } }, "title": "UniformDistributionParameters", "type": "object" }, "UpdaterTarget": { "description": "Enumeration of parameters that can be targeted by numerical updaters.\n\nThese targets define which task parameters can be dynamically modified\nduring task execution to adapt to animal performance or experimental needs.", "enum": [ "StopDurationOffset", "StopVelocityThreshold", "RewardDelayOffset" ], "title": "UpdaterTarget", "type": "string" }, "VideoWriter": { "discriminator": { "mapping": { "FFMPEG": "#/$defs/VideoWriterFfmpeg", "OPENCV": "#/$defs/VideoWriterOpenCv" }, "propertyName": "video_writer_type" }, "oneOf": [ { "$ref": "#/$defs/VideoWriterFfmpeg" }, { "$ref": "#/$defs/VideoWriterOpenCv" } ] }, "VideoWriterFfmpeg": { "properties": { "video_writer_type": { "const": "FFMPEG", "default": "FFMPEG", "title": "Video Writer Type", "type": "string" }, "frame_rate": { "default": 30, "description": "Encoding frame rate", "minimum": 0, "title": "Frame Rate", "type": "integer" }, "container_extension": { "default": "mp4", "description": "Container extension", "title": "Container Extension", "type": "string" }, "output_arguments": { "default": "-vf \"scale=out_color_matrix=bt709:out_range=full,format=bgr24,scale=out_range=full\" -c:v h264_nvenc -pix_fmt yuv420p -color_range full -colorspace bt709 -color_trc linear -tune hq -preset p4 -rc vbr -cq 12 -b:v 0M -metadata author=\"Allen Institute for Neural Dynamics\" -maxrate 700M -bufsize 350M", "description": "Output arguments", "title": "Output Arguments", "type": "string" }, "input_arguments": { "default": "-colorspace bt709 -color_primaries bt709 -color_range full -color_trc linear", "description": "Input arguments", "title": "Input Arguments", "type": "string" } }, "title": "VideoWriterFfmpeg", "type": "object" }, "VideoWriterOpenCv": { "properties": { "video_writer_type": { "const": "OPENCV", "default": "OPENCV", "title": "Video Writer Type", "type": "string" }, "frame_rate": { "default": 30, "description": "Encoding frame rate", "minimum": 0, "title": "Frame Rate", "type": "integer" }, "container_extension": { "default": "avi", "description": "Container extension", "title": "Container Extension", "type": "string" }, "four_cc": { "default": "FMP4", "description": "Four character code", "title": "Four Cc", "type": "string" } }, "title": "VideoWriterOpenCv", "type": "object" }, "VirtualSite": { "description": "THIS CLASS IS NOT MEANT TO BE DIRECTLY INSTANTIATED.\nRepresents a specific virtual site instance in the VR environment.\n\nThis class defines a concrete virtual site with specific properties like position,\nlength, and associated specifications. It is typically generated from VirtualSiteGenerator\ntemplates rather than being directly instantiated in the DSL.\n\nNote: This class is primarily used internally for runtime site generation\nand is not meant to be directly instantiated in task configuration DSL.", "properties": { "id": { "default": 0, "description": "Id of the virtual site", "minimum": 0, "title": "Id", "type": "integer" }, "label": { "$ref": "#/$defs/VirtualSiteLabels", "default": "Unspecified", "description": "Label of the virtual site" }, "length": { "default": 20, "description": "Length of the virtual site (cm)", "title": "Length", "type": "number" }, "start_position": { "default": 0, "description": "Start position of the virtual site (cm)", "minimum": 0, "title": "Start Position", "type": "number" }, "odor_specification": { "default": null, "description": "The optional odor specification of the virtual site", "oneOf": [ { "$ref": "#/$defs/OdorSpecification" }, { "type": "null" } ] }, "reward_specification": { "default": null, "description": "The optional reward specification of the virtual site", "oneOf": [ { "$ref": "#/$defs/RewardSpecification" }, { "type": "null" } ] }, "render_specification": { "$ref": "#/$defs/RenderSpecification", "default": { "contrast": null }, "description": "The optional render specification of the virtual site" }, "treadmill_specification": { "default": null, "description": "Treadmill specification", "oneOf": [ { "$ref": "#/$defs/TreadmillSpecification" }, { "type": "null" } ] } }, "title": "VirtualSite", "type": "object" }, "VirtualSiteGenerator": { "description": "Generates virtual site specifications with randomized properties.\n\nThis class defines templates for creating virtual sites with variable properties\nlike length and rendering specifications. It's used to generate diverse virtual\nenvironments for the foraging task.", "properties": { "render_specification": { "$ref": "#/$defs/RenderSpecification", "default": { "contrast": null }, "description": "Contrast of the environment" }, "label": { "$ref": "#/$defs/VirtualSiteLabels", "default": "Unspecified", "description": "Label of the virtual site" }, "length_distribution": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 20.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Distribution of the length of the virtual site" }, "treadmill_specification": { "default": null, "description": "Treadmill specification", "oneOf": [ { "$ref": "#/$defs/TreadmillSpecification" }, { "type": "null" } ] } }, "title": "VirtualSiteGenerator", "type": "object" }, "VirtualSiteLabels": { "description": "Enumeration of virtual site types in the VR foraging environment.\n\nThese labels categorize different regions of the virtual environment,\neach serving different functional roles in the foraging task.", "enum": [ "Unspecified", "InterPatch", "PostPatch", "RewardSite", "InterSite" ], "title": "VirtualSiteLabels", "type": "string" }, "VisualCorridor": { "description": "Defines a visual corridor segment in the VR environment.\n\nVisual corridors are the basic building blocks of the VR environment,\ndefining spatial regions with specific textures, dimensions, and positions.", "properties": { "id": { "default": 0, "description": "Id of the visual corridor object", "minimum": 0, "title": "Id", "type": "integer" }, "size": { "$ref": "#/$defs/Size", "default": { "width": 40.0, "height": 40.0 }, "description": "Size of the corridor (cm)" }, "start_position": { "default": 0, "description": "Start position of the corridor (cm)", "minimum": 0, "title": "Start Position", "type": "number" }, "length": { "default": 120, "description": "Length of the corridor site (cm)", "minimum": 0, "title": "Length", "type": "number" }, "textures": { "$ref": "#/$defs/WallTextures", "description": "The textures of the corridor" } }, "required": [ "textures" ], "title": "VisualCorridor", "type": "object" }, "WallTextures": { "description": "Defines textures for all walls of a visual corridor in the VR environment.\n\nThis class specifies the visual appearance of corridor surfaces including\nfloor, ceiling, and side walls, allowing for complex visual environments\nwith different textures on each surface.", "properties": { "floor": { "$ref": "#/$defs/Texture", "description": "The texture of the floor" }, "ceiling": { "$ref": "#/$defs/Texture", "description": "The texture of the ceiling" }, "left": { "$ref": "#/$defs/Texture", "description": "The texture of the left" }, "right": { "$ref": "#/$defs/Texture", "description": "The texture of the right" } }, "required": [ "floor", "ceiling", "left", "right" ], "title": "WallTextures", "type": "object" }, "WaterValveCalibration": { "description": "Water valve calibration class", "properties": { "device_name": { "default": "WaterValve", "description": "Name of the device being calibrated", "title": "Device name", "type": "string" }, "input": { "$ref": "#/$defs/WaterValveCalibrationInput", "title": "Input of the calibration" }, "output": { "$ref": "#/$defs/WaterValveCalibrationOutput", "title": "Output of the calibration." }, "date": { "default": null, "oneOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Date" }, "description": { "const": "Calibration of the water valve delivery system", "default": "Calibration of the water valve delivery system", "title": "Description", "type": "string" }, "notes": { "default": null, "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" } }, "required": [ "input", "output" ], "title": "WaterValveCalibration", "type": "object" }, "WaterValveCalibrationInput": { "properties": { "measurements": { "default": [], "description": "List of measurements", "items": { "$ref": "#/$defs/Measurement" }, "title": "Measurements", "type": "array" } }, "title": "WaterValveCalibrationInput", "type": "object" }, "WaterValveCalibrationOutput": { "description": "Output for water valve calibration class", "properties": { "interval_average": { "default": null, "description": "Dictionary keyed by measured valve interval and corresponding average single event volume.", "oneOf": [ { "additionalProperties": { "exclusiveMinimum": 0, "type": "number" }, "type": "object" }, { "type": "null" } ], "title": "Interval average" }, "slope": { "description": "Slope of the linear regression : Volume(g) = Slope(g/s) * time(s) + offset(g)", "title": "Regression slope", "type": "number" }, "offset": { "description": "Offset of the linear regression : Volume(g) = Slope(g/s) * time(s) + offset(g)", "title": "Regression offset", "type": "number" }, "r2": { "default": null, "description": "R2 metric from the linear model.", "oneOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "title": "R2" }, "valid_domain": { "default": null, "description": "The optional time-intervals the calibration curve was calculated on.", "oneOf": [ { "items": { "exclusiveMinimum": 0, "type": "number" }, "minItems": 2, "type": "array" }, { "type": "null" } ], "title": "Valid domain" } }, "required": [ "slope", "offset" ], "title": "WaterValveCalibrationOutput", "type": "object" }, "WebCamera": { "properties": { "device_type": { "const": "WebCamera", "default": "WebCamera", "description": "Device type", "title": "Device Type", "type": "string" }, "device_name": { "default": null, "description": "Device name", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device Name" }, "additional_settings": { "default": null, "description": "Additional settings", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "calibration": { "default": null, "description": "Calibration", "oneOf": [ { "$ref": "#/$defs/BaseModel" }, { "type": "null" } ] }, "index": { "default": 0, "description": "Camera index", "minimum": 0, "title": "Index", "type": "integer" }, "video_writer": { "default": null, "description": "Video writer. If not provided, no video will be saved.", "oneOf": [ { "$ref": "#/$defs/VideoWriter" }, { "type": "null" } ] } }, "title": "WebCamera", "type": "object" }, "aind_behavior_services__rig__visual_stimulation__Vector3": { "properties": { "x": { "default": 0, "description": "X coordinate of the point", "title": "X", "type": "number" }, "y": { "default": 0, "description": "Y coordinate of the point", "title": "Y", "type": "number" }, "z": { "default": 0, "description": "Z coordinate of the point", "title": "Z", "type": "number" } }, "title": "Vector3", "type": "object" }, "aind_behavior_vr_foraging__task_logic__Vector3": { "description": "Represents a 3D point or vector with x, y, and z coordinates.\n\nUsed for 3D positioning and movement in the virtual reality environment,\nincluding camera positions, object locations, and 3D transformations.", "properties": { "x": { "default": 0, "description": "X coordinate of the point", "title": "X", "type": "number" }, "y": { "default": 0, "description": "Y coordinate of the point", "title": "Y", "type": "number" }, "z": { "default": 0, "description": "Z coordinate of the point", "title": "Z", "type": "number" } }, "title": "Vector3", "type": "object" } } }