aind_behavior_services package¶
Subpackages¶
- aind_behavior_services.calibration package
- Submodules
- aind_behavior_services.calibration.aind_manipulator module
- aind_behavior_services.calibration.load_cells module
- aind_behavior_services.calibration.olfactometer module
- aind_behavior_services.calibration.treadmill module
- aind_behavior_services.calibration.utils module
- aind_behavior_services.calibration.water_valve module
- Module contents
- aind_behavior_services.rig package
- Submodules
- aind_behavior_services.rig.cameras module
CameraControllerCircleFFMPEG_INPUTFFMPEG_OUTPUT_16BITFFMPEG_OUTPUT_8BITPoint2fRectSpinnakerCameraSpinnakerCamera.adc_bit_depthSpinnakerCamera.binningSpinnakerCamera.color_processingSpinnakerCamera.device_typeSpinnakerCamera.exposureSpinnakerCamera.gainSpinnakerCamera.gammaSpinnakerCamera.pixel_formatSpinnakerCamera.region_of_interestSpinnakerCamera.serial_numberSpinnakerCamera.video_writerSpinnakerCamera.validate_roi
SpinnakerCameraAdcBitDepthSpinnakerCameraPixelFormatSpinnakerCameraPixelFormat.B10SpinnakerCameraPixelFormat.B12SpinnakerCameraPixelFormat.B16SpinnakerCameraPixelFormat.B8SpinnakerCameraPixelFormat.BAYERBG10SpinnakerCameraPixelFormat.BAYERBG10PSpinnakerCameraPixelFormat.BAYERBG10PACKEDSpinnakerCameraPixelFormat.BAYERBG12SpinnakerCameraPixelFormat.BAYERBG12PSpinnakerCameraPixelFormat.BAYERBG12PACKEDSpinnakerCameraPixelFormat.BAYERBG16SpinnakerCameraPixelFormat.BAYERBG8SpinnakerCameraPixelFormat.BAYERGB10SpinnakerCameraPixelFormat.BAYERGB10PSpinnakerCameraPixelFormat.BAYERGB10PACKEDSpinnakerCameraPixelFormat.BAYERGB12SpinnakerCameraPixelFormat.BAYERGB12PSpinnakerCameraPixelFormat.BAYERGB12PACKEDSpinnakerCameraPixelFormat.BAYERGB16SpinnakerCameraPixelFormat.BAYERGB8SpinnakerCameraPixelFormat.BAYERGR10SpinnakerCameraPixelFormat.BAYERGR10PSpinnakerCameraPixelFormat.BAYERGR10PACKEDSpinnakerCameraPixelFormat.BAYERGR12SpinnakerCameraPixelFormat.BAYERGR12PSpinnakerCameraPixelFormat.BAYERGR12PACKEDSpinnakerCameraPixelFormat.BAYERGR16SpinnakerCameraPixelFormat.BAYERGR8SpinnakerCameraPixelFormat.BAYERRG10SpinnakerCameraPixelFormat.BAYERRG10PSpinnakerCameraPixelFormat.BAYERRG10PACKEDSpinnakerCameraPixelFormat.BAYERRG12SpinnakerCameraPixelFormat.BAYERRG12PSpinnakerCameraPixelFormat.BAYERRG12PACKEDSpinnakerCameraPixelFormat.BAYERRG16SpinnakerCameraPixelFormat.BAYERRG8SpinnakerCameraPixelFormat.BGR10SpinnakerCameraPixelFormat.BGR10PSpinnakerCameraPixelFormat.BGR12SpinnakerCameraPixelFormat.BGR12PSpinnakerCameraPixelFormat.BGR14SpinnakerCameraPixelFormat.BGR16SpinnakerCameraPixelFormat.BGR565PSpinnakerCameraPixelFormat.BGR8SpinnakerCameraPixelFormat.BGRA10SpinnakerCameraPixelFormat.BGRA10PSpinnakerCameraPixelFormat.BGRA12SpinnakerCameraPixelFormat.BGRA12PSpinnakerCameraPixelFormat.BGRA14SpinnakerCameraPixelFormat.BGRA16SpinnakerCameraPixelFormat.BGRA8SpinnakerCameraPixelFormat.CONFIDENCE1SpinnakerCameraPixelFormat.CONFIDENCE16SpinnakerCameraPixelFormat.CONFIDENCE1PSpinnakerCameraPixelFormat.CONFIDENCE32FSpinnakerCameraPixelFormat.CONFIDENCE8SpinnakerCameraPixelFormat.COORD3D_A10PSpinnakerCameraPixelFormat.COORD3D_A12PSpinnakerCameraPixelFormat.COORD3D_A16SpinnakerCameraPixelFormat.COORD3D_A32FSpinnakerCameraPixelFormat.COORD3D_A8SpinnakerCameraPixelFormat.COORD3D_ABC10PSpinnakerCameraPixelFormat.COORD3D_ABC10P_PLANARSpinnakerCameraPixelFormat.COORD3D_ABC12PSpinnakerCameraPixelFormat.COORD3D_ABC12P_PLANARSpinnakerCameraPixelFormat.COORD3D_ABC16SpinnakerCameraPixelFormat.COORD3D_ABC16_PLANARSpinnakerCameraPixelFormat.COORD3D_ABC32FSpinnakerCameraPixelFormat.COORD3D_ABC32F_PLANARSpinnakerCameraPixelFormat.COORD3D_ABC8SpinnakerCameraPixelFormat.COORD3D_ABC8_PLANARSpinnakerCameraPixelFormat.COORD3D_AC10PSpinnakerCameraPixelFormat.COORD3D_AC10P_PLANARSpinnakerCameraPixelFormat.COORD3D_AC12PSpinnakerCameraPixelFormat.COORD3D_AC12P_PLANARSpinnakerCameraPixelFormat.COORD3D_AC16SpinnakerCameraPixelFormat.COORD3D_AC16_PLANARSpinnakerCameraPixelFormat.COORD3D_AC32FSpinnakerCameraPixelFormat.COORD3D_AC32F_PLANARSpinnakerCameraPixelFormat.COORD3D_AC8SpinnakerCameraPixelFormat.COORD3D_AC8_PLANARSpinnakerCameraPixelFormat.COORD3D_B10PSpinnakerCameraPixelFormat.COORD3D_B12PSpinnakerCameraPixelFormat.COORD3D_B16SpinnakerCameraPixelFormat.COORD3D_B32FSpinnakerCameraPixelFormat.COORD3D_B8SpinnakerCameraPixelFormat.COORD3D_C10PSpinnakerCameraPixelFormat.COORD3D_C12PSpinnakerCameraPixelFormat.COORD3D_C16SpinnakerCameraPixelFormat.COORD3D_C32FSpinnakerCameraPixelFormat.COORD3D_C8SpinnakerCameraPixelFormat.G10SpinnakerCameraPixelFormat.G12SpinnakerCameraPixelFormat.G16SpinnakerCameraPixelFormat.G8SpinnakerCameraPixelFormat.MONO10SpinnakerCameraPixelFormat.MONO10PSpinnakerCameraPixelFormat.MONO10PACKEDSpinnakerCameraPixelFormat.MONO12SpinnakerCameraPixelFormat.MONO12PSpinnakerCameraPixelFormat.MONO12PACKEDSpinnakerCameraPixelFormat.MONO14SpinnakerCameraPixelFormat.MONO16SpinnakerCameraPixelFormat.MONO16SSpinnakerCameraPixelFormat.MONO1PSpinnakerCameraPixelFormat.MONO2PSpinnakerCameraPixelFormat.MONO32FSpinnakerCameraPixelFormat.MONO4PSpinnakerCameraPixelFormat.MONO8SpinnakerCameraPixelFormat.MONO8SSpinnakerCameraPixelFormat.R10SpinnakerCameraPixelFormat.R12SpinnakerCameraPixelFormat.R16SpinnakerCameraPixelFormat.R8SpinnakerCameraPixelFormat.RGB10SpinnakerCameraPixelFormat.RGB10PSpinnakerCameraPixelFormat.RGB10P32SpinnakerCameraPixelFormat.RGB10_PLANARSpinnakerCameraPixelFormat.RGB12SpinnakerCameraPixelFormat.RGB12PSpinnakerCameraPixelFormat.RGB12_PLANARSpinnakerCameraPixelFormat.RGB14SpinnakerCameraPixelFormat.RGB16SpinnakerCameraPixelFormat.RGB16SSpinnakerCameraPixelFormat.RGB16_PLANARSpinnakerCameraPixelFormat.RGB32FSpinnakerCameraPixelFormat.RGB565PSpinnakerCameraPixelFormat.RGB8SpinnakerCameraPixelFormat.RGB8PACKEDSpinnakerCameraPixelFormat.RGB8_PLANARSpinnakerCameraPixelFormat.RGBA10SpinnakerCameraPixelFormat.RGBA10PSpinnakerCameraPixelFormat.RGBA12SpinnakerCameraPixelFormat.RGBA12PSpinnakerCameraPixelFormat.RGBA14SpinnakerCameraPixelFormat.RGBA16SpinnakerCameraPixelFormat.RGBA32FSpinnakerCameraPixelFormat.RGBA8SpinnakerCameraPixelFormat.YCBCR411_8SpinnakerCameraPixelFormat.YCBCR422_8SpinnakerCameraPixelFormat.YCBCR8SpinnakerCameraPixelFormat.YUV411PACKEDSpinnakerCameraPixelFormat.YUV422PACKEDSpinnakerCameraPixelFormat.YUV444PACKED
VideoWriterFfmpegVideoWriterFfmpegFactoryVideoWriterOpenCvWebCamera
- aind_behavior_services.rig.harp module
- aind_behavior_services.rig.network module
- aind_behavior_services.rig.visual_stimulation module
- Module contents
- aind_behavior_services.session package
- Module contents
AindBehaviorSessionModelAindBehaviorSessionModel.aind_behavior_services_pkg_versionAindBehaviorSessionModel.allow_dirty_repoAindBehaviorSessionModel.commit_hashAindBehaviorSessionModel.dateAindBehaviorSessionModel.experimentAindBehaviorSessionModel.experimenterAindBehaviorSessionModel.notesAindBehaviorSessionModel.root_pathAindBehaviorSessionModel.session_nameAindBehaviorSessionModel.skip_hardware_validationAindBehaviorSessionModel.subjectAindBehaviorSessionModel.versionAindBehaviorSessionModel.generate_session_name_defaultAindBehaviorSessionModel.experiment_version
- Module contents
- aind_behavior_services.task_logic package
- Submodules
- aind_behavior_services.task_logic.distributions module
BetaDistributionBetaDistributionParametersBinomialDistributionBinomialDistributionParametersDistributionBaseDistributionFamilyDistributionParametersBaseExponentialDistributionExponentialDistributionParametersGammaDistributionGammaDistributionParametersLogNormalDistributionLogNormalDistributionParametersNormalDistributionNormalDistributionParametersPdfDistributionPdfDistributionParametersPoissonDistributionPoissonDistributionParametersScalarScalarDistributionParameterScalingParametersTruncationParametersUniformDistributionUniformDistributionParameters
- Module contents
Submodules¶
aind_behavior_services.base module¶
- pydantic model aind_behavior_services.base.SchemaVersionedModel[source]¶
Bases:
BaseModelShow JSON schema
{ "title": "SchemaVersionedModel", "type": "object", "properties": { "aind_behavior_services_pkg_version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "aind_behavior_services package version", "type": "string" }, "version": { "description": "schema version", "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": "Version", "type": "string" } }, "required": [ "version" ] }
- Fields:
- Validators:
- field aind_behavior_services_pkg_version: Literal['0.12.2-rc1'] = '0.12.2-rc1'[source]¶
- Constraints:
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-]+)*))?$
- Validated by:
- field version: str [Required][source]¶
schema version
- Constraints:
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-]+)*))?$
- Validated by:
- validator coerce_version » aind_behavior_services_pkg_version, version[source]¶
- Parameters:
v (str)
- Return type:
str
- class aind_behavior_services.base.SemVerAnnotation[source]¶
Bases:
objectA class representing semantic version annotations.
- aind_behavior_services.base.coerce_schema_version(cls, v, version_string='version', check_compatibility=True)[source]¶
- Parameters:
cls (type[SchemaVersionedModel])
v (str)
version_string (str)
check_compatibility (bool)
- Return type:
str
aind_behavior_services.data_types module¶
- pydantic model aind_behavior_services.data_types.DataTypes[source]¶
Bases:
SchemaVersionedModelShow JSON schema
{ "title": "DataTypes", "type": "object", "properties": { "aind_behavior_services_pkg_version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "aind_behavior_services package version", "type": "string" }, "version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "Version", "type": "string" }, "software_event": { "$ref": "#/$defs/SoftwareEvent" }, "render_synch_state": { "$ref": "#/$defs/RenderSynchState" } }, "$defs": { "DataType": { "enum": [ "string", "number", "boolean", "object", "array", "null", "boolean" ], "title": "DataType", "type": "string" }, "RenderSynchState": { "properties": { "sync_quad_value": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The synchronization quad value", "title": "Sync Quad Value" }, "frame_index": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The frame index of the event", "title": "Frame Index" }, "frame_timestamp": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The timestamp of the frame", "title": "Frame Timestamp" } }, "title": "RenderSynchState", "type": "object" }, "SoftwareEvent": { "description": "A software event is a generic event that can be used to track any event that occurs in the software.", "properties": { "name": { "description": "The name of the event", "title": "Name", "type": "string" }, "timestamp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The timestamp of the event", "title": "Timestamp" }, "timestamp_source": { "$ref": "#/$defs/TimestampSource", "default": "null", "description": "The source of the timestamp" }, "frame_index": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The frame index of the event", "title": "Frame Index" }, "frame_timestamp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The timestamp of the frame", "title": "Frame Timestamp" }, "data": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "The data of the event", "title": "Data" }, "data_type": { "$ref": "#/$defs/DataType", "default": "null", "description": "The data type of the event" }, "data_type_hint": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The data type hint of the event", "title": "Data Type Hint" } }, "required": [ "name" ], "title": "SoftwareEvent", "type": "object" }, "TimestampSource": { "enum": [ "null", "harp", "render" ], "title": "TimestampSource", "type": "string" } }, "required": [ "software_event", "render_synch_state" ], "x-abstract": "True" }
- Config:
json_schema_extra: dict = {‘x-abstract’: ‘True’}
- Fields:
- Validators:
- field render_synch_state: RenderSynchState [Required][source]¶
- field software_event: SoftwareEvent [Required][source]¶
- pydantic model aind_behavior_services.data_types.RenderSynchState[source]¶
Bases:
BaseModelShow JSON schema
{ "title": "RenderSynchState", "type": "object", "properties": { "sync_quad_value": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The synchronization quad value", "title": "Sync Quad Value" }, "frame_index": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The frame index of the event", "title": "Frame Index" }, "frame_timestamp": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The timestamp of the frame", "title": "Frame Timestamp" } } }
- pydantic model aind_behavior_services.data_types.SoftwareEvent[source]¶
Bases:
BaseModel,Generic[TData]A software event is a generic event that can be used to track any event that occurs in the software.
Show JSON schema
{ "title": "SoftwareEvent", "description": "A software event is a generic event that can be used to track any event that occurs in the software.", "type": "object", "properties": { "name": { "description": "The name of the event", "title": "Name", "type": "string" }, "timestamp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The timestamp of the event", "title": "Timestamp" }, "timestamp_source": { "$ref": "#/$defs/TimestampSource", "default": "null", "description": "The source of the timestamp" }, "frame_index": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The frame index of the event", "title": "Frame Index" }, "frame_timestamp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The timestamp of the frame", "title": "Frame Timestamp" }, "data": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "The data of the event", "title": "Data" }, "data_type": { "$ref": "#/$defs/DataType", "default": "null", "description": "The data type of the event" }, "data_type_hint": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The data type hint of the event", "title": "Data Type Hint" } }, "$defs": { "DataType": { "enum": [ "string", "number", "boolean", "object", "array", "null", "boolean" ], "title": "DataType", "type": "string" }, "TimestampSource": { "enum": [ "null", "harp", "render" ], "title": "TimestampSource", "type": "string" } }, "required": [ "name" ] }
- Fields:
- Validators:
_fix_typoed_boolean»data_type
- field data_type: DataType = DataType.NULL[source]¶
The data type of the event
- Validated by:
_fix_typoed_boolean
- field timestamp_source: TimestampSource = TimestampSource.NULL[source]¶
The source of the timestamp
aind_behavior_services.message_protocol module¶
- pydantic model aind_behavior_services.message_protocol.HeartbeatPayload[source]¶
Bases:
BaseModelPayload for heartbeat messages indicating system health status.
Heartbeat messages are used to monitor the health and availability of system components. They include a status indicator and optional context information.
Examples
```python heartbeat = HeartbeatPayload(
status=HeartbeatStatus.OK, context={“cpu_usage”: 0.25, “memory_usage”: 0.60}
) print(heartbeat.status) # HeartbeatStatus.OK
- warning_heartbeat = HeartbeatPayload(
status=HeartbeatStatus.WARNING, context={“disk_space_low”: True}
)¶
Show JSON schema
{ "title": "HeartbeatPayload", "description": "Payload for heartbeat messages indicating system health status.\n\nHeartbeat messages are used to monitor the health and availability\nof system components. They include a status indicator and optional\ncontext information.\n\nAttributes:\n context: Optional additional data about the system state\n status: Current health status of the component\n\nExamples:\n ```python\n heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.OK,\n context={\"cpu_usage\": 0.25, \"memory_usage\": 0.60}\n )\n print(heartbeat.status) # HeartbeatStatus.OK\n\n warning_heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.WARNING,\n context={\"disk_space_low\": True}\n )\n ```", "type": "object", "properties": { "payload_type": { "const": "HeartbeatPayload", "default": "HeartbeatPayload", "title": "Payload Type", "type": "string" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the heartbeat message.", "title": "Context" }, "status": { "$ref": "#/$defs/HeartbeatStatus", "description": "The status of the heartbeat message" } }, "$defs": { "HeartbeatStatus": { "description": "Enumeration of possible heartbeat status values.\n\nRepresents the health status of a system component,\nwith higher values indicating more severe issues.\n\nExamples:\n ```python\n HeartbeatStatus.OK # <HeartbeatStatus.OK: 0>\n HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True\n int(HeartbeatStatus.ERROR) # 2\n ```", "enum": [ 0, 1, 2, 3 ], "title": "HeartbeatStatus", "type": "integer" } }, "required": [ "status" ] }
- Fields:
- field context: Annotated[Any | None, SerializeAsAny()] = None[source]¶
Additional context for the heartbeat message.
- field status: HeartbeatStatus [Required][source]¶
The status of the heartbeat message
- class aind_behavior_services.message_protocol.HeartbeatStatus(*values)[source]¶
Bases:
IntEnumEnumeration of possible heartbeat status values.
Represents the health status of a system component, with higher values indicating more severe issues.
Examples
`python HeartbeatStatus.OK # <HeartbeatStatus.OK: 0> HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True int(HeartbeatStatus.ERROR) # 2 `
- class aind_behavior_services.message_protocol.LogLevel(*values)[source]¶
Bases:
IntEnumEnumeration of log levels for the logging system.
Follows standard Python logging levels with integer values that allow for easy comparison and filtering.
Examples
`python LogLevel.ERROR > LogLevel.WARNING # True LogLevel.DEBUG.value # 10 str(LogLevel.INFO) # 'LogLevel.INFO' `
- pydantic model aind_behavior_services.message_protocol.LogPayload[source]¶
Bases:
BaseModelPayload for log messages containing logging information.
This payload carries log data including the message content, severity level, optional context, and application version.
Examples
```python log_payload = LogPayload(
message=”System startup complete”, level=LogLevel.INFO, context={“operator”: “John Doe”}, application_version=”1.0.0”
) print(log_payload.level) # LogLevel.INFO ```
Show JSON schema
{ "title": "LogPayload", "description": "Payload for log messages containing logging information.\n\nThis payload carries log data including the message content,\nseverity level, optional context, and application version.\n\nAttributes:\n message: The actual log message text\n level: Severity level of the log entry\n context: Optional additional data related to the log\n application_version: Version of the application generating the log\n\nExamples:\n ```python\n log_payload = LogPayload(\n message=\"System startup complete\",\n level=LogLevel.INFO,\n context={\"operator\": \"John Doe\"},\n application_version=\"1.0.0\"\n )\n print(log_payload.level) # LogLevel.INFO\n ```", "type": "object", "properties": { "payload_type": { "const": "LogPayload", "default": "LogPayload", "title": "Payload Type", "type": "string" }, "message": { "description": "The message of the log", "title": "Message", "type": "string" }, "level": { "$ref": "#/$defs/LogLevel", "default": 10, "description": "The level of the log message" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the log message", "title": "Context" }, "application_version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The version of the application", "title": "Application Version" } }, "$defs": { "LogLevel": { "description": "Enumeration of log levels for the logging system.\n\nFollows standard Python logging levels with integer values\nthat allow for easy comparison and filtering.\n\nExamples:\n ```python\n LogLevel.ERROR > LogLevel.WARNING # True\n LogLevel.DEBUG.value # 10\n str(LogLevel.INFO) # 'LogLevel.INFO'\n ```", "enum": [ 50, 40, 30, 20, 10, 0 ], "title": "LogLevel", "type": "integer" } }, "required": [ "message" ] }
- Fields:
- pydantic model aind_behavior_services.message_protocol.Message[source]¶
Bases:
RootModelShow JSON schema
{ "title": "Message", "$defs": { "MessageType": { "description": "Enumeration of possible message types in the protocol.\n\nExamples:\n ```python\n MessageType.REQUEST # 'request'\n MessageType.REPLY # 'reply'\n MessageType.EVENT # 'event'\n ```", "enum": [ "request", "reply", "event" ], "title": "MessageType", "type": "string" }, "_Message_Any_": { "properties": { "message_type": { "$ref": "#/$defs/MessageType" }, "protocol_version": { "const": 0, "default": 0, "title": "Protocol Version", "type": "integer" }, "timestamp": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The timestamp of the message", "title": "Timestamp" }, "payload": { "description": "The payload of the message", "title": "Payload" }, "process_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Process that created the message", "title": "Process Id" }, "hostname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Hostname that created the message", "title": "Hostname" }, "rig_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Rig name that created the message", "title": "Rig Name" } }, "required": [ "message_type", "timestamp", "payload", "process_id", "hostname", "rig_name" ], "title": "_Message[Any]", "type": "object" } }, "$ref": "#/$defs/_Message_Any_" }
- pydantic model aind_behavior_services.message_protocol.MessageProtocol[source]¶
Bases:
BaseModelContainer for the complete message protocol including all registered message types.
Show JSON schema
{ "title": "MessageProtocol", "description": "Container for the complete message protocol including all registered message types.", "type": "object", "properties": { "registered_message": { "$ref": "#/$defs/RegisteredMessages" }, "message": { "$ref": "#/$defs/Message" } }, "$defs": { "HeartbeatPayload": { "description": "Payload for heartbeat messages indicating system health status.\n\nHeartbeat messages are used to monitor the health and availability\nof system components. They include a status indicator and optional\ncontext information.\n\nAttributes:\n context: Optional additional data about the system state\n status: Current health status of the component\n\nExamples:\n ```python\n heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.OK,\n context={\"cpu_usage\": 0.25, \"memory_usage\": 0.60}\n )\n print(heartbeat.status) # HeartbeatStatus.OK\n\n warning_heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.WARNING,\n context={\"disk_space_low\": True}\n )\n ```", "properties": { "payload_type": { "const": "HeartbeatPayload", "default": "HeartbeatPayload", "title": "Payload Type", "type": "string" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the heartbeat message.", "title": "Context" }, "status": { "$ref": "#/$defs/HeartbeatStatus", "description": "The status of the heartbeat message" } }, "required": [ "status" ], "title": "HeartbeatPayload", "type": "object" }, "HeartbeatStatus": { "description": "Enumeration of possible heartbeat status values.\n\nRepresents the health status of a system component,\nwith higher values indicating more severe issues.\n\nExamples:\n ```python\n HeartbeatStatus.OK # <HeartbeatStatus.OK: 0>\n HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True\n int(HeartbeatStatus.ERROR) # 2\n ```", "enum": [ 0, 1, 2, 3 ], "title": "HeartbeatStatus", "type": "integer" }, "LogLevel": { "description": "Enumeration of log levels for the logging system.\n\nFollows standard Python logging levels with integer values\nthat allow for easy comparison and filtering.\n\nExamples:\n ```python\n LogLevel.ERROR > LogLevel.WARNING # True\n LogLevel.DEBUG.value # 10\n str(LogLevel.INFO) # 'LogLevel.INFO'\n ```", "enum": [ 50, 40, 30, 20, 10, 0 ], "title": "LogLevel", "type": "integer" }, "LogPayload": { "description": "Payload for log messages containing logging information.\n\nThis payload carries log data including the message content,\nseverity level, optional context, and application version.\n\nAttributes:\n message: The actual log message text\n level: Severity level of the log entry\n context: Optional additional data related to the log\n application_version: Version of the application generating the log\n\nExamples:\n ```python\n log_payload = LogPayload(\n message=\"System startup complete\",\n level=LogLevel.INFO,\n context={\"operator\": \"John Doe\"},\n application_version=\"1.0.0\"\n )\n print(log_payload.level) # LogLevel.INFO\n ```", "properties": { "payload_type": { "const": "LogPayload", "default": "LogPayload", "title": "Payload Type", "type": "string" }, "message": { "description": "The message of the log", "title": "Message", "type": "string" }, "level": { "$ref": "#/$defs/LogLevel", "default": 10, "description": "The level of the log message" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the log message", "title": "Context" }, "application_version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The version of the application", "title": "Application Version" } }, "required": [ "message" ], "title": "LogPayload", "type": "object" }, "Message": { "$ref": "#/$defs/_Message_Any_", "title": "Message" }, "MessageType": { "description": "Enumeration of possible message types in the protocol.\n\nExamples:\n ```python\n MessageType.REQUEST # 'request'\n MessageType.REPLY # 'reply'\n MessageType.EVENT # 'event'\n ```", "enum": [ "request", "reply", "event" ], "title": "MessageType", "type": "string" }, "RegisteredMessages": { "properties": { "message_type": { "$ref": "#/$defs/MessageType" }, "protocol_version": { "const": 0, "default": 0, "title": "Protocol Version", "type": "integer" }, "timestamp": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The timestamp of the message", "title": "Timestamp" }, "payload": { "$ref": "#/$defs/RegisteredPayload", "description": "The payload of the message" }, "process_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Process that created the message", "title": "Process Id" }, "hostname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Hostname that created the message", "title": "Hostname" }, "rig_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Rig name that created the message", "title": "Rig Name" } }, "required": [ "message_type", "timestamp", "payload", "process_id", "hostname", "rig_name" ], "title": "RegisteredMessages", "type": "object" }, "RegisteredPayload": { "discriminator": { "mapping": { "HeartbeatPayload": "#/$defs/HeartbeatPayload", "LogPayload": "#/$defs/LogPayload" }, "propertyName": "payload_type" }, "oneOf": [ { "$ref": "#/$defs/LogPayload" }, { "$ref": "#/$defs/HeartbeatPayload" } ], "title": "RegisteredPayload", "x-abstract": true }, "_Message_Any_": { "properties": { "message_type": { "$ref": "#/$defs/MessageType" }, "protocol_version": { "const": 0, "default": 0, "title": "Protocol Version", "type": "integer" }, "timestamp": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The timestamp of the message", "title": "Timestamp" }, "payload": { "description": "The payload of the message", "title": "Payload" }, "process_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Process that created the message", "title": "Process Id" }, "hostname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Hostname that created the message", "title": "Hostname" }, "rig_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Rig name that created the message", "title": "Rig Name" } }, "required": [ "message_type", "timestamp", "payload", "process_id", "hostname", "rig_name" ], "title": "_Message[Any]", "type": "object" } }, "required": [ "registered_message", "message" ], "x-abstract": true }
- Config:
json_schema_extra: dict = {‘x-abstract’: True}
- Fields:
- field registered_message: RegisteredMessages [Required][source]¶
- class aind_behavior_services.message_protocol.MessageType(*values)[source]¶
Bases:
StrEnumEnumeration of possible message types in the protocol.
Examples
`python MessageType.REQUEST # 'request' MessageType.REPLY # 'reply' MessageType.EVENT # 'event' `
- pydantic model aind_behavior_services.message_protocol.RegisteredMessages[source]¶
Bases:
_Message[RegisteredPayload]Show JSON schema
{ "title": "RegisteredMessages", "type": "object", "properties": { "message_type": { "$ref": "#/$defs/MessageType" }, "protocol_version": { "const": 0, "default": 0, "title": "Protocol Version", "type": "integer" }, "timestamp": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "The timestamp of the message", "title": "Timestamp" }, "payload": { "$ref": "#/$defs/RegisteredPayload", "description": "The payload of the message" }, "process_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Process that created the message", "title": "Process Id" }, "hostname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Hostname that created the message", "title": "Hostname" }, "rig_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Rig name that created the message", "title": "Rig Name" } }, "$defs": { "HeartbeatPayload": { "description": "Payload for heartbeat messages indicating system health status.\n\nHeartbeat messages are used to monitor the health and availability\nof system components. They include a status indicator and optional\ncontext information.\n\nAttributes:\n context: Optional additional data about the system state\n status: Current health status of the component\n\nExamples:\n ```python\n heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.OK,\n context={\"cpu_usage\": 0.25, \"memory_usage\": 0.60}\n )\n print(heartbeat.status) # HeartbeatStatus.OK\n\n warning_heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.WARNING,\n context={\"disk_space_low\": True}\n )\n ```", "properties": { "payload_type": { "const": "HeartbeatPayload", "default": "HeartbeatPayload", "title": "Payload Type", "type": "string" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the heartbeat message.", "title": "Context" }, "status": { "$ref": "#/$defs/HeartbeatStatus", "description": "The status of the heartbeat message" } }, "required": [ "status" ], "title": "HeartbeatPayload", "type": "object" }, "HeartbeatStatus": { "description": "Enumeration of possible heartbeat status values.\n\nRepresents the health status of a system component,\nwith higher values indicating more severe issues.\n\nExamples:\n ```python\n HeartbeatStatus.OK # <HeartbeatStatus.OK: 0>\n HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True\n int(HeartbeatStatus.ERROR) # 2\n ```", "enum": [ 0, 1, 2, 3 ], "title": "HeartbeatStatus", "type": "integer" }, "LogLevel": { "description": "Enumeration of log levels for the logging system.\n\nFollows standard Python logging levels with integer values\nthat allow for easy comparison and filtering.\n\nExamples:\n ```python\n LogLevel.ERROR > LogLevel.WARNING # True\n LogLevel.DEBUG.value # 10\n str(LogLevel.INFO) # 'LogLevel.INFO'\n ```", "enum": [ 50, 40, 30, 20, 10, 0 ], "title": "LogLevel", "type": "integer" }, "LogPayload": { "description": "Payload for log messages containing logging information.\n\nThis payload carries log data including the message content,\nseverity level, optional context, and application version.\n\nAttributes:\n message: The actual log message text\n level: Severity level of the log entry\n context: Optional additional data related to the log\n application_version: Version of the application generating the log\n\nExamples:\n ```python\n log_payload = LogPayload(\n message=\"System startup complete\",\n level=LogLevel.INFO,\n context={\"operator\": \"John Doe\"},\n application_version=\"1.0.0\"\n )\n print(log_payload.level) # LogLevel.INFO\n ```", "properties": { "payload_type": { "const": "LogPayload", "default": "LogPayload", "title": "Payload Type", "type": "string" }, "message": { "description": "The message of the log", "title": "Message", "type": "string" }, "level": { "$ref": "#/$defs/LogLevel", "default": 10, "description": "The level of the log message" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the log message", "title": "Context" }, "application_version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The version of the application", "title": "Application Version" } }, "required": [ "message" ], "title": "LogPayload", "type": "object" }, "MessageType": { "description": "Enumeration of possible message types in the protocol.\n\nExamples:\n ```python\n MessageType.REQUEST # 'request'\n MessageType.REPLY # 'reply'\n MessageType.EVENT # 'event'\n ```", "enum": [ "request", "reply", "event" ], "title": "MessageType", "type": "string" }, "RegisteredPayload": { "discriminator": { "mapping": { "HeartbeatPayload": "#/$defs/HeartbeatPayload", "LogPayload": "#/$defs/LogPayload" }, "propertyName": "payload_type" }, "oneOf": [ { "$ref": "#/$defs/LogPayload" }, { "$ref": "#/$defs/HeartbeatPayload" } ], "title": "RegisteredPayload", "x-abstract": true } }, "required": [ "message_type", "timestamp", "payload", "process_id", "hostname", "rig_name" ] }
- Fields:
- pydantic model aind_behavior_services.message_protocol.RegisteredPayload[source]¶
Bases:
RootModelShow JSON schema
{ "title": "RegisteredPayload", "$defs": { "HeartbeatPayload": { "description": "Payload for heartbeat messages indicating system health status.\n\nHeartbeat messages are used to monitor the health and availability\nof system components. They include a status indicator and optional\ncontext information.\n\nAttributes:\n context: Optional additional data about the system state\n status: Current health status of the component\n\nExamples:\n ```python\n heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.OK,\n context={\"cpu_usage\": 0.25, \"memory_usage\": 0.60}\n )\n print(heartbeat.status) # HeartbeatStatus.OK\n\n warning_heartbeat = HeartbeatPayload(\n status=HeartbeatStatus.WARNING,\n context={\"disk_space_low\": True}\n )\n ```", "properties": { "payload_type": { "const": "HeartbeatPayload", "default": "HeartbeatPayload", "title": "Payload Type", "type": "string" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the heartbeat message.", "title": "Context" }, "status": { "$ref": "#/$defs/HeartbeatStatus", "description": "The status of the heartbeat message" } }, "required": [ "status" ], "title": "HeartbeatPayload", "type": "object" }, "HeartbeatStatus": { "description": "Enumeration of possible heartbeat status values.\n\nRepresents the health status of a system component,\nwith higher values indicating more severe issues.\n\nExamples:\n ```python\n HeartbeatStatus.OK # <HeartbeatStatus.OK: 0>\n HeartbeatStatus.CRITICAL > HeartbeatStatus.WARNING # True\n int(HeartbeatStatus.ERROR) # 2\n ```", "enum": [ 0, 1, 2, 3 ], "title": "HeartbeatStatus", "type": "integer" }, "LogLevel": { "description": "Enumeration of log levels for the logging system.\n\nFollows standard Python logging levels with integer values\nthat allow for easy comparison and filtering.\n\nExamples:\n ```python\n LogLevel.ERROR > LogLevel.WARNING # True\n LogLevel.DEBUG.value # 10\n str(LogLevel.INFO) # 'LogLevel.INFO'\n ```", "enum": [ 50, 40, 30, 20, 10, 0 ], "title": "LogLevel", "type": "integer" }, "LogPayload": { "description": "Payload for log messages containing logging information.\n\nThis payload carries log data including the message content,\nseverity level, optional context, and application version.\n\nAttributes:\n message: The actual log message text\n level: Severity level of the log entry\n context: Optional additional data related to the log\n application_version: Version of the application generating the log\n\nExamples:\n ```python\n log_payload = LogPayload(\n message=\"System startup complete\",\n level=LogLevel.INFO,\n context={\"operator\": \"John Doe\"},\n application_version=\"1.0.0\"\n )\n print(log_payload.level) # LogLevel.INFO\n ```", "properties": { "payload_type": { "const": "LogPayload", "default": "LogPayload", "title": "Payload Type", "type": "string" }, "message": { "description": "The message of the log", "title": "Message", "type": "string" }, "level": { "$ref": "#/$defs/LogLevel", "default": 10, "description": "The level of the log message" }, "context": { "anyOf": [ {}, { "type": "null" } ], "default": null, "description": "Additional context for the log message", "title": "Context" }, "application_version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The version of the application", "title": "Application Version" } }, "required": [ "message" ], "title": "LogPayload", "type": "object" } }, "discriminator": { "mapping": { "HeartbeatPayload": "#/$defs/HeartbeatPayload", "LogPayload": "#/$defs/LogPayload" }, "propertyName": "payload_type" }, "oneOf": [ { "$ref": "#/$defs/LogPayload" }, { "$ref": "#/$defs/HeartbeatPayload" } ], "x-abstract": true }
aind_behavior_services.patterns module¶
aind_behavior_services.utils module¶
- class aind_behavior_services.utils.CustomGenerateJsonSchema(*args, **kwargs)[source]¶
Bases:
GenerateJsonSchema- enum_schema(schema)[source]¶
Generates a JSON schema that matches an Enum value.
- Parameters:
schema (EnumSchema) – The core schema.
- Returns:
The generated JSON schema.
- Return type:
dict[str, Any]
- get_flattened_oneof(schemas)[source]¶
- Parameters:
schemas (list[dict[str, Any]])
- Return type:
dict[str, Any]
- literal_schema(schema)[source]¶
Generates a JSON schema that matches a literal value.
- Parameters:
schema (LiteralSchema) – The core schema.
- Returns:
The generated JSON schema.
- Return type:
dict[str, Any]
- aind_behavior_services.utils.bonsai_sgen(schema_path, output_path, namespace=None, root_element=None, serializer=None)[source]¶
Runs Bonsai.SGen to generate a Bonsai-compatible schema from a json-schema model For more information run bonsai.sgen –help in the command line.
- Returns:
The result of running the command.
- Return type:
CompletedProcess
- Parameters:
schema_path (PathLike) – Target Json Schema file
output_path (PathLike) – Specifies the name of the file containing the generated code.
namespace (Optional[str], optional) – Specifies the namespace to use for all generated serialization classes. Defaults to DataSchema.
root_element (Optional[str], optional) – Specifies the name of the class used to represent the schema root element. If None, it will use the json schema root element. Defaults to None.
serializer (Optional[List[BonsaiSgenSerializers]], optional) – Specifies the serializer data annotations to include in the generated classes. Defaults to None.
- aind_behavior_services.utils.convert_pydantic_to_bonsai(model, *, model_name=None, json_schema_output_dir=PosixPath('src/DataSchemas'), cs_output_dir=PosixPath('src/Extensions'), cs_namespace='DataSchema', cs_serializer=None, json_schema_export_kwargs=None, root_element=None)[source]¶
- Parameters:
model (BaseModel)
model_name (str | None)
json_schema_output_dir (PathLike)
cs_output_dir (PathLike | None)
cs_namespace (str)
cs_serializer (List[BonsaiSgenSerializers] | None)
json_schema_export_kwargs (Dict[str, Any] | None)
root_element (str | None)
- Return type:
CompletedProcess | None
- aind_behavior_services.utils.export_schema(model, schema_generator=<class 'aind_behavior_services.utils.CustomGenerateJsonSchema'>, mode='serialization', remove_root=True)[source]¶
Export the schema of a model to a json file
- Parameters:
model (BaseModel)
schema_generator (Type[GenerateJsonSchema])
mode (Literal['validation', 'serialization'])
remove_root (bool)
- aind_behavior_services.utils.format_datetime(value, is_tz_strict=False)[source]¶
- Parameters:
value (datetime)
is_tz_strict (bool)
- Return type:
str
- aind_behavior_services.utils.get_fields_of_type(searchable, target_type, *, recursive=True, stop_recursion_on_type=True)[source]¶
- Parameters:
searchable (BaseModel | Dict | List)
target_type (Type[T])
recursive (bool)
stop_recursion_on_type (bool)
- Return type:
List[Tuple[str | None, T]]
- aind_behavior_services.utils.model_from_json_file(json_path, model)[source]¶
- Parameters:
json_path (PathLike | str)
model (type[TModel])
- Return type:
TModel
- aind_behavior_services.utils.now()[source]¶
Returns the current time as a timezone unaware datetime.
- Return type:
datetime
- aind_behavior_services.utils.open_bonsai_process(workflow_file, bonsai_exe='bonsai/bonsai.exe', is_editor_mode=True, is_start_flag=True, layout=None, additional_properties=None, log_file_name=None, cwd=None, creation_flags=None, print_cmd=False)[source]¶
- Parameters:
workflow_file (PathLike | str)
bonsai_exe (PathLike | str)
is_editor_mode (bool)
is_start_flag (bool)
layout (PathLike | str | None)
additional_properties (Dict[str, str] | None)
log_file_name (str | None)
cwd (PathLike | str | None)
creation_flags (int | None)
print_cmd (bool)
- Return type:
Popen
- aind_behavior_services.utils.pascal_to_snake_case(s)[source]¶
Converts a PascalCase string to snake_case.
- Parameters:
s (str) – The PascalCase string to be converted.
- Returns:
The snake_case string.
- Return type:
str
- aind_behavior_services.utils.run_bonsai_process(workflow_file, bonsai_exe='bonsai/bonsai.exe', is_editor_mode=True, is_start_flag=True, layout=None, additional_properties=None, cwd=None, timeout=None, print_cmd=False)[source]¶
- Parameters:
workflow_file (PathLike | str)
bonsai_exe (PathLike | str)
is_editor_mode (bool)
is_start_flag (bool)
layout (PathLike | str | None)
additional_properties (Dict[str, str] | None)
cwd (PathLike | str | None)
timeout (float | None)
print_cmd (bool)
- Return type:
CompletedProcess
- aind_behavior_services.utils.screaming_snake_case_to_pascal_case(s)[source]¶
Converts a SCREAMING_SNAKE_CASE string to PascalCase.
- Parameters:
s (str) – The SCREAMING_SNAKE_CASE string to be converted.
- Returns:
The PascalCase string.
- Return type:
str
- aind_behavior_services.utils.snake_to_pascal_case(s)[source]¶
Converts a snake_case string to PascalCase.
- Parameters:
s (str) – The snake_case string to be converted.
- Returns:
The PascalCase string.
- Return type:
str
Module contents¶
- pydantic model aind_behavior_services.AindBehaviorRigModel[source]¶
Bases:
SchemaVersionedModelShow JSON schema
{ "title": "AindBehaviorRigModel", "type": "object", "properties": { "aind_behavior_services_pkg_version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "aind_behavior_services package version", "type": "string" }, "version": { "description": "schema version", "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": "Version", "type": "string" }, "computer_name": { "description": "Computer name", "title": "Computer Name", "type": "string" }, "rig_name": { "description": "Rig name", "title": "Rig Name", "type": "string" } }, "required": [ "version", "rig_name" ] }
- Fields:
computer_name (str)rig_name (str)
- Validators:
- pydantic model aind_behavior_services.AindBehaviorSessionModel[source]¶
Bases:
SchemaVersionedModelShow JSON schema
{ "title": "AindBehaviorSessionModel", "type": "object", "properties": { "aind_behavior_services_pkg_version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "aind_behavior_services package version", "type": "string" }, "version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "Version", "type": "string" }, "experiment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the experiment", "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": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "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.", "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": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Notes about the experiment", "title": "Notes" }, "commit_hash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Commit hash of the repository", "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" ] }
- Fields:
- Validators:
generate_session_name_default»all fields
- field date: Annotated[AwareDatetime, WrapValidator(func=_add_default_tz, json_schema_input_type=PydanticUndefined), FieldInfo(annotation=NoneType, required=True, validate_default=True)] [Optional][source]¶
Date of the experiment
- Constraints:
func = <function _add_default_tz at 0x7ff2bb16a160>
json_schema_input_type = PydanticUndefined
- Validated by:
- field session_name: str | None = None[source]¶
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.
- Validated by:
- pydantic model aind_behavior_services.AindBehaviorTaskLogicModel[source]¶
Bases:
TaskShow JSON schema
{ "title": "AindBehaviorTaskLogicModel", "type": "object", "properties": { "name": { "description": "Name of the task.", "title": "Name", "type": "string" }, "description": { "default": "", "description": "Description of the task.", "title": "Description", "type": "string" }, "task_parameters": { "$ref": "#/$defs/TaskParameters", "description": "Parameters of the task logic" }, "version": { "description": "task schema version", "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": "Version", "type": "string" }, "stage_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional stage name the `Task` object instance represents.", "title": "Stage Name" } }, "$defs": { "TaskParameters": { "additionalProperties": true, "properties": { "rng_seed": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Seed of the random number generator", "title": "Rng Seed" }, "aind_behavior_services_pkg_version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "aind_behavior_services package version", "type": "string" } }, "title": "TaskParameters", "type": "object" } }, "additionalProperties": false, "required": [ "name", "task_parameters", "version" ] }
- Config:
extra: str = forbid
validate_assignment: bool = True
validate_default: bool = True
strict: bool = True
str_strip_whitespace: bool = True
- Fields:
- Validators:
- field task_parameters: TaskParameters [Required][source]¶
Parameters of the task logic
- pydantic model aind_behavior_services.SchemaVersionedModel[source]¶
Bases:
BaseModelShow JSON schema
{ "title": "SchemaVersionedModel", "type": "object", "properties": { "aind_behavior_services_pkg_version": { "const": "0.12.2-rc1", "default": "0.12.2-rc1", "title": "aind_behavior_services package version", "type": "string" }, "version": { "description": "schema version", "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": "Version", "type": "string" } }, "required": [ "version" ] }
- Fields:
- Validators:
- field aind_behavior_services_pkg_version: Literal['0.12.2-rc1'] = '0.12.2-rc1'[source]¶
- Constraints:
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-]+)*))?$
- Validated by:
- field version: str [Required][source]¶
schema version
- Constraints:
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-]+)*))?$
- Validated by:
- validator coerce_version » aind_behavior_services_pkg_version, version[source]¶
- Parameters:
v (str)
- Return type:
str