{ "$defs": { "Action": { "description": "Defines the action types", "enum": [ 0, 1, 2, 3, 4, 8, 12 ], "title": "Action", "type": "integer", "x-enumNames": [ "None", "Left", "Right", "RightLeft", "Push", "Pull", "PushPull" ] }, "AindBehaviorSessionModel": { "properties": { "aind_behavior_services_pkg_version": { "default": "0.12.3", "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.12.3", "default": "0.12.3", "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" }, "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. 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" }, "experiment_version": { "default": "", "deprecated": true, "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": [ "root_path", "subject" ], "title": "AindBehaviorSessionModel", "type": "object" }, "AindIsoForceRig": { "properties": { "aind_behavior_services_pkg_version": { "default": "0.12.3", "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.0.0-rc0", "default": "0.0.0-rc0", "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." }, "harp_behavior": { "$ref": "#/$defs/HarpBehavior", "description": "Harp behavior" }, "harp_lickometer": { "$ref": "#/$defs/HarpLicketySplit", "description": "Harp lickometer" }, "harp_load_cells": { "$ref": "#/$defs/LoadCells", "description": "Harp load cells" }, "harp_clock_generator": { "$ref": "#/$defs/HarpWhiteRabbit", "description": "Harp clock generator" }, "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": "Load cells calibration" } }, "required": [ "rig_name", "triggered_camera_controller", "harp_behavior", "harp_lickometer", "harp_load_cells", "harp_clock_generator", "manipulator", "calibration" ], "title": "AindIsoForceRig", "type": "object" }, "AindIsoForceTaskLogic": { "additionalProperties": false, "properties": { "name": { "const": "AindIsoForce", "default": "AindIsoForce", "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/AindIsoForceTaskParameters", "description": "Parameters of the task logic" }, "version": { "const": "0.0.0-rc0", "default": "0.0.0-rc0", "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": "AindIsoForceTaskLogic", "type": "object" }, "AindIsoForceTaskParameters": { "additionalProperties": true, "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.3", "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", "default": { "force": { "left": { "channel": 0, "is_inverted": false }, "pull": { "channel": 1, "is_inverted": true }, "push": { "channel": 1, "is_inverted": false }, "right": { "channel": 0, "is_inverted": true } } }, "description": "Operation control" } }, "required": [ "environment" ], "title": "AindIsoForceTaskParameters", "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" }, "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": { "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" }, "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" }, "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" }, "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" }, "Block": { "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": { "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_template": { "$ref": "#/$defs/Trial", "description": "Statistics of the trials in the block" } }, "required": [ "trial_template" ], "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" }, "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" }, "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" }, "CrossingOutcome": { "properties": { "action": { "$ref": "#/$defs/Action", "description": "Action that was taken" }, "duration": { "description": "Duration of the crossing", "title": "Duration", "type": "number" }, "start": { "$ref": "#/$defs/Timestamped_ThresholdedJoystickForce_", "description": "Start of the crossing" }, "end": { "$ref": "#/$defs/Timestamped_ThresholdedJoystickForce_", "description": "End of the crossing" }, "is_valid_duration": { "description": "Whether the crossing duration is valid", "title": "Is Valid Duration", "type": "boolean" }, "is_reward_action": { "description": "Whether the crossing is a reward action", "title": "Is Reward Action", "type": "boolean" } }, "required": [ "action", "duration", "start", "end", "is_valid_duration", "is_reward_action" ], "title": "CrossingOutcome", "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" }, "Environment": { "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" }, "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" }, "ForceOperationControl": { "properties": { "left": { "$ref": "#/$defs/LoadCellInput", "default": { "channel": 0, "is_inverted": false }, "description": "Left load cell input" }, "right": { "$ref": "#/$defs/LoadCellInput", "default": { "channel": 0, "is_inverted": true }, "description": "Right load cell input" }, "push": { "$ref": "#/$defs/LoadCellInput", "default": { "channel": 1, "is_inverted": false }, "description": "Push load cell input" }, "pull": { "$ref": "#/$defs/LoadCellInput", "default": { "channel": 1, "is_inverted": true }, "description": "Pull load cell input" } }, "title": "ForceOperationControl", "type": "object" }, "ForceThreshold": { "properties": { "left": { "default": null, "description": "Left force threshold", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Left" }, "right": { "default": null, "description": "Right force threshold", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Right" }, "push": { "default": null, "description": "Push force threshold", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Push" }, "pull": { "default": null, "description": "Pull force threshold", "oneOf": [ { "type": "number" }, { "type": "null" } ], "title": "Pull" } }, "title": "ForceThreshold", "type": "object" }, "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" }, "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" }, "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" }, "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" }, "JoystickForce": { "properties": { "left": { "description": "Force applied to the left axis", "title": "Left", "type": "number" }, "right": { "description": "Force applied to the right axis", "title": "Right", "type": "number" }, "push": { "description": "Force applied to the push axis", "title": "Push", "type": "number" }, "pull": { "description": "Force applied to the pull axis", "title": "Pull", "type": "number" }, "right_left": { "description": "Signed force applied to the right and left axes combined", "title": "Right Left", "type": "number" }, "push_pull": { "description": "Signed force applied to the push and pull axes combined", "title": "Push Pull", "type": "number" } }, "required": [ "left", "right", "push", "pull", "right_left", "push_pull" ], "title": "JoystickForce", "type": "object" }, "LoadCellCalibrationInput": { "properties": { "channel": { "description": "Load cell channel number available", "maximum": 7, "minimum": 0, "title": "Load cell channel number", "type": "integer" }, "offset_measurement": { "default": [], "items": { "$ref": "#/$defs/MeasuredOffset" }, "title": "Load cell offset calibration data", "type": "array" }, "weight_measurement": { "default": [], "items": { "$ref": "#/$defs/MeasuredWeight" }, "title": "Load cell weight calibration data", "type": "array" } }, "required": [ "channel" ], "title": "LoadCellCalibrationInput", "type": "object" }, "LoadCellCalibrationOutput": { "properties": { "channel": { "description": "Load cell channel number available", "maximum": 7, "minimum": 0, "title": "Channel", "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" }, "weight_lookup": { "default": [], "items": { "$ref": "#/$defs/MeasuredWeight" }, "title": "Load cell weight lookup calibration table", "type": "array" } }, "required": [ "channel" ], "title": "LoadCellCalibrationOutput", "type": "object" }, "LoadCellInput": { "properties": { "channel": { "description": "Load cell channel number", "maximum": 7, "minimum": 0, "title": "Channel", "type": "integer" }, "is_inverted": { "default": false, "description": "Whether the load cell is inverted", "title": "Is Inverted", "type": "boolean" } }, "required": [ "channel" ], "title": "LoadCellInput", "type": "object" }, "LoadCells": { "properties": { "device_type": { "const": "LoadCells", "default": "LoadCells", "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/LoadCellsCalibration" }, { "type": "null" } ], "title": "Calibration of the load cells" }, "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 class", "properties": { "device_name": { "default": "LoadCells", "description": "Must match a device name in rig/instrument", "title": "Device name", "type": "string" }, "input": { "$ref": "#/$defs/LoadCellsCalibrationInput", "title": "Input of the calibration" }, "output": { "$ref": "#/$defs/LoadCellsCalibrationOutput", "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": "LoadCellsCalibration", "type": "object" }, "LoadCellsCalibrationInput": { "properties": { "channels": { "default": [], "items": { "$ref": "#/$defs/LoadCellCalibrationInput" }, "title": "Load cells calibration data", "type": "array" } }, "title": "LoadCellsCalibrationInput", "type": "object" }, "LoadCellsCalibrationOutput": { "properties": { "channels": { "default": [], "items": { "$ref": "#/$defs/LoadCellCalibrationOutput" }, "title": "Load cells calibration output", "type": "array" } }, "title": "LoadCellsCalibrationOutput", "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" }, "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" }, "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" }, "MeasuredOffset": { "properties": { "offset": { "description": "The applied offset resistor value[-255, 255]", "maximum": 255, "minimum": -255, "title": "Offset", "type": "integer" }, "baseline": { "description": "The measured baseline value", "title": "Baseline", "type": "number" } }, "required": [ "offset", "baseline" ], "title": "MeasuredOffset", "type": "object" }, "MeasuredWeight": { "properties": { "weight": { "description": "The applied weight in grams", "title": "Weight", "type": "number" }, "baseline": { "description": "The measured baseline value", "title": "Baseline", "type": "number" } }, "required": [ "weight", "baseline" ], "title": "MeasuredWeight", "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" ] }, "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" }, "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" }, "OperantReward": { "properties": { "reward_type": { "const": "Operant", "default": "Operant", "title": "Reward Type", "type": "string" }, "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 dispense" }, "delay": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Delay before dispensing the reward" }, "time_to_collect": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.5 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Time to collect the reward" } }, "title": "OperantReward", "type": "object" }, "OperationControl": { "properties": { "force": { "$ref": "#/$defs/ForceOperationControl", "default": { "left": { "channel": 0, "is_inverted": false }, "right": { "channel": 0, "is_inverted": true }, "push": { "channel": 1, "is_inverted": false }, "pull": { "channel": 1, "is_inverted": true } }, "description": "Operation control for force sensor" } }, "title": "OperationControl", "type": "object" }, "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" }, "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" }, "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" }, "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" }, "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 force has to stay below threshold to start the trial." }, "force_threshold": { "$ref": "#/$defs/ForceThreshold", "default": { "left": null, "right": null, "push": null, "pull": null }, "description": "Threshold for the force sensors to be considered quiescent." } }, "title": "QuiescencePeriod", "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" }, "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." }, "force_threshold": { "$ref": "#/$defs/ForceThreshold", "default": { "left": null, "right": null, "push": null, "pull": null }, "description": "Threshold for the force sensors to be considered active. If None, the crossings will be ignored." }, "rewarded_action": { "$ref": "#/$defs/Action", "default": 0 }, "force_duration": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.05 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Duration the force must stay above threshold." } }, "title": "ResponsePeriod", "type": "object" }, "Reward": { "properties": { "reward_type": { "const": "Pavlovian", "default": "Pavlovian", "title": "Reward Type", "type": "string" }, "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 dispense" }, "delay": { "$ref": "#/$defs/Distribution", "default": { "family": "Scalar", "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "truncation_parameters": null, "scaling_parameters": null }, "description": "Delay before dispensing the reward" } }, "title": "Reward", "type": "object" }, "RewardPeriod": { "discriminator": { "mapping": { "Operant": "#/$defs/OperantReward", "Pavlovian": "#/$defs/Reward" }, "propertyName": "reward_type" }, "oneOf": [ { "$ref": "#/$defs/Reward" }, { "$ref": "#/$defs/OperantReward" } ] }, "RigCalibration": { "properties": { "water_valve": { "$ref": "#/$defs/WaterValveCalibration", "description": "Water valve calibration" } }, "required": [ "water_valve" ], "title": "RigCalibration", "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": { "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": { "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" }, "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" }, "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" ] }, "ThresholdedJoystickForce": { "properties": { "left": { "description": "Whether the left force is above the threshold", "title": "Left", "type": "boolean" }, "right": { "description": "Whether the right force is above the threshold", "title": "Right", "type": "boolean" }, "push": { "description": "Whether the push force is above the threshold", "title": "Push", "type": "boolean" }, "pull": { "description": "Whether the pull force is above the threshold", "title": "Pull", "type": "boolean" }, "joystick_force": { "$ref": "#/$defs/JoystickForce", "description": "Joystick force values that triggered the event" } }, "required": [ "left", "right", "push", "pull", "joystick_force" ], "title": "ThresholdedJoystickForce", "type": "object" }, "Timestamped_ThresholdedJoystickForce_": { "properties": { "seconds": { "title": "Seconds", "type": "number" }, "value": { "$ref": "#/$defs/ThresholdedJoystickForce" } }, "required": [ "seconds", "value" ], "title": "Timestamped[ThresholdedJoystickForce]", "type": "object" }, "Trial": { "description": "Defines a trial", "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 }, "force_threshold": { "left": null, "pull": null, "push": null, "right": null }, "rewarded_action": 0, "force_duration": { "distribution_parameters": { "family": "Scalar", "value": 0.05 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null } }, "description": "Response settings" }, "reward_period": { "$ref": "#/$defs/RewardPeriod", "default": { "reward_type": "Pavlovian", "amount": { "distribution_parameters": { "family": "Scalar", "value": 1.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null }, "delay": { "distribution_parameters": { "family": "Scalar", "value": 0.0 }, "family": "Scalar", "scaling_parameters": null, "truncation_parameters": null } }, "description": "Reward settings" } }, "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" }, "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" }, "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" }, "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" }, "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" } } }