Skip to content

Commit 98c5314

Browse files
authored
Merge pull request #206 from AllenNeuralDynamics/feat-update-session
First prerelease v0.13
2 parents 82b26a2 + 29eaea1 commit 98c5314

34 files changed

+744
-1105
lines changed

examples/aind_manipulator.py

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,32 @@
11
import os
22

33
from aind_behavior_services.base import get_commit_hash
4-
from aind_behavior_services.calibration import aind_manipulator as m
4+
from aind_behavior_services.rig import aind_manipulator as m
55
from aind_behavior_services.session import AindBehaviorSessionModel
66
from aind_behavior_services.utils import utcnow
77

88
calibration_data = m.AindManipulatorCalibration(
9-
device_name="AindManipulatorCalibration",
10-
input=m.AindManipulatorCalibrationInput(
11-
full_step_to_mm=m.ManipulatorPosition(x=0.01, y1=0.01, y2=0.01, z=0.01),
12-
axis_configuration=[
13-
m.AxisConfiguration(axis=m.Axis.X),
14-
m.AxisConfiguration(axis=m.Axis.Y1),
15-
m.AxisConfiguration(axis=m.Axis.Y2),
16-
m.AxisConfiguration(axis=m.Axis.Z),
17-
],
18-
homing_order=[m.Axis.Y2, m.Axis.Y1, m.Axis.X, m.Axis.Z],
19-
initial_position=m.ManipulatorPosition(y1=0, y2=0, x=0, z=10000),
20-
),
21-
output=m.AindManipulatorCalibrationOutput(),
22-
date=utcnow(),
9+
full_step_to_mm=m.ManipulatorPosition(x=0.01, y1=0.01, y2=0.01, z=0.01),
10+
axis_configuration=[
11+
m.AxisConfiguration(axis=m.Axis.X),
12+
m.AxisConfiguration(axis=m.Axis.Y1),
13+
m.AxisConfiguration(axis=m.Axis.Y2),
14+
m.AxisConfiguration(axis=m.Axis.Z),
15+
],
16+
homing_order=[m.Axis.Y2, m.Axis.Y1, m.Axis.X, m.Axis.Z],
17+
initial_position=m.ManipulatorPosition(y1=0, y2=0, x=0, z=10000),
2318
)
2419

25-
calibration_logic = m.CalibrationLogic(task_parameters=m.CalibrationParameters())
26-
2720

2821
calibration_session = AindBehaviorSessionModel(
29-
root_path="C:\\Data",
3022
allow_dirty_repo=False,
3123
experiment="AindManipulatorCalibration",
3224
date=utcnow(),
3325
subject="AindManipulator",
34-
experiment_version="manipulator_control",
3526
commit_hash=get_commit_hash(),
3627
)
3728

38-
rig = m.CalibrationRig(
39-
manipulator=m.AindManipulatorDevice(port_name="COM4", calibration=calibration_data),
40-
rig_name="AindManipulatorRig",
41-
)
42-
4329
seed_path = "local/aind_manipulator_{suffix}.json"
4430
os.makedirs(os.path.dirname(seed_path), exist_ok=True)
45-
with open(seed_path.format(suffix="calibration_logic"), "w") as f:
46-
f.write(calibration_logic.model_dump_json(indent=3))
4731
with open(seed_path.format(suffix="session"), "w") as f:
4832
f.write(calibration_session.model_dump_json(indent=3))
49-
with open(seed_path.format(suffix="rig"), "w") as f:
50-
f.write(rig.model_dump_json(indent=3))

examples/load_cells.py

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,17 @@
1-
from aind_behavior_services.calibration import load_cells as lc
2-
from aind_behavior_services.utils import utcnow
1+
from aind_behavior_services.rig import load_cells as lc
32

4-
lc0 = lc.LoadCellCalibrationInput(
3+
lc0 = lc.LoadCellChannelCalibration(
54
channel=0,
6-
offset_measurement=[lc.MeasuredOffset(offset=100, baseline=0.1)],
7-
weight_measurement=[lc.MeasuredWeight(weight=0.1, baseline=0.1)],
8-
)
9-
lc1 = lc.LoadCellCalibrationInput(
10-
channel=1,
11-
offset_measurement=[lc.MeasuredOffset(offset=100, baseline=0.1)],
12-
weight_measurement=[lc.MeasuredWeight(weight=0.1, baseline=0.1)],
5+
baseline=0.1,
6+
offset=100,
7+
slope=2.0,
138
)
149

15-
lc_calibration_input = lc.LoadCellsCalibrationInput(channels=[lc1, lc0])
16-
lc_calibration_output = lc.LoadCellsCalibrationOutput(
17-
channels=[
18-
lc.LoadCellCalibrationOutput(channel=0, offset=6, baseline=1000, weight_lookup=[]),
19-
lc.LoadCellCalibrationOutput(channel=1, offset=6, baseline=1000, weight_lookup=[]),
20-
]
10+
lc1 = lc.LoadCellChannelCalibration(
11+
channel=1,
12+
baseline=0.2,
13+
offset=150,
14+
slope=1.5,
2115
)
2216

23-
calibration = lc.LoadCellsCalibration(
24-
input=lc_calibration_input,
25-
output=lc_calibration_output,
26-
device_name="LoadCells",
27-
date=utcnow(),
28-
)
17+
lc_calibration_input = lc.LoadCellsCalibration(channels=[lc1, lc0])

examples/treadmill.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
1-
from aind_behavior_services.calibration import treadmill
2-
from aind_behavior_services.utils import utcnow
1+
from aind_behavior_services.rig import treadmill
32

4-
treadmill_calibration = treadmill.TreadmillCalibrationOutput(
3+
treadmill_calibration = treadmill.TreadmillCalibration(
54
wheel_diameter=10,
65
pulses_per_revolution=10000,
76
invert_direction=False,
87
brake_lookup_calibration=[[0, 0], [0.5, 32768], [1, 65535]],
98
)
10-
11-
calibration = treadmill.TreadmillCalibration(
12-
device_name="Treadmill",
13-
input=treadmill.TreadmillCalibrationInput(),
14-
output=treadmill_calibration,
15-
date=utcnow(),
16-
)

examples/water_valve.py

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
from aind_behavior_services.calibration import water_valve as wv
2-
from aind_behavior_services.utils import utcnow
1+
from aind_behavior_services.rig import water_valve as wv
32

43

54
def linear_model(time, slope, offset):
@@ -16,20 +15,4 @@ def linear_model(time, slope, offset):
1615
for t in zip(_delta_times, _water_weights)
1716
]
1817

19-
20-
_outputs = wv.WaterValveCalibrationOutput(
21-
interval_average={interval: volume for interval, volume in zip(_delta_times, _water_weights)},
22-
slope=_slope,
23-
offset=_offset,
24-
r2=1.0,
25-
valid_domain=[value for value in _delta_times],
26-
)
27-
28-
input = wv.WaterValveCalibrationInput(measurements=_inputs)
29-
30-
calibration = wv.WaterValveCalibration(
31-
input=input,
32-
output=input.calibrate_output(),
33-
device_name="WaterValve",
34-
date=utcnow(),
35-
)
18+
calibration = wv.calibrate_water_valves(_inputs)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ classifiers = [
1616
"Programming Language :: Python :: 3.13",
1717
"Operating System :: Microsoft :: Windows",
1818
]
19-
version = "0.12.5"
19+
version = "0.13.0rc0"
2020

2121
dependencies = [
2222
'pydantic',

src/_generators/json_schema.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
from pydantic import BaseModel
77

8-
from aind_behavior_services.calibration import aind_manipulator
98
from aind_behavior_services.data_types import DataTypes
109
from aind_behavior_services.message_protocol import MessageProtocol
10+
from aind_behavior_services.rig.aind_manipulator import AindManipulator
1111
from aind_behavior_services.session import AindBehaviorSessionModel
1212
from aind_behavior_services.utils import export_schema, pascal_to_snake_case
1313

@@ -34,7 +34,7 @@ def main():
3434
ToGenerateJsonSchema(model_name="AindBehaviorSessionModel", model=AindBehaviorSessionModel, remove_root=False),
3535
ToGenerateJsonSchema(model_name="DataTypes", model=DataTypes, remove_root=True),
3636
ToGenerateJsonSchema(model_name="MessageProtocol", model=MessageProtocol, remove_root=True),
37-
ToGenerateJsonSchema(model_name="AindManipulator", model=aind_manipulator.CalibrationRig, remove_root=False),
37+
ToGenerateJsonSchema(model_name="AindManipulator", model=AindManipulator, remove_root=False),
3838
)
3939

4040
for m in models:

src/_generators/templates/harp.j2

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ from ._base import Device
1010

1111
class _HarpDeviceBase(Device):
1212
who_am_i: Optional[int] = Field(default=None, le=9999, ge=0, description="Device WhoAmI")
13-
device_type: str
1413
serial_number: Optional[str] = Field(default=None, description="Device serial number")
1514
port_name: str = Field(..., description="Device port name")
1615

src/aind_behavior_services/calibration/__init__.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/aind_behavior_services/calibration/_base.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/aind_behavior_services/calibration/load_cells.py

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)