Skip to content

Commit f51184d

Browse files
committed
Refactor to latest version of services
1 parent 34c28ee commit f51184d

File tree

9 files changed

+332
-46
lines changed

9 files changed

+332
-46
lines changed

examples/example.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import aind_behavior_services.calibration.load_cells as lcc
55
import aind_behavior_services.rig as rig
66
import aind_behavior_telekinesis.task_logic as tl
7-
from aind_behavior_services import db_utils as db
87
from aind_behavior_services.calibration.aind_manipulator import (
98
AindManipulatorCalibration,
109
AindManipulatorCalibrationInput,
@@ -75,7 +74,7 @@ def mock_rig() -> AindTelekinesisRig:
7574
)
7675
water_valve_calibration.output = WaterValveCalibrationOutput(slope=1.0 / 20, offset=0) # For testing purposes
7776

78-
video_writer = rig.VideoWriterOpenCv(
77+
video_writer = rig.cameras.VideoWriterOpenCv(
7978
frame_rate=25,
8079
container_extension="avi",
8180
)
@@ -87,10 +86,10 @@ def mock_rig() -> AindTelekinesisRig:
8786
)
8887
return AindTelekinesisRig(
8988
rig_name="BCI_Bonsai_i",
90-
triggered_camera_controller=rig.CameraController[rig.SpinnakerCamera](
89+
triggered_camera_controller=rig.cameras.CameraController[rig.cameras.SpinnakerCamera](
9190
frame_rate=25,
9291
cameras={
93-
"MainCamera": rig.SpinnakerCamera(
92+
"MainCamera": rig.cameras.SpinnakerCamera(
9493
serial_number="SerialNumber",
9594
binning=2,
9695
exposure=10000,
@@ -100,9 +99,9 @@ def mock_rig() -> AindTelekinesisRig:
10099
},
101100
),
102101
harp_load_cells=lcc.LoadCells(port_name="COM4", calibration=load_cells_calibration),
103-
harp_behavior=rig.HarpBehavior(port_name="COM6"),
104-
harp_lickometer=rig.HarpLicketySplit(port_name="COM8"),
105-
harp_clock_generator=rig.HarpWhiteRabbit(port_name="COM3"),
102+
harp_behavior=rig.harp.HarpBehavior(port_name="COM6"),
103+
harp_lickometer=rig.harp.HarpLicketySplit(port_name="COM8"),
104+
harp_clock_generator=rig.harp.HarpWhiteRabbit(port_name="COM3"),
106105
harp_analog_input=None,
107106
manipulator=AindManipulatorDevice(port_name="COM5", calibration=manipulator_calibration),
108107
calibration=RigCalibration(water_valve=water_valve_calibration),
@@ -165,23 +164,14 @@ def mock_task_logic() -> tl.AindTelekinesisTaskLogic:
165164
)
166165

167166

168-
def mock_subject_database() -> db.SubjectDataBase:
169-
"""Generates a mock database object"""
170-
database = db.SubjectDataBase()
171-
database.add_subject("test", db.SubjectEntry(task_logic_target="preward_intercept_stageA"))
172-
database.add_subject("test2", db.SubjectEntry(task_logic_target="does_notexist"))
173-
return database
174-
175-
176167
def main(path_seed: str = "./local/{schema}.json"):
177168
example_session = mock_session()
178169
example_rig = mock_rig()
179170
example_task_logic = mock_task_logic()
180-
example_database = mock_subject_database()
181171

182172
os.makedirs(os.path.dirname(path_seed), exist_ok=True)
183173

184-
models = [example_task_logic, example_session, example_rig, example_database]
174+
models = [example_task_logic, example_session, example_rig]
185175

186176
for model in models:
187177
with open(path_seed.format(schema=model.__class__.__name__), "w", encoding="utf-8") as f:

examples/example_w_luts.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import aind_behavior_services.rig as rig
55
import aind_behavior_telekinesis.task_logic as tl
6-
from aind_behavior_services import db_utils as db
76
from aind_behavior_services.calibration.aind_manipulator import (
87
AindManipulatorCalibration,
98
AindManipulatorCalibrationInput,
@@ -76,17 +75,17 @@ def mock_rig() -> AindTelekinesisRig:
7675
)
7776
water_valve_calibration.output = WaterValveCalibrationOutput(slope=1.0 / 20, offset=0) # For testing purposes
7877

79-
video_writer = rig.VideoWriterOpenCv(
78+
video_writer = rig.cameras.VideoWriterOpenCv(
8079
frame_rate=25,
8180
container_extension="avi",
8281
)
8382

8483
return AindTelekinesisRig(
8584
rig_name="BCI_Bonsai_i",
86-
triggered_camera_controller=rig.CameraController[rig.SpinnakerCamera](
85+
triggered_camera_controller=rig.cameras.CameraController[rig.cameras.SpinnakerCamera](
8786
frame_rate=25,
8887
cameras={
89-
"MainCamera": rig.SpinnakerCamera(
88+
"MainCamera": rig.cameras.SpinnakerCamera(
9089
serial_number="23381093",
9190
binning=2,
9291
exposure=10000,
@@ -97,9 +96,9 @@ def mock_rig() -> AindTelekinesisRig:
9796
},
9897
),
9998
harp_load_cells=None,
100-
harp_behavior=rig.HarpBehavior(port_name="COM4"),
101-
harp_lickometer=rig.HarpLicketySplit(port_name="COM6"),
102-
harp_clock_generator=rig.HarpWhiteRabbit(port_name="COM7"),
99+
harp_behavior=rig.harp.HarpBehavior(port_name="COM4"),
100+
harp_lickometer=rig.harp.HarpLicketySplit(port_name="COM6"),
101+
harp_clock_generator=rig.harp.HarpWhiteRabbit(port_name="COM7"),
103102
harp_analog_input=None,
104103
manipulator=AindManipulatorDevice(port_name="COM5", calibration=manipulator_calibration),
105104
calibration=RigCalibration(water_valve=water_valve_calibration),
@@ -170,14 +169,6 @@ def mock_task_logic() -> tl.AindTelekinesisTaskLogic:
170169
)
171170

172171

173-
def mock_subject_database() -> db.SubjectDataBase:
174-
"""Generates a mock database object"""
175-
database = db.SubjectDataBase()
176-
database.add_subject("test", db.SubjectEntry(task_logic_target="preward_intercept_stageA"))
177-
database.add_subject("test2", db.SubjectEntry(task_logic_target="does_notexist"))
178-
return database
179-
180-
181172
def generate_luts() -> None:
182173
import numpy as np
183174
from PIL import Image
@@ -200,11 +191,10 @@ def main(path_seed: str = "{LOCAL_ASSET_FOLDER}/{schema}.json"):
200191
example_session = mock_session()
201192
example_rig = mock_rig()
202193
example_task_logic = mock_task_logic()
203-
example_database = mock_subject_database()
204194
os.makedirs(os.path.dirname(path_seed).format(LOCAL_ASSET_FOLDER=LOCAL_ASSET_FOLDER, schema=""), exist_ok=True)
205195
generate_luts()
206196

207-
models = [example_task_logic, example_session, example_rig, example_database]
197+
models = [example_task_logic, example_session, example_rig]
208198

209199
for model in models:
210200
with open(

src/DataSchemas/aind_behavior_session_model.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"properties": {
33
"aind_behavior_services_pkg_version": {
4-
"default": "0.10.2",
4+
"default": "0.11.0",
55
"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-]+)*))?$",
66
"title": "aind_behavior_services package version",
77
"type": "string"

src/DataSchemas/aind_behavior_telekinesis/rig.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,15 @@ class Slap2pInterface(_OphysInterfaceBase):
7575

7676
class AindTelekinesisRig(AindBehaviorRigModel):
7777
version: Literal[__version__] = __version__
78-
triggered_camera_controller: rig.CameraController[rig.SpinnakerCamera] = Field(
78+
triggered_camera_controller: rig.cameras.CameraController[rig.cameras.SpinnakerCamera] = Field(
7979
..., description="Required camera controller to triggered cameras."
8080
)
81-
harp_behavior: rig.HarpBehavior = Field(..., description="Harp behavior")
82-
harp_lickometer: rig.HarpLicketySplit = Field(..., description="Harp lickometer")
81+
harp_behavior: rig.harp.HarpBehavior = Field(..., description="Harp behavior")
82+
harp_lickometer: rig.harp.HarpLicketySplit = Field(..., description="Harp lickometer")
8383
harp_load_cells: Optional[lcc.LoadCells] = Field(default=None, description="Harp load cells")
84-
harp_clock_generator: rig.HarpWhiteRabbit = Field(..., description="Harp clock generator")
85-
harp_analog_input: Optional[rig.HarpAnalogInput] = Field(default=None, description="Harp analog input")
86-
harp_environment_sensor: Optional[rig.HarpEnvironmentSensor] = Field(
84+
harp_clock_generator: rig.harp.HarpWhiteRabbit = Field(..., description="Harp clock generator")
85+
harp_analog_input: Optional[rig.harp.HarpAnalogInput] = Field(default=None, description="Harp analog input")
86+
harp_environment_sensor: Optional[rig.harp.HarpEnvironmentSensor] = Field(
8787
default=None, description="Harp environment sensor"
8888
)
8989
manipulator: AindManipulatorDevice = Field(..., description="Manipulator")

src/DataSchemas/aind_telekinesis_rig.json

Lines changed: 118 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,19 @@
169169
"title": "Device Type",
170170
"type": "string"
171171
},
172+
"device_name": {
173+
"default": null,
174+
"description": "Device name",
175+
"oneOf": [
176+
{
177+
"type": "string"
178+
},
179+
{
180+
"type": "null"
181+
}
182+
],
183+
"title": "Device Name"
184+
},
172185
"additional_settings": {
173186
"$ref": "#/definitions/AindManipulatorAdditionalSettings",
174187
"default": {
@@ -327,6 +340,19 @@
327340
"title": "Device Type",
328341
"type": "string"
329342
},
343+
"device_name": {
344+
"default": null,
345+
"description": "Device name",
346+
"oneOf": [
347+
{
348+
"type": "string"
349+
},
350+
{
351+
"type": "null"
352+
}
353+
],
354+
"title": "Device Name"
355+
},
330356
"additional_settings": {
331357
"default": null,
332358
"description": "Additional settings",
@@ -416,6 +442,19 @@
416442
"title": "Device Type",
417443
"type": "string"
418444
},
445+
"device_name": {
446+
"default": null,
447+
"description": "Device name",
448+
"oneOf": [
449+
{
450+
"type": "string"
451+
},
452+
{
453+
"type": "null"
454+
}
455+
],
456+
"title": "Device Name"
457+
},
419458
"additional_settings": {
420459
"default": null,
421460
"description": "Additional settings",
@@ -479,6 +518,19 @@
479518
"title": "Device Type",
480519
"type": "string"
481520
},
521+
"device_name": {
522+
"default": null,
523+
"description": "Device name",
524+
"oneOf": [
525+
{
526+
"type": "string"
527+
},
528+
{
529+
"type": "null"
530+
}
531+
],
532+
"title": "Device Name"
533+
},
482534
"additional_settings": {
483535
"default": null,
484536
"description": "Additional settings",
@@ -542,6 +594,19 @@
542594
"title": "Device Type",
543595
"type": "string"
544596
},
597+
"device_name": {
598+
"default": null,
599+
"description": "Device name",
600+
"oneOf": [
601+
{
602+
"type": "string"
603+
},
604+
{
605+
"type": "null"
606+
}
607+
],
608+
"title": "Device Name"
609+
},
545610
"additional_settings": {
546611
"default": null,
547612
"description": "Additional settings",
@@ -605,6 +670,19 @@
605670
"title": "Device Type",
606671
"type": "string"
607672
},
673+
"device_name": {
674+
"default": null,
675+
"description": "Device name",
676+
"oneOf": [
677+
{
678+
"type": "string"
679+
},
680+
{
681+
"type": "null"
682+
}
683+
],
684+
"title": "Device Name"
685+
},
608686
"additional_settings": {
609687
"default": null,
610688
"description": "Additional settings",
@@ -668,6 +746,19 @@
668746
"title": "Device Type",
669747
"type": "string"
670748
},
749+
"device_name": {
750+
"default": null,
751+
"description": "Device name",
752+
"oneOf": [
753+
{
754+
"type": "string"
755+
},
756+
{
757+
"type": "null"
758+
}
759+
],
760+
"title": "Device Name"
761+
},
671762
"additional_settings": {
672763
"default": null,
673764
"description": "Additional settings",
@@ -814,6 +905,19 @@
814905
"title": "Device Type",
815906
"type": "string"
816907
},
908+
"device_name": {
909+
"default": null,
910+
"description": "Device name",
911+
"oneOf": [
912+
{
913+
"type": "string"
914+
},
915+
{
916+
"type": "null"
917+
}
918+
],
919+
"title": "Device Name"
920+
},
817921
"additional_settings": {
818922
"default": null,
819923
"description": "Additional settings",
@@ -1217,6 +1321,19 @@
12171321
"title": "Device Type",
12181322
"type": "string"
12191323
},
1324+
"device_name": {
1325+
"default": null,
1326+
"description": "Device name",
1327+
"oneOf": [
1328+
{
1329+
"type": "string"
1330+
},
1331+
{
1332+
"type": "null"
1333+
}
1334+
],
1335+
"title": "Device Name"
1336+
},
12201337
"additional_settings": {
12211338
"default": null,
12221339
"description": "Additional settings",
@@ -1900,7 +2017,7 @@
19002017
},
19012018
"properties": {
19022019
"aind_behavior_services_pkg_version": {
1903-
"default": "0.10.2",
2020+
"default": "0.11.0",
19042021
"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-]+)*))?$",
19052022
"title": "aind_behavior_services package version",
19062023
"type": "string"

src/DataSchemas/aind_telekinesis_task_logic.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
"title": "Rng Seed"
200200
},
201201
"aind_behavior_services_pkg_version": {
202-
"default": "0.10.2",
202+
"default": "0.11.0",
203203
"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-]+)*))?$",
204204
"title": "aind_behavior_services package version",
205205
"type": "string"

src/Extensions/AindBehaviorSessionModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace AindTelekinesisDataSchema.Session
1515
public partial class AindBehaviorSessionModel
1616
{
1717

18-
private string _aindBehaviorServicesPkgVersion = "0.10.2";
18+
private string _aindBehaviorServicesPkgVersion = "0.11.0";
1919

2020
private string _version = "0.3.1";
2121

0 commit comments

Comments
 (0)