Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 16 additions & 19 deletions bonsai/Bonsai.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
<Package id="AForge" version="2.2.5" />
<Package id="AForge.Video" version="2.2.5" />
<Package id="AForge.Video.DirectShow" version="2.2.5" />
<Package id="AllenNeuralDynamics.AindBehaviorServices" version="0.8.0" />
<Package id="AllenNeuralDynamics.AindBehaviorServices" version="0.10.2" />
<Package id="AllenNeuralDynamics.AindManipulator" version="0.1.6" />
<Package id="AllenNeuralDynamics.Core" version="0.2.9" />
<Package id="AllenNeuralDynamics.Core.Design" version="0.2.2" />
<Package id="AllenNeuralDynamics.Core" version="0.4.0" />
<Package id="AllenNeuralDynamics.Core.Design" version="0.2.3" />
<Package id="AllenNeuralDynamics.EnvironmentSensor" version="0.2.0" />
<Package id="AllenNeuralDynamics.HarpUtils" version="0.1.9" />
<Package id="AllenNeuralDynamics.HarpUtils" version="0.3.2" />
<Package id="AllenNeuralDynamics.LicketySplit" version="0.2.0" />
<Package id="AllenNeuralDynamics.LicketySplitLickDetector" version="0.1.0-preview20231016" />
<Package id="AllenNeuralDynamics.SniffDetector" version="0.2.0" />
Expand Down Expand Up @@ -49,12 +49,11 @@
<Package id="Bonsai.Windows.Input" version="2.7.0" />
<Package id="Bonsai.ZeroMQ" version="0.2.0" />
<Package id="BonVision" version="0.11.0" />
<Package id="Harp.AnalogInput" version="0.1.0" />
<Package id="Harp.AnalogInput" version="0.2.0" />
<Package id="Harp.Behavior" version="0.1.0" />
<Package id="Harp.LoadCells" version="0.1.0" />
<Package id="Harp.Olfactometer" version="0.1.0-build231127" />
<Package id="Harp.LoadCells" version="0.2.0" />
<Package id="Harp.Olfactometer" version="0.2.0" />
<Package id="Harp.StepperDriver" version="0.3.0" />
<Package id="Harp.TimestampGeneratorGen3" version="0.1.1" />
<Package id="jacobslusser.ScintillaNET" version="3.6.3" />
<Package id="LibGit2Sharp" version="0.27.2" />
<Package id="LibGit2Sharp.NativeBinaries" version="2.0.320" />
Expand Down Expand Up @@ -82,7 +81,7 @@
<Package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" />
<Package id="System.Threading.Tasks.Extensions" version="4.5.4" />
<Package id="System.ValueTuple" version="4.5.0" />
<Package id="YamlDotNet" version="13.1.1" />
<Package id="YamlDotNet" version="16.0.0" />
<Package id="ZedGraph" version="5.1.7" />
</Packages>
<AssemblyReferences>
Expand Down Expand Up @@ -133,18 +132,17 @@
<AssemblyReference assemblyName="Harp.LoadCells" />
<AssemblyReference assemblyName="Harp.Olfactometer" />
<AssemblyReference assemblyName="Harp.StepperDriver" />
<AssemblyReference assemblyName="Harp.TimestampGeneratorGen3" />
</AssemblyReferences>
<AssemblyLocations>
<AssemblyLocation assemblyName="AForge" processorArchitecture="MSIL" location="Packages/AForge.2.2.5/lib/AForge.dll" />
<AssemblyLocation assemblyName="AForge.Video" processorArchitecture="MSIL" location="Packages/AForge.Video.2.2.5/lib/AForge.Video.dll" />
<AssemblyLocation assemblyName="AForge.Video.DirectShow" processorArchitecture="MSIL" location="Packages/AForge.Video.DirectShow.2.2.5/lib/AForge.Video.DirectShow.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.AindBehaviorServices" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.AindBehaviorServices.0.8.0/lib/net472/AllenNeuralDynamics.AindBehaviorServices.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.AindBehaviorServices" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.AindBehaviorServices.0.10.2/lib/net472/AllenNeuralDynamics.AindBehaviorServices.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.AindManipulator" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.AindManipulator.0.1.6/lib/net48/AllenNeuralDynamics.AindManipulator.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.Core" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.Core.0.2.9/lib/net472/AllenNeuralDynamics.Core.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.Core.Design" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.Core.Design.0.2.2/lib/net472/AllenNeuralDynamics.Core.Design.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.Core" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.Core.0.4.0/lib/net472/AllenNeuralDynamics.Core.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.Core.Design" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.Core.Design.0.2.3/lib/net472/AllenNeuralDynamics.Core.Design.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.EnvironmentSensor" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.EnvironmentSensor.0.2.0/lib/net462/AllenNeuralDynamics.EnvironmentSensor.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.HarpUtils" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.HarpUtils.0.1.9/lib/net472/AllenNeuralDynamics.HarpUtils.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.HarpUtils" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.HarpUtils.0.3.2/lib/net472/AllenNeuralDynamics.HarpUtils.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.LicketySplit" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.LicketySplit.0.2.0/lib/net462/AllenNeuralDynamics.LicketySplit.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.LicketySplitLickDetector" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.LicketySplitLickDetector.0.1.0-preview20231016/lib/net462/AllenNeuralDynamics.LicketySplitLickDetector.dll" />
<AssemblyLocation assemblyName="AllenNeuralDynamics.SniffDetector" processorArchitecture="MSIL" location="Packages/AllenNeuralDynamics.SniffDetector.0.2.0/lib/net462/AllenNeuralDynamics.SniffDetector.dll" />
Expand Down Expand Up @@ -183,12 +181,11 @@
<AssemblyLocation assemblyName="Bonsai.Windows.Input" processorArchitecture="MSIL" location="Packages/Bonsai.Windows.Input.2.7.0/lib/net462/Bonsai.Windows.Input.dll" />
<AssemblyLocation assemblyName="Bonsai.ZeroMQ" processorArchitecture="MSIL" location="Packages/Bonsai.ZeroMQ.0.2.0/lib/net472/Bonsai.ZeroMQ.dll" />
<AssemblyLocation assemblyName="BonVision" processorArchitecture="MSIL" location="Packages/BonVision.0.11.0/lib/net462/BonVision.dll" />
<AssemblyLocation assemblyName="Harp.AnalogInput" processorArchitecture="MSIL" location="Packages/Harp.AnalogInput.0.1.0/lib/net462/Harp.AnalogInput.dll" />
<AssemblyLocation assemblyName="Harp.AnalogInput" processorArchitecture="MSIL" location="Packages/Harp.AnalogInput.0.2.0/lib/net462/Harp.AnalogInput.dll" />
<AssemblyLocation assemblyName="Harp.Behavior" processorArchitecture="MSIL" location="Packages/Harp.Behavior.0.1.0/lib/net462/Harp.Behavior.dll" />
<AssemblyLocation assemblyName="Harp.LoadCells" processorArchitecture="MSIL" location="Packages/Harp.LoadCells.0.1.0/lib/net462/Harp.LoadCells.dll" />
<AssemblyLocation assemblyName="Harp.Olfactometer" processorArchitecture="MSIL" location="Packages/Harp.Olfactometer.0.1.0-build231127/lib/net462/Harp.Olfactometer.dll" />
<AssemblyLocation assemblyName="Harp.LoadCells" processorArchitecture="MSIL" location="Packages/Harp.LoadCells.0.2.0/lib/net462/Harp.LoadCells.dll" />
<AssemblyLocation assemblyName="Harp.Olfactometer" processorArchitecture="MSIL" location="Packages/Harp.Olfactometer.0.2.0/lib/net462/Harp.Olfactometer.dll" />
<AssemblyLocation assemblyName="Harp.StepperDriver" processorArchitecture="MSIL" location="Packages/Harp.StepperDriver.0.3.0/lib/net462/Harp.StepperDriver.dll" />
<AssemblyLocation assemblyName="Harp.TimestampGeneratorGen3" processorArchitecture="MSIL" location="Packages/Harp.TimestampGeneratorGen3.0.1.1/lib/net462/Harp.TimestampGeneratorGen3.dll" />
<AssemblyLocation assemblyName="LibGit2Sharp" processorArchitecture="MSIL" location="Packages/LibGit2Sharp.0.27.2/lib/net472/LibGit2Sharp.dll" />
<AssemblyLocation assemblyName="Markdig" processorArchitecture="MSIL" location="Packages/Markdig.0.18.1/lib/net40/Markdig.dll" />
<AssemblyLocation assemblyName="MathNet.Numerics" processorArchitecture="MSIL" location="Packages/MathNet.Numerics.4.15.0/lib/net461/MathNet.Numerics.dll" />
Expand Down Expand Up @@ -218,7 +215,7 @@
<AssemblyLocation assemblyName="System.Runtime.CompilerServices.Unsafe" processorArchitecture="MSIL" location="Packages/System.Runtime.CompilerServices.Unsafe.6.0.0/lib/net461/System.Runtime.CompilerServices.Unsafe.dll" />
<AssemblyLocation assemblyName="System.Threading.Tasks.Extensions" processorArchitecture="MSIL" location="Packages/System.Threading.Tasks.Extensions.4.5.4/lib/net461/System.Threading.Tasks.Extensions.dll" />
<AssemblyLocation assemblyName="System.ValueTuple" processorArchitecture="MSIL" location="Packages/System.ValueTuple.4.5.0/lib/net47/System.ValueTuple.dll" />
<AssemblyLocation assemblyName="YamlDotNet" processorArchitecture="MSIL" location="Packages/YamlDotNet.13.1.1/lib/net47/YamlDotNet.dll" />
<AssemblyLocation assemblyName="YamlDotNet" processorArchitecture="MSIL" location="Packages/YamlDotNet.16.0.0/lib/net47/YamlDotNet.dll" />
<AssemblyLocation assemblyName="ZedGraph" processorArchitecture="MSIL" location="Packages/ZedGraph.5.1.7/lib/net35-Client/ZedGraph.dll" />
</AssemblyLocations>
<LibraryFolders>
Expand Down
4 changes: 2 additions & 2 deletions examples/example.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ def mock_rig() -> AindTelekinesisRig:
),
harp_load_cells=lcc.LoadCells(port_name="COM4", calibration=load_cells_calibration),
harp_behavior=rig.HarpBehavior(port_name="COM6"),
harp_lickometer=rig.HarpLickometer(port_name="COM8"),
harp_clock_generator=rig.HarpClockGenerator(port_name="COM3"),
harp_lickometer=rig.HarpLicketySplit(port_name="COM8"),
harp_clock_generator=rig.HarpWhiteRabbit(port_name="COM3"),
harp_analog_input=None,
manipulator=AindManipulatorDevice(port_name="COM5", calibration=manipulator_calibration),
calibration=RigCalibration(water_valve=water_valve_calibration),
Expand Down
31 changes: 15 additions & 16 deletions examples/example_w_luts.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import datetime
import os

import aind_behavior_services.calibration.load_cells as lcc
import aind_behavior_services.rig as rig
import aind_behavior_telekinesis.task_logic as tl
from aind_behavior_services import db_utils as db
Expand Down Expand Up @@ -82,29 +81,25 @@ def mock_rig() -> AindTelekinesisRig:
container_extension="avi",
)

load_cells_calibration = lcc.LoadCellsCalibration(
output=lcc.LoadCellsCalibrationOutput(),
input=lcc.LoadCellsCalibrationInput(),
date=datetime.datetime.now(),
)
return AindTelekinesisRig(
rig_name="BCI_Bonsai_i",
triggered_camera_controller=rig.CameraController[rig.SpinnakerCamera](
frame_rate=25,
cameras={
"MainCamera": rig.SpinnakerCamera(
serial_number="SerialNumber",
serial_number="23381093",
binning=2,
exposure=10000,
gain=20,
video_writer=video_writer,
adc_bit_depth=None,
)
},
),
harp_load_cells=lcc.LoadCells(port_name="COM4", calibration=load_cells_calibration),
harp_behavior=rig.HarpBehavior(port_name="COM6"),
harp_lickometer=rig.HarpLickometer(port_name="COM8"),
harp_clock_generator=rig.HarpClockGenerator(port_name="COM3"),
harp_load_cells=None,
harp_behavior=rig.HarpBehavior(port_name="COM4"),
harp_lickometer=rig.HarpLicketySplit(port_name="COM6"),
harp_clock_generator=rig.HarpWhiteRabbit(port_name="COM7"),
harp_analog_input=None,
manipulator=AindManipulatorDevice(port_name="COM5", calibration=manipulator_calibration),
calibration=RigCalibration(water_valve=water_valve_calibration),
Expand Down Expand Up @@ -133,7 +128,7 @@ def mock_task_logic() -> tl.AindTelekinesisTaskLogic:
continuous_feedback=tl.ManipulatorFeedback(converter_lut_input=[0, 1], converter_lut_output=[0, 15]),
),
),
action_source_0=tl.BehaviorAnalogInputActionSource(channel=0),
action_source_0=tl.BehaviorAnalogInputActionSource(channel=1),
lut_reference="linear_normalized_to_1",
)

Expand All @@ -149,7 +144,7 @@ def mock_task_logic() -> tl.AindTelekinesisTaskLogic:
operation_control=tl.OperationControl(
action_luts={
"linear_normalized_to_1": tl.ActionLookUpTableFactory(
path=f"{LOCAL_ASSET_FOLDER}/1d_ramp.tiff",
path=f"../{LOCAL_ASSET_FOLDER}/1d_ramp.tiff",
offset=0,
scale=1,
action0_max=5,
Expand All @@ -158,7 +153,7 @@ def mock_task_logic() -> tl.AindTelekinesisTaskLogic:
action1_min=0,
),
"linear_normalized_to_5": tl.ActionLookUpTableFactory(
path=f"{LOCAL_ASSET_FOLDER}/1d_ramp.tiff",
path=f"../{LOCAL_ASSET_FOLDER}/1d_ramp.tiff",
offset=0,
scale=5,
action0_max=5,
Expand Down Expand Up @@ -206,13 +201,17 @@ def main(path_seed: str = "{LOCAL_ASSET_FOLDER}/{schema}.json"):
example_rig = mock_rig()
example_task_logic = mock_task_logic()
example_database = mock_subject_database()
os.makedirs(os.path.dirname(path_seed), exist_ok=True)
os.makedirs(os.path.dirname(path_seed).format(LOCAL_ASSET_FOLDER=LOCAL_ASSET_FOLDER, schema=""), exist_ok=True)
generate_luts()

models = [example_task_logic, example_session, example_rig, example_database]

for model in models:
with open(path_seed.format(schema=model.__class__.__name__), "w", encoding="utf-8") as f:
with open(
path_seed.format(schema=model.__class__.__name__, LOCAL_ASSET_FOLDER=LOCAL_ASSET_FOLDER),
"w",
encoding="utf-8",
) as f:
f.write(model.model_dump_json(indent=2))


Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ readme = "README.md"
dynamic = ["version"]

dependencies = [
"aind_behavior_services>=0.9, <0.10",
"aind_behavior_services<0.11",
"numpy",
"pillow"
]
Expand All @@ -30,7 +30,7 @@ Changelog = "https://github.com/AllenNeuralDynamics/Aind.Behavior.Telekinesis/re

[project.optional-dependencies]

launcher = ["aind_behavior_experiment_launcher[aind-services]>=0.3, <0.4"]
launcher = ["aind_behavior_experiment_launcher[aind-services]"]

dev = [
"aind_behavior_telekinesis[launcher]",
Expand Down
6 changes: 3 additions & 3 deletions src/DataSchemas/aind_behavior_session_model.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"properties": {
"aind_behavior_services_pkg_version": {
"default": "0.9.0",
"default": "0.10.2",
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
"title": "aind_behavior_services package version",
"type": "string"
},
"version": {
"const": "0.3.0",
"default": "0.3.0",
"const": "0.3.1",
"default": "0.3.1",
"title": "Version",
"type": "string"
},
Expand Down
9 changes: 3 additions & 6 deletions src/DataSchemas/aind_behavior_telekinesis/rig.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,10 @@ class AindTelekinesisRig(AindBehaviorRigModel):
triggered_camera_controller: rig.CameraController[rig.SpinnakerCamera] = Field(
..., description="Required camera controller to triggered cameras."
)
monitoring_camera_controller: Optional[rig.CameraController[rig.WebCamera]] = Field(
default=None, description="Optional camera controller for monitoring cameras."
)
harp_behavior: rig.HarpBehavior = Field(..., description="Harp behavior")
harp_lickometer: rig.HarpLickometer = Field(..., description="Harp lickometer")
harp_load_cells: Optional[lcc.LoadCells] = Field(..., description="Harp load cells")
harp_clock_generator: rig.HarpClockGenerator = Field(..., description="Harp clock generator")
harp_lickometer: rig.HarpLicketySplit = Field(..., description="Harp lickometer")
harp_load_cells: Optional[lcc.LoadCells] = Field(default=None, description="Harp load cells")
harp_clock_generator: rig.HarpWhiteRabbit = Field(..., description="Harp clock generator")
harp_analog_input: Optional[rig.HarpAnalogInput] = Field(default=None, description="Harp analog input")
harp_environment_sensor: Optional[rig.HarpEnvironmentSensor] = Field(
default=None, description="Harp environment sensor"
Expand Down
Loading
Loading