diff --git a/src/Extensions/AindBehaviorSession.cs b/src/Extensions/AindBehaviorSession.cs index c7d02ba8..300e7d65 100644 --- a/src/Extensions/AindBehaviorSession.cs +++ b/src/Extensions/AindBehaviorSession.cs @@ -15,7 +15,7 @@ namespace AindBehaviorServices.AindBehaviorSession public partial class AindBehaviorSessionModel { - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private string _version = "0.3.0"; diff --git a/src/Extensions/AindManipulatorCalibrationLogic.cs b/src/Extensions/AindManipulatorCalibrationLogic.cs index ff6b25ca..be00fda8 100644 --- a/src/Extensions/AindManipulatorCalibrationLogic.cs +++ b/src/Extensions/AindManipulatorCalibrationLogic.cs @@ -17,7 +17,7 @@ public partial class CalibrationParameters private double? _rngSeed; - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; public CalibrationParameters() { diff --git a/src/Extensions/AindManipulatorCalibrationRig.cs b/src/Extensions/AindManipulatorCalibrationRig.cs index 3f521bd3..f88225a8 100644 --- a/src/Extensions/AindManipulatorCalibrationRig.cs +++ b/src/Extensions/AindManipulatorCalibrationRig.cs @@ -897,7 +897,7 @@ public enum MotorOperationMode public partial class CalibrationRig { - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private string _version = "0.1.0"; diff --git a/src/Extensions/LoadCellsCalibrationLogic.cs b/src/Extensions/LoadCellsCalibrationLogic.cs index b5735f48..db17cb2c 100644 --- a/src/Extensions/LoadCellsCalibrationLogic.cs +++ b/src/Extensions/LoadCellsCalibrationLogic.cs @@ -17,7 +17,7 @@ public partial class CalibrationParameters private double? _rngSeed; - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private System.Collections.Generic.List _channels = new System.Collections.Generic.List(); diff --git a/src/Extensions/LoadCellsCalibrationRig.cs b/src/Extensions/LoadCellsCalibrationRig.cs index b8448693..a083ea9d 100644 --- a/src/Extensions/LoadCellsCalibrationRig.cs +++ b/src/Extensions/LoadCellsCalibrationRig.cs @@ -892,7 +892,7 @@ public override string ToString() public partial class CalibrationRig { - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private string _version = "0.0.0"; diff --git a/src/Extensions/OlfactometerCalibrationLogic.cs b/src/Extensions/OlfactometerCalibrationLogic.cs index 1ded672c..8f5c3ad0 100644 --- a/src/Extensions/OlfactometerCalibrationLogic.cs +++ b/src/Extensions/OlfactometerCalibrationLogic.cs @@ -17,7 +17,7 @@ public partial class CalibrationParameters private double? _rngSeed; - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private System.Collections.Generic.IDictionary _channelConfig; diff --git a/src/Extensions/OlfactometerCalibrationRig.cs b/src/Extensions/OlfactometerCalibrationRig.cs index 74b040be..bee120ef 100644 --- a/src/Extensions/OlfactometerCalibrationRig.cs +++ b/src/Extensions/OlfactometerCalibrationRig.cs @@ -53,6 +53,92 @@ public override string ToString() } + [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.3.0.0 (Newtonsoft.Json v13.0.0.0)")] + [Bonsai.CombinatorAttribute()] + [Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)] + public partial class ConnectedClockOutput + { + + private string _targetDevice; + + private int _outputChannel; + + public ConnectedClockOutput() + { + } + + protected ConnectedClockOutput(ConnectedClockOutput other) + { + _targetDevice = other._targetDevice; + _outputChannel = other._outputChannel; + } + + /// + /// Optional device name to provide user additional information + /// + [Newtonsoft.Json.JsonPropertyAttribute("target_device")] + [System.ComponentModel.DescriptionAttribute("Optional device name to provide user additional information")] + public string TargetDevice + { + get + { + return _targetDevice; + } + set + { + _targetDevice = value; + } + } + + /// + /// Output channel + /// + [Newtonsoft.Json.JsonPropertyAttribute("output_channel", Required=Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DescriptionAttribute("Output channel")] + public int OutputChannel + { + get + { + return _outputChannel; + } + set + { + _outputChannel = value; + } + } + + public System.IObservable Process() + { + return System.Reactive.Linq.Observable.Defer(() => System.Reactive.Linq.Observable.Return(new ConnectedClockOutput(this))); + } + + public System.IObservable Process(System.IObservable source) + { + return System.Reactive.Linq.Observable.Select(source, _ => new ConnectedClockOutput(this)); + } + + protected virtual bool PrintMembers(System.Text.StringBuilder stringBuilder) + { + stringBuilder.Append("target_device = " + _targetDevice + ", "); + stringBuilder.Append("output_channel = " + _outputChannel); + return true; + } + + public override string ToString() + { + System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); + stringBuilder.Append(GetType().Name); + stringBuilder.Append(" { "); + if (PrintMembers(stringBuilder)) + { + stringBuilder.Append(" "); + } + stringBuilder.Append("}"); + return stringBuilder.ToString(); + } + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.3.0.0 (Newtonsoft.Json v13.0.0.0)")] [Bonsai.CombinatorAttribute()] [Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)] @@ -235,6 +321,8 @@ public partial class HarpClockGenerator private string _portName; + private System.Collections.Generic.List _connectedClockOutputs = new System.Collections.Generic.List(); + public HarpClockGenerator() { } @@ -247,6 +335,7 @@ protected HarpClockGenerator(HarpClockGenerator other) _whoAmI = other._whoAmI; _serialNumber = other._serialNumber; _portName = other._portName; + _connectedClockOutputs = other._connectedClockOutputs; } [Newtonsoft.Json.JsonPropertyAttribute("device_type")] @@ -345,6 +434,24 @@ public string PortName } } + /// + /// Connected clock outputs + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + [Newtonsoft.Json.JsonPropertyAttribute("connected_clock_outputs")] + [System.ComponentModel.DescriptionAttribute("Connected clock outputs")] + public System.Collections.Generic.List ConnectedClockOutputs + { + get + { + return _connectedClockOutputs; + } + set + { + _connectedClockOutputs = value; + } + } + public System.IObservable Process() { return System.Reactive.Linq.Observable.Defer(() => System.Reactive.Linq.Observable.Return(new HarpClockGenerator(this))); @@ -362,7 +469,8 @@ protected virtual bool PrintMembers(System.Text.StringBuilder stringBuilder) stringBuilder.Append("calibration = " + _calibration + ", "); stringBuilder.Append("who_am_i = " + _whoAmI + ", "); stringBuilder.Append("serial_number = " + _serialNumber + ", "); - stringBuilder.Append("port_name = " + _portName); + stringBuilder.Append("port_name = " + _portName + ", "); + stringBuilder.Append("connected_clock_outputs = " + _connectedClockOutputs); return true; } @@ -979,7 +1087,7 @@ public enum OlfactometerChannelType public partial class CalibrationRig { - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private string _version = "0.0.0"; @@ -1179,6 +1287,11 @@ public System.IObservable Process(System.IObservable source) return Process(source); } + public System.IObservable Process(System.IObservable source) + { + return Process(source); + } + public System.IObservable Process(System.IObservable source) { return Process(source); @@ -1229,6 +1342,7 @@ public System.IObservable Process(System.IObservable sou [System.ComponentModel.DefaultPropertyAttribute("Type")] [Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Transform)] [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))] + [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))] [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))] [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))] [System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))] diff --git a/src/Extensions/TreadmillCalibrationLogic.cs b/src/Extensions/TreadmillCalibrationLogic.cs index f2a4c963..a0135df3 100644 --- a/src/Extensions/TreadmillCalibrationLogic.cs +++ b/src/Extensions/TreadmillCalibrationLogic.cs @@ -17,7 +17,7 @@ public partial class CalibrationParameters private double? _rngSeed; - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; public CalibrationParameters() { diff --git a/src/Extensions/TreadmillCalibrationRig.cs b/src/Extensions/TreadmillCalibrationRig.cs index 53fec2eb..c7b671d4 100644 --- a/src/Extensions/TreadmillCalibrationRig.cs +++ b/src/Extensions/TreadmillCalibrationRig.cs @@ -550,7 +550,7 @@ public override string ToString() public partial class CalibrationRig { - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private string _version = "0.0.0"; diff --git a/src/Extensions/WaterValveCalibrationLogic.cs b/src/Extensions/WaterValveCalibrationLogic.cs index 74a49d3e..c0a7a037 100644 --- a/src/Extensions/WaterValveCalibrationLogic.cs +++ b/src/Extensions/WaterValveCalibrationLogic.cs @@ -17,7 +17,7 @@ public partial class CalibrationParameters private double? _rngSeed; - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private System.Collections.Generic.List _valveOpenTime = new System.Collections.Generic.List(); diff --git a/src/Extensions/WaterValveCalibrationRig.cs b/src/Extensions/WaterValveCalibrationRig.cs index f93db114..39e9e14b 100644 --- a/src/Extensions/WaterValveCalibrationRig.cs +++ b/src/Extensions/WaterValveCalibrationRig.cs @@ -15,7 +15,7 @@ namespace AindBehaviorServices.WaterValveCalibrationRig public partial class CalibrationRig { - private string _aindBehaviorServicesPkgVersion = "0.8.5"; + private string _aindBehaviorServicesPkgVersion = "0.8.6"; private string _version = "0.0.0"; diff --git a/src/aind_behavior_services/__init__.py b/src/aind_behavior_services/__init__.py index e6b25d0c..cbc9524f 100644 --- a/src/aind_behavior_services/__init__.py +++ b/src/aind_behavior_services/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.8.5" +__version__ = "0.8.6" from .rig import AindBehaviorRigModel # noqa: F401 from .session import AindBehaviorSessionModel # noqa: F401 diff --git a/src/aind_behavior_services/rig/__init__.py b/src/aind_behavior_services/rig/__init__.py index 23ab56c1..f8db13a1 100644 --- a/src/aind_behavior_services/rig/__init__.py +++ b/src/aind_behavior_services/rig/__init__.py @@ -2,7 +2,7 @@ import os from enum import Enum -from typing import Annotated, Dict, Generic, Literal, Optional, TypeVar, Union +from typing import Annotated, Dict, Generic, List, Literal, Optional, TypeVar, Union from pydantic import BaseModel, Field, field_validator from typing_extensions import TypeAliasType @@ -99,6 +99,7 @@ class CameraController(Device, Generic[TCamera]): class HarpDeviceType(str, Enum): + GENERIC = "generic" LOADCELLS = "loadcells" BEHAVIOR = "behavior" OLFACTOMETER = "olfactometer" @@ -111,7 +112,8 @@ class HarpDeviceType(str, Enum): SNIFFDETECTOR = "sniffdetector" CUTTLEFISH = "cuttlefish" STEPPERDRIVER = "stepperdriver" - GENERIC = "generic" + ENVIRONMENTSENSOR = "environmentsensor" + WHITERABBIT = "whiterabbit" class HarpDeviceGeneric(Device): @@ -121,6 +123,53 @@ class HarpDeviceGeneric(Device): port_name: str = Field(..., description="Device port name") +class ConnectedClockOutput(BaseModel): + target_device: Optional[str] = Field( + default=None, description="Optional device name to provide user additional information" + ) + output_channel: int = Field(..., ge=0, description="Output channel") + + +def _assert_unique_output_channels(outputs: List[ConnectedClockOutput]) -> List[ConnectedClockOutput]: + channels = set([ch.output_channel for ch in outputs]) + if len(channels) != len(outputs): + raise ValueError("Output channels must be unique") + return outputs + + +class HarpClockGenerator(HarpDeviceGeneric): + device_type: Literal[HarpDeviceType.CLOCKGENERATOR] = HarpDeviceType.CLOCKGENERATOR + who_am_i: Literal[1158] = 1158 + connected_clock_outputs: List[ConnectedClockOutput] = Field(default=[], description="Connected clock outputs") + + @field_validator("connected_clock_outputs") + @classmethod + def validate_connected_clock_outputs(cls, v: List[ConnectedClockOutput]) -> List[ConnectedClockOutput]: + return _assert_unique_output_channels(v) + + +class HarpWhiteRabbit(HarpDeviceGeneric): + device_type: Literal[HarpDeviceType.WHITERABBIT] = HarpDeviceType.WHITERABBIT + who_am_i: Literal[1404] = 1404 + connected_clock_outputs: List[ConnectedClockOutput] = Field(default=[], description="Connected clock outputs") + + @field_validator("connected_clock_outputs") + @classmethod + def validate_connected_clock_outputs(cls, v: List[ConnectedClockOutput]) -> List[ConnectedClockOutput]: + return _assert_unique_output_channels(v) + + +class HarpClockSynchronizer(HarpDeviceGeneric): + device_type: Literal[HarpDeviceType.CLOCKSYNCHRONIZER] = HarpDeviceType.CLOCKSYNCHRONIZER + who_am_i: Literal[1152] = 1152 + connected_clock_outputs: List[ConnectedClockOutput] = Field(default=[], description="Connected clock outputs") + + @field_validator("connected_clock_outputs") + @classmethod + def validate_connected_clock_outputs(cls, v: List[ConnectedClockOutput]) -> List[ConnectedClockOutput]: + return _assert_unique_output_channels(v) + + class HarpBehavior(HarpDeviceGeneric): device_type: Literal[HarpDeviceType.BEHAVIOR] = HarpDeviceType.BEHAVIOR who_am_i: Literal[1216] = 1216 @@ -141,16 +190,6 @@ class HarpOlfactometer(HarpDeviceGeneric): who_am_i: Literal[1140] = 1140 -class HarpClockGenerator(HarpDeviceGeneric): - device_type: Literal[HarpDeviceType.CLOCKGENERATOR] = HarpDeviceType.CLOCKGENERATOR - who_am_i: Literal[1158] = 1158 - - -class HarpClockSynchronizer(HarpDeviceGeneric): - device_type: Literal[HarpDeviceType.CLOCKSYNCHRONIZER] = HarpDeviceType.CLOCKSYNCHRONIZER - who_am_i: Literal[1152] = 1152 - - class HarpAnalogInput(HarpDeviceGeneric): device_type: Literal[HarpDeviceType.ANALOGINPUT] = HarpDeviceType.ANALOGINPUT who_am_i: Literal[1236] = 1236 @@ -181,6 +220,11 @@ class HarpStepperDriver(HarpDeviceGeneric): who_am_i: Literal[1130] = 1130 +class HarpEnvironmentSensor(HarpDeviceGeneric): + device_type: Literal[HarpDeviceType.ENVIRONMENTSENSOR] = HarpDeviceType.ENVIRONMENTSENSOR + who_am_i: Literal[1405] = 1405 + + HarpDevice = TypeAliasType( "HarpDevice", Annotated[ @@ -197,6 +241,8 @@ class HarpStepperDriver(HarpDeviceGeneric): HarpSniffDetector, HarpClockSynchronizer, HarpStepperDriver, + HarpEnvironmentSensor, + HarpWhiteRabbit, ], Field(discriminator="device_type"), ], diff --git a/src/schemas/aind_behavior_data_types.json b/src/schemas/aind_behavior_data_types.json index 263568ee..0415c902 100644 --- a/src/schemas/aind_behavior_data_types.json +++ b/src/schemas/aind_behavior_data_types.json @@ -162,7 +162,7 @@ }, "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/aind_behavior_session.json b/src/schemas/aind_behavior_session.json index 4cab4312..d5ba7a5d 100644 --- a/src/schemas/aind_behavior_session.json +++ b/src/schemas/aind_behavior_session.json @@ -1,7 +1,7 @@ { "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/aind_behavior_subject_database.json b/src/schemas/aind_behavior_subject_database.json index 802207f7..32615fde 100644 --- a/src/schemas/aind_behavior_subject_database.json +++ b/src/schemas/aind_behavior_subject_database.json @@ -17,7 +17,7 @@ }, "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/aind_manipulator_calibration_logic.json b/src/schemas/aind_manipulator_calibration_logic.json index c167c5a7..47ef2f39 100644 --- a/src/schemas/aind_manipulator_calibration_logic.json +++ b/src/schemas/aind_manipulator_calibration_logic.json @@ -17,7 +17,7 @@ "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/aind_manipulator_calibration_rig.json b/src/schemas/aind_manipulator_calibration_rig.json index ea0e4f02..c6bfb219 100644 --- a/src/schemas/aind_manipulator_calibration_rig.json +++ b/src/schemas/aind_manipulator_calibration_rig.json @@ -351,7 +351,7 @@ }, "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/load_cells_calibration_logic.json b/src/schemas/load_cells_calibration_logic.json index 0179f98e..ebbf2aad 100644 --- a/src/schemas/load_cells_calibration_logic.json +++ b/src/schemas/load_cells_calibration_logic.json @@ -17,7 +17,7 @@ "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/load_cells_calibration_rig.json b/src/schemas/load_cells_calibration_rig.json index 2f2aaa6c..15375f92 100644 --- a/src/schemas/load_cells_calibration_rig.json +++ b/src/schemas/load_cells_calibration_rig.json @@ -280,7 +280,7 @@ }, "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/olfactometer_calibration_logic.json b/src/schemas/olfactometer_calibration_logic.json index 2d893fac..932854e4 100644 --- a/src/schemas/olfactometer_calibration_logic.json +++ b/src/schemas/olfactometer_calibration_logic.json @@ -17,7 +17,7 @@ "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/olfactometer_calibration_rig.json b/src/schemas/olfactometer_calibration_rig.json index 97a5adee..c6ad692d 100644 --- a/src/schemas/olfactometer_calibration_rig.json +++ b/src/schemas/olfactometer_calibration_rig.json @@ -5,6 +5,34 @@ "title": "BaseModel", "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" + }, "HarpAnalogInput": { "properties": { "device_type": { @@ -123,6 +151,15 @@ "description": "Device port name", "title": "Port Name", "type": "string" + }, + "connected_clock_outputs": { + "default": [], + "description": "Connected clock outputs", + "items": { + "$ref": "#/definitions/ConnectedClockOutput" + }, + "title": "Connected Clock Outputs", + "type": "array" } }, "required": [ @@ -339,7 +376,7 @@ }, "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/treadmill_calibration_logic.json b/src/schemas/treadmill_calibration_logic.json index 6d5b29cd..5871733b 100644 --- a/src/schemas/treadmill_calibration_logic.json +++ b/src/schemas/treadmill_calibration_logic.json @@ -17,7 +17,7 @@ "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" @@ -45,7 +45,7 @@ "$ref": "#/definitions/CalibrationParameters", "default": { "rng_seed": null, - "aind_behavior_services_pkg_version": "0.8.5" + "aind_behavior_services_pkg_version": "0.8.6" }, "title": "Task parameters" }, diff --git a/src/schemas/treadmill_calibration_rig.json b/src/schemas/treadmill_calibration_rig.json index a9a2ab65..c0d0ee78 100644 --- a/src/schemas/treadmill_calibration_rig.json +++ b/src/schemas/treadmill_calibration_rig.json @@ -175,7 +175,7 @@ }, "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/water_valve_calibration_logic.json b/src/schemas/water_valve_calibration_logic.json index 04b58c0c..2b395a2f 100644 --- a/src/schemas/water_valve_calibration_logic.json +++ b/src/schemas/water_valve_calibration_logic.json @@ -17,7 +17,7 @@ "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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" diff --git a/src/schemas/water_valve_calibration_rig.json b/src/schemas/water_valve_calibration_rig.json index 683960d5..c5a52b98 100644 --- a/src/schemas/water_valve_calibration_rig.json +++ b/src/schemas/water_valve_calibration_rig.json @@ -1,7 +1,7 @@ { "properties": { "aind_behavior_services_pkg_version": { - "default": "0.8.5", + "default": "0.8.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"