diff --git a/examples/task_mcm.py b/examples/task_mcm.py
index 79697243..1791d77a 100644
--- a/examples/task_mcm.py
+++ b/examples/task_mcm.py
@@ -58,7 +58,6 @@ def compute_cmc_transition_probability(n_states, rep_rate, T=3.5, dt=0.1) -> np.
operation_control = vr_task_logic.OperationControl(
- movable_spout_control=vr_task_logic.MovableSpoutControl(enabled=False),
audio_control=vr_task_logic.AudioControl(duration=0.2, frequency=9999),
odor_control=vr_task_logic.OdorControl(),
position_control=vr_task_logic.PositionControl(
diff --git a/examples/task_patch_foraging.py b/examples/task_patch_foraging.py
index e2ff9412..45702a8e 100644
--- a/examples/task_patch_foraging.py
+++ b/examples/task_patch_foraging.py
@@ -34,11 +34,6 @@ def NumericalUpdaterParametersHelper(
}
operation_control = vr_task_logic.OperationControl(
- movable_spout_control=vr_task_logic.MovableSpoutControl(
- enabled=True,
- time_to_collect_after_reward=1,
- retracting_distance=2000,
- ),
audio_control=vr_task_logic.AudioControl(frequency=1000, duration=0.2),
odor_control=vr_task_logic.OdorControl(
target_odor_flow=100, target_total_flow=1000, use_channel_3_as_carrier=True
diff --git a/examples/test_single_site_patch.py b/examples/test_single_site_patch.py
index 580713aa..1c067d8d 100644
--- a/examples/test_single_site_patch.py
+++ b/examples/test_single_site_patch.py
@@ -181,7 +181,6 @@ def make_block(
operation_control = vr_task_logic.OperationControl(
- movable_spout_control=vr_task_logic.MovableSpoutControl(enabled=False),
audio_control=vr_task_logic.AudioControl(duration=0.2, frequency=9999),
odor_control=vr_task_logic.OdorControl(),
position_control=vr_task_logic.PositionControl(
diff --git a/schema/aind_behavior_vr_foraging.json b/schema/aind_behavior_vr_foraging.json
index 7f691542..4c5937e9 100644
--- a/schema/aind_behavior_vr_foraging.json
+++ b/schema/aind_behavior_vr_foraging.json
@@ -579,11 +579,6 @@
"duration": 0.2,
"frequency": 9999.0
},
- "movable_spout_control": {
- "enabled": false,
- "retracting_distance": 0.0,
- "time_to_collect_after_reward": 1.0
- },
"odor_control": {
"target_odor_flow": 100,
"target_total_flow": 1000
@@ -805,11 +800,6 @@
"operation_control": {
"$ref": "#/$defs/OperationControl",
"default": {
- "movable_spout_control": {
- "enabled": false,
- "retracting_distance": 0.0,
- "time_to_collect_after_reward": 1.0
- },
"odor_control": {
"target_odor_flow": 100,
"target_total_flow": 1000
@@ -2814,33 +2804,6 @@
],
"x-sgen-typename": "AllenNeuralDynamics.AindManipulator.MotorOperationMode"
},
- "MovableSpoutControl": {
- "description": "Controls the movable water spout behavior for reward delivery.\n\nThis class configures how the movable spout operates, including when it's\nenabled, timing for reward collection, and retraction distance for operant\nconditioning protocols.",
- "properties": {
- "enabled": {
- "default": false,
- "description": "Whether the movable spout is enabled",
- "title": "Enabled",
- "type": "boolean"
- },
- "time_to_collect_after_reward": {
- "default": 1,
- "description": "Time (s) to collect after reward",
- "minimum": 0,
- "title": "Time To Collect After Reward",
- "type": "number"
- },
- "retracting_distance": {
- "default": 0,
- "description": "The distance, relative to the default position, the spout will be retracted by",
- "minimum": 0,
- "title": "Retracting Distance",
- "type": "number"
- }
- },
- "title": "MovableSpoutControl",
- "type": "object"
- },
"NormalDistribution": {
"description": "A normal (Gaussian) probability distribution.\n\nBell-shaped distribution symmetric around the mean, commonly used\nfor modeling naturally occurring random variables.",
"properties": {
@@ -3286,17 +3249,8 @@
"type": "object"
},
"OperationControl": {
- "description": "Master control class for all operational hardware systems.\n\nThis class aggregates all the hardware control specifications including\nmovable spout, odor delivery, position tracking, and audio systems.\nIt provides a centralized configuration point for all task hardware.",
+ "description": "Master control class for all operational hardware systems.\n\nThis class aggregates all the hardware control specifications including\nodor delivery, position tracking, and audio systems.\nIt provides a centralized configuration point for all task hardware.",
"properties": {
- "movable_spout_control": {
- "$ref": "#/$defs/MovableSpoutControl",
- "default": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
- "description": "Control of the movable spout"
- },
"odor_control": {
"$ref": "#/$defs/OdorControl",
"default": {
diff --git a/schema/depletion.json b/schema/depletion.json
index 1aab60c5..96a62991 100644
--- a/schema/depletion.json
+++ b/schema/depletion.json
@@ -276,11 +276,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -631,11 +626,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -974,11 +964,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1476,11 +1461,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -2198,11 +2178,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/depletion_stops_offset.json b/schema/depletion_stops_offset.json
index 47137fdb..5683278c 100644
--- a/schema/depletion_stops_offset.json
+++ b/schema/depletion_stops_offset.json
@@ -276,11 +276,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -631,11 +626,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -974,11 +964,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1476,11 +1461,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -2198,11 +2178,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/depletion_stops_rate.json b/schema/depletion_stops_rate.json
index c2246ae2..d2c64332 100644
--- a/schema/depletion_stops_rate.json
+++ b/schema/depletion_stops_rate.json
@@ -276,11 +276,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -631,11 +626,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -974,11 +964,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1476,11 +1461,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -2198,11 +2178,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/deterministic_reversals.json b/schema/deterministic_reversals.json
index 1814cfdf..76cc29a9 100644
--- a/schema/deterministic_reversals.json
+++ b/schema/deterministic_reversals.json
@@ -276,11 +276,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -631,11 +626,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -974,11 +964,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1490,11 +1475,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -2231,11 +2211,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/deterministic_reversals_reward_capped.json b/schema/deterministic_reversals_reward_capped.json
index c0302199..a8051332 100644
--- a/schema/deterministic_reversals_reward_capped.json
+++ b/schema/deterministic_reversals_reward_capped.json
@@ -276,11 +276,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -631,11 +626,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -974,11 +964,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1510,11 +1495,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -2271,11 +2251,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/replenishment_depletion_offset.json b/schema/replenishment_depletion_offset.json
index cdf8a6fc..c6948711 100644
--- a/schema/replenishment_depletion_offset.json
+++ b/schema/replenishment_depletion_offset.json
@@ -276,11 +276,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -631,11 +626,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -974,11 +964,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -2086,11 +2071,6 @@
"sampling_mode": "Random"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/single_site.json b/schema/single_site.json
index e30a3193..e41c9c63 100644
--- a/schema/single_site.json
+++ b/schema/single_site.json
@@ -366,11 +366,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1115,11 +1110,6 @@
"sampling_mode": "Sequential"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -7807,11 +7797,6 @@
"sampling_mode": "Random"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -14486,11 +14471,6 @@
"sampling_mode": "Random"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": false,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 0.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/schema/template.json b/schema/template.json
index 5132654a..1f696dc5 100644
--- a/schema/template.json
+++ b/schema/template.json
@@ -561,11 +561,6 @@
"sampling_mode": "Random"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": true,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 2000.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
@@ -1165,11 +1160,6 @@
"sampling_mode": "Random"
},
"operation_control": {
- "movable_spout_control": {
- "enabled": true,
- "time_to_collect_after_reward": 1.0,
- "retracting_distance": 2000.0
- },
"odor_control": {
"target_total_flow": 1000,
"target_odor_flow": 100
diff --git a/src/Extensions/AindBehaviorVrForaging.Generated.cs b/src/Extensions/AindBehaviorVrForaging.Generated.cs
index c3e3d9c0..d74ba2fa 100644
--- a/src/Extensions/AindBehaviorVrForaging.Generated.cs
+++ b/src/Extensions/AindBehaviorVrForaging.Generated.cs
@@ -4058,126 +4058,6 @@ public override string ToString()
}
- ///
- /// Controls the movable water spout behavior for reward delivery.
- ///
- ///This class configures how the movable spout operates, including when it's
- ///enabled, timing for reward collection, and retraction distance for operant
- ///conditioning protocols.
- ///
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.9.0.0 (Newtonsoft.Json v13.0.0.0)")]
- [System.ComponentModel.DescriptionAttribute("Controls the movable water spout behavior for reward delivery.\n\nThis class config" +
- "ures how the movable spout operates, including when it\'s\nenabled, timing for rew" +
- "ard collection, and retraction distance for operant\nconditioning protocols.")]
- [Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)]
- [Bonsai.CombinatorAttribute(MethodName="Generate")]
- public partial class MovableSpoutControl
- {
-
- private bool _enabled;
-
- private double _timeToCollectAfterReward;
-
- private double _retractingDistance;
-
- public MovableSpoutControl()
- {
- _enabled = false;
- _timeToCollectAfterReward = 1D;
- _retractingDistance = 0D;
- }
-
- protected MovableSpoutControl(MovableSpoutControl other)
- {
- _enabled = other._enabled;
- _timeToCollectAfterReward = other._timeToCollectAfterReward;
- _retractingDistance = other._retractingDistance;
- }
-
- ///
- /// Whether the movable spout is enabled
- ///
- [Newtonsoft.Json.JsonPropertyAttribute("enabled")]
- [System.ComponentModel.DescriptionAttribute("Whether the movable spout is enabled")]
- public bool Enabled
- {
- get
- {
- return _enabled;
- }
- set
- {
- _enabled = value;
- }
- }
-
- ///
- /// Time (s) to collect after reward
- ///
- [Newtonsoft.Json.JsonPropertyAttribute("time_to_collect_after_reward")]
- [System.ComponentModel.DescriptionAttribute("Time (s) to collect after reward")]
- public double TimeToCollectAfterReward
- {
- get
- {
- return _timeToCollectAfterReward;
- }
- set
- {
- _timeToCollectAfterReward = value;
- }
- }
-
- ///
- /// The distance, relative to the default position, the spout will be retracted by
- ///
- [Newtonsoft.Json.JsonPropertyAttribute("retracting_distance")]
- [System.ComponentModel.DescriptionAttribute("The distance, relative to the default position, the spout will be retracted by")]
- public double RetractingDistance
- {
- get
- {
- return _retractingDistance;
- }
- set
- {
- _retractingDistance = value;
- }
- }
-
- public System.IObservable Generate()
- {
- return System.Reactive.Linq.Observable.Defer(() => System.Reactive.Linq.Observable.Return(new MovableSpoutControl(this)));
- }
-
- public System.IObservable Generate(System.IObservable source)
- {
- return System.Reactive.Linq.Observable.Select(source, _ => new MovableSpoutControl(this));
- }
-
- protected virtual bool PrintMembers(System.Text.StringBuilder stringBuilder)
- {
- stringBuilder.Append("Enabled = " + _enabled + ", ");
- stringBuilder.Append("TimeToCollectAfterReward = " + _timeToCollectAfterReward + ", ");
- stringBuilder.Append("RetractingDistance = " + _retractingDistance);
- 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();
- }
- }
-
-
///
/// A numerical updater that modifies task parameters during execution.
///
@@ -5313,22 +5193,19 @@ public override string ToString()
/// Master control class for all operational hardware systems.
///
///This class aggregates all the hardware control specifications including
- ///movable spout, odor delivery, position tracking, and audio systems.
+ ///odor delivery, position tracking, and audio systems.
///It provides a centralized configuration point for all task hardware.
///
[System.CodeDom.Compiler.GeneratedCodeAttribute("Bonsai.Sgen", "0.9.0.0 (Newtonsoft.Json v13.0.0.0)")]
- [System.ComponentModel.DescriptionAttribute(@"Master control class for all operational hardware systems.
-
- This class aggregates all the hardware control specifications including
- movable spout, odor delivery, position tracking, and audio systems.
- It provides a centralized configuration point for all task hardware.")]
+ [System.ComponentModel.DescriptionAttribute("Master control class for all operational hardware systems.\n\nThis class aggregates" +
+ " all the hardware control specifications including\nodor delivery, position track" +
+ "ing, and audio systems.\nIt provides a centralized configuration point for all ta" +
+ "sk hardware.")]
[Bonsai.WorkflowElementCategoryAttribute(Bonsai.ElementCategory.Source)]
[Bonsai.CombinatorAttribute(MethodName="Generate")]
public partial class OperationControl
{
- private MovableSpoutControl _movableSpoutControl;
-
private OdorControl _odorControl;
private PositionControl _positionControl;
@@ -5341,7 +5218,6 @@ public partial class OperationControl
public OperationControl()
{
- _movableSpoutControl = new MovableSpoutControl();
_odorControl = new OdorControl();
_positionControl = new PositionControl();
_audioControl = new AudioControl();
@@ -5351,7 +5227,6 @@ public OperationControl()
protected OperationControl(OperationControl other)
{
- _movableSpoutControl = other._movableSpoutControl;
_odorControl = other._odorControl;
_positionControl = other._positionControl;
_audioControl = other._audioControl;
@@ -5359,24 +5234,6 @@ protected OperationControl(OperationControl other)
_waitToFinishDuration = other._waitToFinishDuration;
}
- ///
- /// Control of the movable spout
- ///
- [System.Xml.Serialization.XmlIgnoreAttribute()]
- [Newtonsoft.Json.JsonPropertyAttribute("movable_spout_control")]
- [System.ComponentModel.DescriptionAttribute("Control of the movable spout")]
- public MovableSpoutControl MovableSpoutControl
- {
- get
- {
- return _movableSpoutControl;
- }
- set
- {
- _movableSpoutControl = value;
- }
- }
-
///
/// Control of the odor
///
@@ -5477,7 +5334,6 @@ public System.IObservable Generate(System.IObservable
protected virtual bool PrintMembers(System.Text.StringBuilder stringBuilder)
{
- stringBuilder.Append("MovableSpoutControl = " + _movableSpoutControl + ", ");
stringBuilder.Append("OdorControl = " + _odorControl + ", ");
stringBuilder.Append("PositionControl = " + _positionControl + ", ");
stringBuilder.Append("AudioControl = " + _audioControl + ", ");
@@ -12031,11 +11887,6 @@ 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);
@@ -12333,7 +12184,6 @@ public System.IObservable Process(System.IObservable source)
[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))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Bonsai.Expressions.TypeMapping))]
diff --git a/src/Extensions/InstantiateSite.bonsai b/src/Extensions/InstantiateSite.bonsai
index 7d66aeb7..49744829 100644
--- a/src/Extensions/InstantiateSite.bonsai
+++ b/src/Extensions/InstantiateSite.bonsai
@@ -252,14 +252,6 @@
ChoiceFeedback
-
-
- true
-
-
-
- SpoutAvailable
-
1
@@ -272,8 +264,6 @@
-
-
@@ -835,14 +825,6 @@ it.Item2 as EntryPosition)
-
-
- false
-
-
-
- SpoutAvailable
-
Success
@@ -1114,26 +1096,24 @@ it.Item2 as EntryPosition)
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
-
+
diff --git a/src/Extensions/Logging.bonsai b/src/Extensions/Logging.bonsai
index 317c5793..9a163871 100644
--- a/src/Extensions/Logging.bonsai
+++ b/src/Extensions/Logging.bonsai
@@ -1151,6 +1151,45 @@ it.Value.SyncQuadValue.Value as SyncQuadValue)
SoftwareEvent
+
+ RigSchema
+
+
+ Manipulator.Calibration.InitialPosition
+
+
+ ExperimentCommand
+
+
+
+ EndCommand
+
+
+
+ ManipulatorPosition
+
+
+
+ ThreadPoolScheduler
+
+
+
+
+
+
+ Item2
+
+
+
+
+
+
+ SpoutParkingPositions
+
+
+
+ SoftwareEvent
+
@@ -1171,6 +1210,16 @@ it.Value.SyncQuadValue.Value as SyncQuadValue)
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Extensions/OperationControl.bonsai b/src/Extensions/OperationControl.bonsai
index 2ce1bf0a..256aea6f 100644
--- a/src/Extensions/OperationControl.bonsai
+++ b/src/Extensions/OperationControl.bonsai
@@ -13,12 +13,11 @@
xmlns:beh="clr-namespace:Harp.Behavior;assembly=Harp.Behavior"
xmlns:p4="clr-namespace:System.Reactive;assembly=System.Reactive.Core"
xmlns:bv="clr-namespace:BonVision;assembly=BonVision"
- xmlns:p5="clr-namespace:AllenNeuralDynamics.AindManipulator;assembly=AllenNeuralDynamics.AindManipulator"
- xmlns:p6="clr-namespace:AllenNeuralDynamics.LicketySplit;assembly=AllenNeuralDynamics.LicketySplit"
- xmlns:p7="clr-namespace:AllenNeuralDynamics.SniffDetector;assembly=AllenNeuralDynamics.SniffDetector"
- xmlns:p8="clr-namespace:AllenNeuralDynamics.Treadmill;assembly=AllenNeuralDynamics.Treadmill"
+ xmlns:p5="clr-namespace:AllenNeuralDynamics.LicketySplit;assembly=AllenNeuralDynamics.LicketySplit"
+ xmlns:p6="clr-namespace:AllenNeuralDynamics.SniffDetector;assembly=AllenNeuralDynamics.SniffDetector"
+ xmlns:p7="clr-namespace:AllenNeuralDynamics.Treadmill;assembly=AllenNeuralDynamics.Treadmill"
xmlns:dsp="clr-namespace:Bonsai.Dsp;assembly=Bonsai.Dsp"
- xmlns:p9="clr-namespace:Bonsai.Numerics.Interpolation;assembly=Bonsai.Numerics"
+ xmlns:p8="clr-namespace:Bonsai.Numerics.Interpolation;assembly=Bonsai.Numerics"
xmlns="https://bonsai-rx.org/2018/workflow">
@@ -917,457 +916,6 @@
-
- MovableSpoutControl
-
-
-
- Start with the spout at max distance
-
-
-
-
- true
-
-
-
-
- 1
-
-
-
- SpoutAvailable
-
-
- SpoutAvailable
-
-
- TaskLogicParameters
-
-
- OperationControl.MovableSpoutControl
-
-
- Enabled
-
-
-
-
-
- IsEnabled
-
-
-
- Source1
-
-
- Item2
-
-
-
-
-
-
-
-
-
-
- Item1
-
-
- SpoutParkingPositions
-
-
-
-
-
- GetPosition
- it.Item1 ? it.Item2.ResetPosition : it.Item2.RetractedPosition
-
-
- MoveTo
-
-
- InitialState
-
-
-
- ManipulatorPosition
-
-
-
- 1
-
-
-
- RigSchema
-
-
- Manipulator
-
-
- SpoutAxis
-
-
-
-
-
-
-
- CalculateRetractedPosition
-
-
-
-
-
-
- Axis
- Y1
-
-
-
- 1
-
-
-
- SpoutAxis
-
-
- Source1
-
-
-
- 1
-
-
-
- SpoutResetPosition
-
-
- SpoutResetPosition
-
-
-
-
- 1
-
-
-
-
- 0
- 0
- 0
- 0
-
-
-
- TaskLogicParameters
-
-
- OperationControl.MovableSpoutControl
-
-
- RetractingDistance
-
-
-
-
-
- SpoutAxis
-
-
-
-
-
-
-
-
- None
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Rename
- new(Item1 as ResetPosition, Item2 as RetractedPosition)
-
-
- SpoutParkingPositions
-
-
- SpoutParkingPositions
-
-
-
- SpoutParkingPositions
-
-
-
- SoftwareEvent
-
-
- TaskLogicParameters
-
-
- OperationControl.MovableSpoutControl
-
-
- Enabled
-
-
-
- SpoutAvailable
-
-
- GiveReward
-
-
-
- false
-
-
-
- SpoutAvailable
-
-
- Condition
-
-
-
- Source1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
- DelayWithdraw
-
-
-
- Source1
-
-
-
- 1
-
-
-
- State
-
-
- TaskLogicParameters
-
-
- OperationControl.MovableSpoutControl
-
-
- TimeToCollectAfterReward
-
-
- FromSeconds
- TimeSpan.FromSeconds(it)
-
-
-
-
-
-
-
-
- PT0S
-
-
-
- State
-
-
-
-
-
- Item2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IsWithdraw?
-
-
-
- Source1
-
-
-
-
-
-
-
-
-
-
-
- SpoutAvailable
-
-
- TaskLogicParameters
-
-
- OperationControl.MovableSpoutControl
-
-
- Enabled
-
-
-
-
-
- Source1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ExperimentCommand
-
-
-
- StartTask
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
FeedbackControl
@@ -1400,22 +948,6 @@
SoftwareEvent
-
- HarpBehaviorEvents
-
-
-
- 1
-
-
-
-
- true
-
-
-
- SpoutAvailable
-
@@ -1424,9 +956,6 @@
-
-
-
@@ -1437,14 +966,14 @@
HarpLickometerEvents
-
-
+
+
Value
-
+
Channel0
@@ -1719,8 +1248,8 @@
HarpSniffDetectorEvents
-
-
+
+
RigSchema
@@ -1803,10 +1332,10 @@
-
+
Write
-
- 0
+
+ 0
@@ -1821,8 +1350,8 @@
Write
-
-
+
+
@@ -1891,8 +1420,8 @@
HarpTreadmillEvents
-
-
+
+
TreadmillSamplingRate
@@ -1957,8 +1486,8 @@
HarpTreadmillEvents
-
-
+
+
@@ -2059,7 +1588,7 @@ Item1 as Displacement,
-
+
@@ -2083,11 +1612,11 @@ Item1 as Displacement,
-
+
-
+
Write
-
+
SendMessage
@@ -2107,8 +1636,8 @@ Item1 as Displacement,
HarpTreadmillEvents
-
-
+
+
HarpMessage
diff --git a/src/packages/aind_behavior_vr_foraging/src/aind_behavior_vr_foraging/task_logic.py b/src/packages/aind_behavior_vr_foraging/src/aind_behavior_vr_foraging/task_logic.py
index eddd4942..2236ba7f 100644
--- a/src/packages/aind_behavior_vr_foraging/src/aind_behavior_vr_foraging/task_logic.py
+++ b/src/packages/aind_behavior_vr_foraging/src/aind_behavior_vr_foraging/task_logic.py
@@ -977,22 +977,6 @@ def _validate_patch_indices(self) -> Self:
# ==================== OP CONTROL SPECIFICATIONS ====================
-class MovableSpoutControl(BaseModel):
- """
- Controls the movable water spout behavior for reward delivery.
-
- This class configures how the movable spout operates, including when it's
- enabled, timing for reward collection, and retraction distance for operant
- conditioning protocols.
- """
-
- enabled: bool = Field(default=False, description="Whether the movable spout is enabled")
- time_to_collect_after_reward: float = Field(default=1, ge=0, description="Time (s) to collect after reward")
- retracting_distance: float = Field(
- default=0, ge=0, description="The distance, relative to the default position, the spout will be retracted by"
- )
-
-
class PositionControl(BaseModel):
"""
Controls the position tracking and movement detection parameters.
@@ -1049,13 +1033,10 @@ class OperationControl(BaseModel):
Master control class for all operational hardware systems.
This class aggregates all the hardware control specifications including
- movable spout, odor delivery, position tracking, and audio systems.
+ odor delivery, position tracking, and audio systems.
It provides a centralized configuration point for all task hardware.
"""
- movable_spout_control: MovableSpoutControl = Field(
- default=MovableSpoutControl(), description="Control of the movable spout"
- )
odor_control: OdorControl = Field(
default=OdorControl(target_odor_flow=100, target_total_flow=1000),
description="Control of the odor",
diff --git a/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/depletion/helpers.py b/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/depletion/helpers.py
index 90aee541..4fb028a6 100644
--- a/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/depletion/helpers.py
+++ b/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/depletion/helpers.py
@@ -4,11 +4,8 @@
def make_default_operation_control(velocity_threshold: float) -> task_logic.OperationControl:
return task_logic.OperationControl(
- movable_spout_control=task_logic.MovableSpoutControl(
- enabled=False,
- ),
audio_control=task_logic.AudioControl(duration=0.2, frequency=9999),
- odor_control=task_logic.OdorControl(valve_max_open_time=10),
+ odor_control=task_logic.OdorControl(),
position_control=task_logic.PositionControl(
frequency_filter_cutoff=5,
velocity_threshold=velocity_threshold,
diff --git a/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/single_site/helpers.py b/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/single_site/helpers.py
index a9a50bc0..17f412bf 100644
--- a/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/single_site/helpers.py
+++ b/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/single_site/helpers.py
@@ -23,7 +23,6 @@ def make_default_operation_control(velocity_threshold: float) -> task_logic.Oper
"""Operation control shared by every stage: movable spout off, audio effectively
silent, no odor flow, only the stop-velocity threshold varies."""
return task_logic.OperationControl(
- movable_spout_control=task_logic.MovableSpoutControl(enabled=False),
audio_control=task_logic.AudioControl(duration=0.2, frequency=9999),
odor_control=task_logic.OdorControl(),
position_control=task_logic.PositionControl(
diff --git a/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/template/stages.py b/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/template/stages.py
index 5b367e51..f9cab5be 100644
--- a/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/template/stages.py
+++ b/src/packages/aind_behavior_vr_foraging_curricula/src/aind_behavior_vr_foraging_curricula/template/stages.py
@@ -37,15 +37,8 @@ def NumericalUpdaterParametersHelper(initial_value, on_success, on_failure, mini
}
operation_control = vr_task_logic.OperationControl(
- movable_spout_control=vr_task_logic.MovableSpoutControl(
- enabled=True,
- time_to_collect_after_reward=1,
- retracting_distance=2000,
- ),
audio_control=vr_task_logic.AudioControl(frequency=1000, duration=0.2),
- odor_control=vr_task_logic.OdorControl(
- valve_max_open_time=100000, target_odor_flow=100, target_total_flow=1000, use_channel_3_as_carrier=True
- ),
+ odor_control=vr_task_logic.OdorControl(target_odor_flow=100, target_total_flow=1000, use_channel_3_as_carrier=True),
position_control=vr_task_logic.PositionControl(
gain=vr_task_logic.Vector3(x=1, y=1, z=1),
initial_position=vr_task_logic.Vector3(x=0, y=2.56, z=0),