{ "$defs": { "Action": { "description": "Defines an abstract class for an harvest action", "properties": { "reward_probability": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Probability of reward" }, "reward_amount": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Amount of reward to be delivered" }, "reward_delay": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Delay between successful harvest and reward delivery" }, "action_duration": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Duration that the action much stay above threshold" }, "upper_action_threshold": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 20000.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Upper bound of the cached action required to get reward." }, "lower_action_threshold": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Lower bound of the cached action required to get reward. This determines from which value the action is accumulated from." }, "is_operant": { "default": true, "description": "Whether the reward delivery is contingent on licking.", "title": "Is Operant", "type": "boolean" }, "time_to_collect": { "default": null, "description": "Time to collect the reward after it is available. If null, the reward will be available indefinitely.", "oneOf": [ { "$ref": "#/$defs/Distribution" }, { "type": "null" } ] }, "continuous_feedback": { "default": null, "description": "Continuous feedback settings", "oneOf": [ { "$ref": "#/$defs/ContinuousFeedback" }, { "type": "null" } ] } }, "title": "Action", "type": "object" }, "ActionLookUpTableFactory": { "description": "Factory for loading and configuring a look-up table image used to map action inputs to output values", "properties": { "path": { "description": "Reference to the look up table image. Should be a 1 channel image. Value = LUT[Left, Right]", "title": "Path", "type": "string" }, "offset": { "default": 0, "description": "Offset to add to the look up table value", "title": "Offset", "type": "number" }, "scale": { "default": 1, "description": "Scale to multiply the look up table value", "title": "Scale", "type": "number" }, "action0_min": { "description": "The lower value of Action0 used to linearly scale the input coordinate to.", "title": "Action0 Min", "type": "number" }, "action0_max": { "description": "The upper value of Action0 used to linearly scale the input coordinate to.", "title": "Action0 Max", "type": "number" }, "action1_min": { "description": "The lower value of Action1 used to linearly scale the input coordinate to.", "title": "Action1 Min", "type": "number" }, "action1_max": { "description": "The upper value of Action1 used to linearly scale the input coordinate to.", "title": "Action1 Max", "type": "number" } }, "required": [ "path", "action0_min", "action0_max", "action1_min", "action1_max" ], "title": "ActionLookUpTableFactory", "type": "object" }, "ActionSource": { "discriminator": { "mapping": { "BehaviorAnalogInput": "#/$defs/BehaviorAnalogInputActionSource", "LoadCell": "#/$defs/LoadCellActionSource" }, "propertyName": "action_source" }, "oneOf": [ { "$ref": "#/$defs/LoadCellActionSource" }, { "$ref": "#/$defs/BehaviorAnalogInputActionSource" } ] }, "AindBehaviorTelekinesisRig": { "properties": { "aind_behavior_services_pkg_version": { "default": "0.13.6", "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.5.2", "default": "0.5.2", "title": "Version", "type": "string" }, "computer_name": { "description": "Computer name", "title": "Computer Name", "type": "string" }, "rig_name": { "description": "Rig name", "title": "Rig Name", "type": "string" }, "data_directory": { "description": "Directory where data will be saved to", "format": "path", "title": "Data Directory", "type": "string" }, "triggered_camera_controller": { "$ref": "#/$defs/CameraController_SpinnakerCamera_", "description": "Required camera controller to triggered cameras." }, "harp_behavior": { "$ref": "#/$defs/HarpBehavior", "description": "Harp behavior" }, "harp_lickometer": { "$ref": "#/$defs/HarpLicketySplit", "description": "Harp lickometer" }, "harp_load_cells": { "default": null, "description": "Harp load cells", "oneOf": [ { "$ref": "#/$defs/LoadCells" }, { "type": "null" } ] }, "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_environment_sensor": { "default": null, "description": "Harp environment sensor", "oneOf": [ { "$ref": "#/$defs/HarpEnvironmentSensor" }, { "type": "null" } ] }, "manipulator": { "$ref": "#/$defs/AindManipulatorDevice", "description": "Manipulator" }, "calibration": { "$ref": "#/$defs/RigCalibration", "description": "General rig calibration" }, "networking": { "$ref": "#/$defs/Networking", "default": { "zmq_publisher": { "connection_string": "@tcp://localhost:5556", "topic": "telekinesis" } }, "description": "Networking settings" }, "ophys_interface": { "default": { "interface": "bergamo", "delay_trial": 0.0 }, "description": "Ophys interface", "oneOf": [ { "$ref": "#/$defs/OphysInterface" }, { "type": "null" } ] } }, "required": [ "computer_name", "rig_name", "data_directory", "triggered_camera_controller", "harp_behavior", "harp_lickometer", "harp_clock_generator", "manipulator", "calibration" ], "title": "AindBehaviorTelekinesisRig", "type": "object" }, "AindBehaviorTelekinesisTaskLogic": { "additionalProperties": false, "description": "Task logic definition for the Telekinesis behavior task", "properties": { "name": { "const": "AindTelekinesis", "default": "AindTelekinesis", "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/AindTelekinesisTaskParameters", "description": "Parameters of the task logic" }, "version": { "const": "0.5.2", "default": "0.5.2", "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": "AindBehaviorTelekinesisTaskLogic", "type": "object" }, "AindManipulatorCalibration": { "description": "AindManipulator calibration class", "properties": { "description": { "const": "AindManipulator calibration and settings", "default": "AindManipulator calibration and settings", "title": "Description", "type": "string" }, "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": "AindManipulatorCalibration", "type": "object", "x-sgen-typename": "AllenNeuralDynamics.AindManipulator.AindManipulatorCalibration" }, "AindManipulatorDevice": { "description": "Appends a task specific configuration to the base manipulator model.", "properties": { "device_type": { "const": "StepperDriver", "default": "StepperDriver", "title": "Device Type", "type": "string" }, "calibration": { "$ref": "#/$defs/AindManipulatorCalibration", "default": { "description": "AindManipulator calibration and settings", "full_step_to_mm": { "x": 0.01, "y1": 0.01, "y2": 0.01, "z": 0.01 }, "axis_configuration": [ { "axis": 2, "max_limit": 25.0, "maximum_step_interval": 2000, "microstep_resolution": 0, "min_limit": -0.01, "motor_operation_mode": 0, "step_acceleration_interval": 100, "step_interval": 100 }, { "axis": 3, "max_limit": 25.0, "maximum_step_interval": 2000, "microstep_resolution": 0, "min_limit": -0.01, "motor_operation_mode": 0, "step_acceleration_interval": 100, "step_interval": 100 }, { "axis": 1, "max_limit": 25.0, "maximum_step_interval": 2000, "microstep_resolution": 0, "min_limit": -0.01, "motor_operation_mode": 0, "step_acceleration_interval": 100, "step_interval": 100 }, { "axis": 4, "max_limit": 25.0, "maximum_step_interval": 2000, "microstep_resolution": 0, "min_limit": -0.01, "motor_operation_mode": 0, "step_acceleration_interval": 100, "step_interval": 100 } ], "homing_order": [ 2, 3, 1, 4 ], "initial_position": { "x": 0.0, "y1": 0.0, "y2": 0.0, "z": 0.0 } }, "description": "Calibration for the device." }, "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" }, "spout_axis": { "$ref": "#/$defs/Axis", "default": 2, "description": "Spout axis" } }, "required": [ "port_name" ], "title": "AindManipulatorDevice", "type": "object" }, "AindTelekinesisTaskParameters": { "additionalProperties": true, "description": "Task parameters for the Telekinesis task", "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.13.6", "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" }, "environment": { "$ref": "#/$defs/Environment", "description": "Environment settings" }, "operation_control": { "$ref": "#/$defs/OperationControl", "description": "Operation control" } }, "required": [ "environment", "operation_control" ], "title": "AindTelekinesisTaskParameters", "type": "object" }, "AudioFeedback": { "description": "Continuous feedback delivered via audio", "properties": { "continuous_feedback_mode": { "const": "Audio", "default": "Audio", "title": "Continuous Feedback Mode", "type": "string" }, "converter_lut_input": { "default": [ 0, 1 ], "description": "Normalized input domain. All values should be between 0 and 1", "items": { "maximum": 1, "minimum": 0, "type": "number" }, "minItems": 2, "title": "Converter Lut Input", "type": "array" }, "converter_lut_output": { "default": [ 0, 1 ], "description": "Output domain used to linearly interpolate the input values to the output values", "items": { "type": "number" }, "minItems": 2, "title": "Converter Lut Output", "type": "array" } }, "title": "AudioFeedback", "type": "object" }, "Axis": { "description": "Motor axis available", "enum": [ 0, 1, 2, 3, 4 ], "title": "Axis", "type": "integer", "x-enumNames": [ "None", "X", "Y1", "Y2", "Z" ], "x-sgen-typename": "AllenNeuralDynamics.AindManipulator.Axis" }, "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", "x-sgen-typename": "AllenNeuralDynamics.AindManipulator.AxisConfiguration" }, "BaseModel": { "properties": {}, "title": "BaseModel", "type": "object" }, "BehaviorAnalogInputActionSource": { "description": "Action source read from a behavior board analog input channel", "properties": { "action_source": { "const": "BehaviorAnalogInput", "default": "BehaviorAnalogInput", "title": "Action Source", "type": "string" }, "channel": { "default": 0, "description": "Index of the behavior analog input channel to use", "maximum": 1, "minimum": 0, "title": "Channel", "type": "integer" } }, "title": "BehaviorAnalogInputActionSource", "type": "object" }, "BergamoInterface": { "properties": { "interface": { "const": "bergamo", "default": "bergamo", "title": "Interface", "type": "string" }, "delay_trial": { "default": 0.0, "description": "Arbitrary delay between start trigger and trial start", "minimum": 0, "title": "Delay Trial", "type": "number" } }, "title": "BergamoInterface", "type": "object" }, "BetaDistribution": { "description": "A beta probability distribution.\n\nContinuous distribution bounded between 0 and 1. Commonly used\nfor modeling probabilities and proportions.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.BetaDistribution" }, "BetaDistributionParameters": { "description": "Parameters for a beta distribution.\n\nDefined by alpha and beta shape parameters.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.BetaDistributionParameters" }, "BinomialDistribution": { "description": "A binomial probability distribution.\n\nModels the number of successes in a fixed number of independent\nBernoulli trials with constant success probability.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.BinomialDistribution" }, "BinomialDistributionParameters": { "description": "Parameters for a binomial distribution.\n\nDefined by number of trials (n) and success probability (p).", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.BinomialDistributionParameters" }, "Block": { "description": "A fixed list of trials to run in sequence", "properties": { "mode": { "const": "Block", "default": "Block", "title": "Mode", "type": "string" }, "trials": { "default": [], "description": "List of trials in the block", "items": { "$ref": "#/$defs/Trial" }, "title": "Trials", "type": "array" }, "shuffle": { "default": false, "description": "Whether to shuffle the trials in the block", "title": "Shuffle", "type": "boolean" }, "repeat_count": { "default": 0, "description": "Number of times to repeat the block. If null, the block will be repeated indefinitely", "oneOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Repeat Count" } }, "title": "Block", "type": "object" }, "BlockGenerator": { "description": "Generates blocks of trials by sampling from a trial statistics template", "properties": { "mode": { "const": "BlockGenerator", "default": "BlockGenerator", "title": "Mode", "type": "string" }, "block_size": { "$ref": "#/$defs/Distribution", "default": { "family": "Uniform", "distribution_parameters": { "family": "Uniform", "max": 60.0, "min": 50.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Size of the block" }, "trial_statistics": { "$ref": "#/$defs/Trial", "description": "Statistics of the trials in the block" } }, "required": [ "trial_statistics" ], "title": "BlockGenerator", "type": "object" }, "BlockStatistics": { "discriminator": { "mapping": { "Block": "#/$defs/Block", "BlockGenerator": "#/$defs/BlockGenerator" }, "propertyName": "mode" }, "oneOf": [ { "$ref": "#/$defs/Block" }, { "$ref": "#/$defs/BlockGenerator" } ] }, "CameraController_SpinnakerCamera_": { "properties": { "device_type": { "const": "CameraController", "default": "CameraController", "title": "Device Type", "type": "string" }, "calibration": { "default": null, "description": "Calibration for the device.", "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" }, "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" }, "ContinuousFeedback": { "discriminator": { "mapping": { "Audio": "#/$defs/AudioFeedback", "Manipulator": "#/$defs/ManipulatorFeedback" }, "propertyName": "continuous_feedback_mode" }, "oneOf": [ { "$ref": "#/$defs/ManipulatorFeedback" }, { "$ref": "#/$defs/AudioFeedback" } ] }, "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.Distribution" }, "Environment": { "description": "Defines the structure of the behavioral environment as a sequence of blocks", "properties": { "block_statistics": { "description": "Statistics of the environment", "items": { "$ref": "#/$defs/BlockStatistics" }, "title": "Block Statistics", "type": "array" }, "shuffle": { "default": false, "description": "Whether to shuffle the blocks", "title": "Shuffle", "type": "boolean" }, "repeat_count": { "default": 0, "description": "Number of times to repeat the environment. If null, the environment will be repeated indefinitely", "oneOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Repeat Count" } }, "required": [ "block_statistics" ], "title": "Environment", "type": "object" }, "ExponentialDistribution": { "description": "An exponential probability distribution.\n\nModels time between events in a Poisson process. Commonly used\nfor wait times and inter-event intervals.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.ExponentialDistribution" }, "ExponentialDistributionParameters": { "description": "Parameters for an exponential distribution.\n\nDefined by the rate parameter (inverse of mean).", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.ExponentialDistributionParameters" }, "GammaDistribution": { "description": "A gamma probability distribution.\n\nGeneralizes the exponential distribution. Used for modeling\npositive continuous variables with right-skewed distributions.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.GammaDistribution" }, "GammaDistributionParameters": { "description": "Parameters for a gamma distribution.\n\nDefined by shape (k) and rate (\u03b8\u207b\u00b9) parameters.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.GammaDistributionParameters" }, "HarpAnalogInput": { "properties": { "device_type": { "const": "AnalogInput", "default": "AnalogInput", "title": "Device Type", "type": "string" }, "calibration": { "default": null, "description": "Calibration for the device.", "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" }, "calibration": { "default": null, "description": "Calibration for the device.", "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" }, "calibration": { "default": null, "description": "Calibration for the device.", "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" }, "calibration": { "default": null, "description": "Calibration for the device.", "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" }, "HarpWhiteRabbit": { "properties": { "device_type": { "const": "WhiteRabbit", "default": "WhiteRabbit", "title": "Device Type", "type": "string" }, "calibration": { "default": null, "description": "Calibration for the device.", "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" }, "LoadCellActionSource": { "description": "Action source read from a load cell channel", "properties": { "action_source": { "const": "LoadCell", "default": "LoadCell", "title": "Action Source", "type": "string" }, "channel": { "default": 0, "description": "Index of the load cell channel to use", "maximum": 7, "minimum": 0, "title": "Channel", "type": "integer" } }, "title": "LoadCellActionSource", "type": "object" }, "LoadCellChannelCalibration": { "description": "Load cell channel calibration\nCalibration will be applied as:\n weight (g) = slope * (adc_units_corrected_by_offset_resistor - adc_units_baseline)", "properties": { "channel": { "description": "Load cell channel number available", "maximum": 7, "minimum": 0, "title": "Load cell channel number", "type": "integer" }, "offset": { "default": 0, "description": "Load cell offset value [-255, 255]", "maximum": 255, "minimum": -255, "title": "Load cell offset applied to the wheatstone bridge circuit", "type": "integer" }, "baseline": { "default": 0.0, "title": "Load cell baseline that will be DSP subtracted to the raw adc output.", "type": "number" }, "slope": { "default": 1.0, "title": "Load cell slope that will be used to convert tared (- baseline) adc units to weight (g).", "type": "number" } }, "required": [ "channel" ], "title": "LoadCellChannelCalibration", "type": "object" }, "LoadCells": { "description": "Load cells device", "properties": { "device_type": { "const": "LoadCells", "default": "LoadCells", "title": "Device Type", "type": "string" }, "calibration": { "$ref": "#/$defs/LoadCellsCalibration", "default": { "date": null, "channels": [] }, "description": "Calibration for the device." }, "who_am_i": { "const": 1232, "default": 1232, "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": "LoadCells", "type": "object" }, "LoadCellsCalibration": { "description": "Load cells calibration", "properties": { "date": { "default": null, "description": "Date of the calibration", "oneOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Date" }, "channels": { "default": [], "items": { "$ref": "#/$defs/LoadCellChannelCalibration" }, "title": "Load cells calibration", "type": "array" } }, "title": "LoadCellsCalibration", "type": "object" }, "LogNormalDistribution": { "description": "A log-normal probability distribution.\n\nDistribution where the logarithm of the variable is normally distributed.\nAlways produces positive values and is right-skewed.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.LogNormalDistribution" }, "LogNormalDistributionParameters": { "description": "Parameters for a log-normal distribution.\n\nDefined by the mean and standard deviation of the underlying normal distribution.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.LogNormalDistributionParameters" }, "LutSampler2D": { "properties": { "sampler_type": { "const": "LUT", "default": "LUT", "title": "Sampler Type", "type": "string" }, "lut_reference": { "description": "Reference to the look up table image. Should be a key in the action_luts dictionary", "title": "Lut Reference", "type": "string" } }, "required": [ "lut_reference" ], "title": "LutSampler2D", "type": "object" }, "ManipulatorFeedback": { "description": "Continuous feedback delivered via manipulator position", "properties": { "continuous_feedback_mode": { "const": "Manipulator", "default": "Manipulator", "title": "Continuous Feedback Mode", "type": "string" }, "converter_lut_input": { "default": [ 0, 1 ], "description": "Normalized input domain. All values should be between 0 and 1", "items": { "maximum": 1, "minimum": 0, "type": "number" }, "minItems": 2, "title": "Converter Lut Input", "type": "array" }, "converter_lut_output": { "default": [ 0, 1 ], "description": "Output domain used to linearly interpolate the input values to the output values", "items": { "type": "number" }, "minItems": 2, "title": "Converter Lut Output", "type": "array" } }, "title": "ManipulatorFeedback", "type": "object" }, "ManipulatorPosition": { "description": "Represents a position in the manipulator coordinate system", "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", "x-sgen-typename": "AllenNeuralDynamics.AindManipulator.ManipulatorPosition" }, "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": { "description": "Microstep resolution available", "enum": [ 0, 1, 2, 3 ], "title": "MicrostepResolution", "type": "integer", "x-enumNames": [ "Microstep8", "Microstep16", "Microstep32", "Microstep64" ], "x-sgen-typename": "AllenNeuralDynamics.AindManipulator.MicrostepResolution" }, "MotorOperationMode": { "description": "Motor operation mode", "enum": [ 0, 1 ], "title": "MotorOperationMode", "type": "integer", "x-enumNames": [ "Quiet", "Dynamic" ], "x-sgen-typename": "AllenNeuralDynamics.AindManipulator.MotorOperationMode" }, "Networking": { "properties": { "zmq_publisher": { "$ref": "#/$defs/ZmqConnection", "default": { "connection_string": "@tcp://localhost:5556", "topic": "telekinesis" } } }, "title": "Networking", "type": "object" }, "NormalDistribution": { "description": "A normal (Gaussian) probability distribution.\n\nBell-shaped distribution symmetric around the mean, commonly used\nfor modeling naturally occurring random variables.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.NormalDistribution" }, "NormalDistributionParameters": { "description": "Parameters for a normal (Gaussian) distribution.\n\nDefined by mean (center) and standard deviation (spread).", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.NormalDistributionParameters" }, "OperationControl": { "description": "Top-level operational settings including LUT registry and spout control", "properties": { "action_luts": { "additionalProperties": { "$ref": "#/$defs/ActionLookUpTableFactory" }, "description": "Look up tables to derive action output from.", "title": "Action Luts", "type": "object" }, "spout": { "$ref": "#/$defs/SpoutOperationControl", "default": { "default_retraction_offset": -7.0, "enabled": true }, "description": "Operation control for spout" } }, "title": "OperationControl", "type": "object" }, "OphysInterface": { "discriminator": { "mapping": { "bergamo": "#/$defs/BergamoInterface", "slap2p": "#/$defs/Slap2pInterface" }, "propertyName": "interface" }, "oneOf": [ { "$ref": "#/$defs/BergamoInterface" }, { "$ref": "#/$defs/Slap2pInterface" } ] }, "PdfDistribution": { "description": "A custom probability density function distribution.\n\nAllows defining arbitrary discrete distributions by specifying\nprobability values and their corresponding indices.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.PdfDistribution" }, "PdfDistributionParameters": { "description": "Parameters for a custom probability density function distribution.\n\nDefined by explicit probability values and their corresponding indices.\nProbabilities are automatically normalized to sum to 1.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.PdfDistributionParameters" }, "PoissonDistribution": { "description": "A Poisson probability distribution.\n\nModels the number of events occurring in a fixed interval of time or space\nwhen events occur independently at a constant rate.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.PoissonDistribution" }, "PoissonDistributionParameters": { "description": "Parameters for a Poisson distribution.\n\nDefined by the rate parameter (average number of events).", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.PoissonDistributionParameters" }, "QuiescencePeriod": { "description": "Defines a quiescence settings", "properties": { "duration": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Duration of the quiescence period" }, "action_threshold": { "default": 0, "description": "Time out for the quiescence period", "title": "Action Threshold", "type": "number" }, "has_cue": { "default": false, "description": "Whether to use a cue to signal the start of the period.", "title": "Has Cue", "type": "boolean" } }, "title": "QuiescencePeriod", "type": "object" }, "Rect": { "description": "Represents a rectangle defined by its top-left corner, width, and height.", "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" }, "ResponsePeriod": { "description": "Defines a response period", "properties": { "duration": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Duration of the response period. I.e. the time the animal has to make a choice." }, "has_cue": { "default": true, "description": "Whether to use a cue to signal the start of the period.", "title": "Has Cue", "type": "boolean" }, "action": { "$ref": "#/$defs/Action", "default": { "reward_probability": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "reward_amount": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "reward_delay": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "action_duration": { "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "upper_action_threshold": { "distribution_parameters": { "family": "Scalar", "value": 20000.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "lower_action_threshold": { "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "is_operant": true, "time_to_collect": null, "continuous_feedback": null }, "description": "Action to be performed during the response period" } }, "title": "ResponsePeriod", "type": "object" }, "RigCalibration": { "properties": { "water_valve": { "$ref": "#/$defs/WaterValveCalibration", "description": "Water valve calibration" } }, "required": [ "water_valve" ], "title": "RigCalibration", "type": "object" }, "Sampler": { "discriminator": { "mapping": { "1D": "#/$defs/Sampler1D", "2D": "#/$defs/Sampler2D", "LUT": "#/$defs/LutSampler2D" }, "propertyName": "sampler_type" }, "oneOf": [ { "$ref": "#/$defs/LutSampler2D" }, { "$ref": "#/$defs/Sampler1D" }, { "$ref": "#/$defs/Sampler2D" } ] }, "Sampler1D": { "properties": { "sampler_type": { "const": "1D", "default": "1D", "title": "Sampler Type", "type": "string" }, "min_from": { "description": "The lower bound of the input value used to linearly scale the input coordinate to.", "title": "Min From", "type": "number" }, "max_from": { "description": "The upper bound of the input value used to linearly scale the input coordinate to.", "title": "Max From", "type": "number" }, "min_to": { "description": "The lower bound of the output value used to linearly scale the input coordinate to.", "title": "Min To", "type": "number" }, "max_to": { "description": "The upper bound of the output value used to linearly scale the input coordinate to.", "title": "Max To", "type": "number" } }, "required": [ "min_from", "max_from", "min_to", "max_to" ], "title": "Sampler1D", "type": "object" }, "Sampler2D": { "properties": { "sampler_type": { "const": "2D", "default": "2D", "title": "Sampler Type", "type": "string" }, "min_from_0": { "description": "The lower bound of the input value used to linearly scale the input coordinate to.", "title": "Min From 0", "type": "number" }, "max_from_0": { "description": "The upper bound of the input value used to linearly scale the input coordinate to.", "title": "Max From 0", "type": "number" }, "min_from_1": { "description": "The lower bound of the input value used to linearly scale the input coordinate to.", "title": "Min From 1", "type": "number" }, "max_from_1": { "description": "The upper bound of the input value used to linearly scale the input coordinate to.", "title": "Max From 1", "type": "number" }, "min_to_0": { "description": "The lower bound of the output value used to linearly scale the input coordinate to.", "title": "Min To 0", "type": "number" }, "max_to_0": { "description": "The upper bound of the output value used to linearly scale the input coordinate to.", "title": "Max To 0", "type": "number" }, "min_to_1": { "description": "The lower bound of the output value used to linearly scale the input coordinate to.", "title": "Min To 1", "type": "number" }, "max_to_1": { "description": "The upper bound of the output value used to linearly scale the input coordinate to.", "title": "Max To 1", "type": "number" } }, "required": [ "min_from_0", "max_from_0", "min_from_1", "max_from_1", "min_to_0", "max_to_0", "min_to_1", "max_to_1" ], "title": "Sampler2D", "type": "object" }, "Scalar": { "description": "A scalar distribution that returns a constant value.\n\nUseful for fixed parameters that don't vary across trials or samples.", "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": { "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": "Scalar", "type": "object", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.Scalar" }, "ScalarDistributionParameter": { "description": "Parameters for a scalar (constant) distribution.\n\nRepresents a deterministic value that always returns the same number.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.ScalarDistributionParameter" }, "ScalingParameters": { "description": "Parameters for scaling and offsetting sampled distribution values.\nScaling is applied as (value * scale + offset).\n\nApplies linear transformation: result = (value * scale) + offset.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.ScalingParameters" }, "Session": { "properties": { "aind_behavior_services_pkg_version": { "default": "0.13.6", "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.13.6", "default": "0.13.6", "title": "Version", "type": "string" }, "experiment": { "default": null, "description": "Name of the experiment", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Experiment" }, "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" }, "session_name": { "default": null, "description": "Name of the session. This will be used to create a folder in the root path. If not provided, it will be generated using subject and date.", "oneOf": [ { "type": "string" }, { "type": "null" } ], "title": "Session Name" }, "subject": { "description": "Name of the subject", "title": "Subject", "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": [ "subject" ], "title": "Session", "type": "object" }, "Slap2pInterface": { "properties": { "interface": { "const": "slap2p", "default": "slap2p", "title": "Interface", "type": "string" }, "delay_trial": { "default": 0.0, "description": "Arbitrary delay between start trigger and trial start", "minimum": 0, "title": "Delay Trial", "type": "number" }, "delay_ready_start": { "default": 0.2, "description": "Delay between the system being ready and a start signal being issued", "minimum": 0, "title": "Delay Ready Start", "type": "number" }, "timeout_for_error": { "default": 5, "description": "Time to wait for the ready signal to go low after start. If it doesn't, an error is raised.", "minimum": 0, "title": "Timeout For Error", "type": "number" } }, "title": "Slap2pInterface", "type": "object" }, "SpinnakerCamera": { "description": "Spinnaker camera device configuration.", "properties": { "device_type": { "const": "SpinnakerCamera", "default": "SpinnakerCamera", "title": "Device Type", "type": "string" }, "calibration": { "default": null, "description": "Calibration for the device.", "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": { "description": "ADC bit depth options for Spinnaker cameras.", "enum": [ 0, 1, 2 ], "title": "SpinnakerCameraAdcBitDepth", "type": "integer", "x-enumNames": [ "Adc8bit", "Adc10bit", "Adc12bit" ] }, "SpinnakerCameraPixelFormat": { "description": "Pixel format options for Spinnaker cameras.", "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" ] }, "SpoutOperationControl": { "description": "Control settings for the reward spout", "properties": { "default_retraction_offset": { "default": -7, "description": "Default retracted offset summed to reference position (mm)", "title": "Default Retraction Offset", "type": "number" }, "enabled": { "default": true, "description": "Whether the spout control is enabled", "title": "Enabled", "type": "boolean" } }, "title": "SpoutOperationControl", "type": "object" }, "Trial": { "description": "Defines a trial\nAction values are accumulated and normalized per second. E.g: Voltage/s -> LUT units/s -> Accumulate until threshold is reached", "properties": { "inter_trial_interval": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Time between trials" }, "quiescence_period": { "default": null, "description": "Quiescence settings", "oneOf": [ { "$ref": "#/$defs/QuiescencePeriod" }, { "type": "null" } ] }, "response_period": { "$ref": "#/$defs/ResponsePeriod", "default": { "duration": { "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "has_cue": true, "action": { "action_duration": { "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "continuous_feedback": null, "is_operant": true, "lower_action_threshold": { "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "reward_amount": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "reward_delay": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "reward_probability": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "time_to_collect": null, "upper_action_threshold": { "distribution_parameters": { "family": "Scalar", "value": 20000.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null } } }, "description": "Response settings" }, "action_source_0": { "$ref": "#/$defs/ActionSource", "description": "Action source for the first axis to be sample from the LUT" }, "action_source_1": { "default": null, "description": "Action source for the second axis to be sample from the LUT. If None, LUT will be sampled from [action_source_0, 0]", "oneOf": [ { "$ref": "#/$defs/ActionSource" }, { "type": "null" } ] }, "sampler": { "$ref": "#/$defs/Sampler", "description": "Reference to the look up table image. Should be a key in the action_luts dictionary" } }, "required": [ "action_source_0", "sampler" ], "title": "Trial", "type": "object" }, "TruncationParameters": { "description": "Parameters for truncating a distribution to a specified range. Truncation should\nbe applied after sampling and scaling.\n\nThe truncation_mode determines how out-of-bounds values are handled:\n- \"exclude\": Resample until a value within [min, max] is obtained.\nIf after a certain number of attempts no valid value is found, it\nwill use the average of sampled values and pick the closest bound.\n- \"clamp\": Clamp values to the nearest bound within [min, max].\nUsed to constrain sampled values within minimum and maximum bounds.", "properties": { "truncation_mode": { "default": "exclude", "description": "Mode of truncation to apply", "enum": [ "exclude", "clamp" ], "title": "Truncation Mode", "type": "string" }, "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.TruncationParameters" }, "UniformDistribution": { "description": "A uniform probability distribution.\n\nAll values between min and max have equal probability of being sampled.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.UniformDistribution" }, "UniformDistributionParameters": { "description": "Parameters for a uniform distribution.\n\nDefined by minimum and maximum bounds of the distribution.", "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", "x-sgen-typename": "AllenNeuralDynamics.AindBehaviorServices.Distributions.UniformDistributionParameters" }, "VideoWriter": { "discriminator": { "mapping": { "FFMPEG": "#/$defs/VideoWriterFfmpeg", "OPENCV": "#/$defs/VideoWriterOpenCv" }, "propertyName": "video_writer_type" }, "oneOf": [ { "$ref": "#/$defs/VideoWriterFfmpeg" }, { "$ref": "#/$defs/VideoWriterOpenCv" } ] }, "VideoWriterFfmpeg": { "description": "FFMPEG video writer configuration.", "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": "mkv", "description": "Container extension", "title": "Container Extension", "type": "string" }, "output_arguments": { "default": "-vf \"scale=out_range=full,setparams=range=full:colorspace=bt709:color_primaries=bt709:color_trc=linear\" -c:v h264_nvenc -pix_fmt yuv420p -color_range full -colorspace bt709 -color_trc linear -tune hq -preset p3 -rc vbr -cq 18 -b:v 0M -metadata author=\"Allen Institute for Neural Dynamics\" -maxrate 700M -bufsize 350M -f matroska -write_crc32 0", "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": { "description": "OpenCV video writer configuration.", "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" }, "WaterValveCalibration": { "description": "Represents a water valve calibration.", "properties": { "date": { "default": null, "description": "Date of the calibration", "oneOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Date" }, "measurements": { "default": [], "description": "List of measurements", "items": { "$ref": "#/$defs/Measurement" }, "title": "Measurements", "type": "array" }, "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": "WaterValveCalibration", "type": "object" }, "ZmqConnection": { "properties": { "connection_string": { "default": "@tcp://localhost:5556", "title": "Connection String", "type": "string" }, "topic": { "default": "", "title": "Topic", "type": "string" } }, "title": "ZmqConnection", "type": "object" } } }