diff --git a/schema/aind_behavior_dynamic_foraging.json b/schema/aind_behavior_dynamic_foraging.json index 72e759d..633f428 100644 --- a/schema/aind_behavior_dynamic_foraging.json +++ b/schema/aind_behavior_dynamic_foraging.json @@ -481,10 +481,13 @@ }, "truncation_parameters": { "max": 8.0, - "min": 1.0, + "min": 0.0, "truncation_mode": "exclude" }, - "scaling_parameters": null + "scaling_parameters": { + "offset": 1.0, + "scale": 1.0 + } }, "description": "Distribution describing the inter-trial interval (in seconds)." }, @@ -883,10 +886,13 @@ }, "truncation_parameters": { "max": 8.0, - "min": 1.0, + "min": 0.0, "truncation_mode": "exclude" }, - "scaling_parameters": null + "scaling_parameters": { + "offset": 1.0, + "scale": 1.0 + } }, "description": "Distribution describing the inter-trial interval (in seconds)." }, @@ -1179,10 +1185,13 @@ }, "truncation_parameters": { "max": 8.0, - "min": 1.0, + "min": 0.0, "truncation_mode": "exclude" }, - "scaling_parameters": null + "scaling_parameters": { + "offset": 1.0, + "scale": 1.0 + } }, "description": "Distribution describing the inter-trial interval (in seconds)." }, @@ -1396,10 +1405,13 @@ }, "truncation_parameters": { "max": 8.0, - "min": 1.0, + "min": 0.0, "truncation_mode": "exclude" }, - "scaling_parameters": null + "scaling_parameters": { + "offset": 1.0, + "scale": 1.0 + } }, "description": "Distribution describing the inter-trial interval (in seconds)." }, @@ -3781,10 +3793,13 @@ }, "truncation_parameters": { "max": 8.0, - "min": 1.0, + "min": 0.0, "truncation_mode": "exclude" }, - "scaling_parameters": null + "scaling_parameters": { + "offset": 1.0, + "scale": 1.0 + } }, "description": "Distribution describing the inter-trial interval (in seconds)." }, diff --git a/schema/coupled_baiting.json b/schema/coupled_baiting.json index ce6bf96..93ba3ac 100644 --- a/schema/coupled_baiting.json +++ b/schema/coupled_baiting.json @@ -40,10 +40,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Scalar", @@ -113,10 +116,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -218,10 +224,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -321,10 +330,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 10.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -424,10 +436,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 15.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -527,10 +542,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 30.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -634,10 +652,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 30.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", diff --git a/schema/uncoupled.json b/schema/uncoupled.json index 6e231b8..c233ce8 100644 --- a/schema/uncoupled.json +++ b/schema/uncoupled.json @@ -40,10 +40,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Scalar", @@ -113,10 +116,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -218,10 +224,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -321,10 +330,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 10.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -424,10 +436,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 15.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Uniform", @@ -514,10 +529,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 30.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Uniform", @@ -600,10 +618,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 30.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Uniform", diff --git a/schema/uncoupled_baiting.json b/schema/uncoupled_baiting.json index 61cd533..6157504 100644 --- a/schema/uncoupled_baiting.json +++ b/schema/uncoupled_baiting.json @@ -40,10 +40,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Scalar", @@ -113,10 +116,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -218,10 +224,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 7.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -321,10 +330,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 10.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Exponential", @@ -424,10 +436,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 15.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Uniform", @@ -514,10 +529,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 30.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Uniform", @@ -600,10 +618,13 @@ }, "truncation_parameters": { "truncation_mode": "clamp", - "min": 1.0, + "min": 0.0, "max": 30.0 }, - "scaling_parameters": null + "scaling_parameters": { + "scale": 1.0, + "offset": 1.0 + } }, "block_length": { "family": "Uniform", diff --git a/src/aind_behavior_dynamic_foraging/task_logic/trial_generators/block_based_trial_generator.py b/src/aind_behavior_dynamic_foraging/task_logic/trial_generators/block_based_trial_generator.py index 934d90a..f4f6736 100644 --- a/src/aind_behavior_dynamic_foraging/task_logic/trial_generators/block_based_trial_generator.py +++ b/src/aind_behavior_dynamic_foraging/task_logic/trial_generators/block_based_trial_generator.py @@ -8,6 +8,7 @@ Distribution, ExponentialDistribution, ExponentialDistributionParameters, + ScalingParameters, TruncationParameters, ) from aind_behavior_services.task.distributions_utils import draw_sample @@ -99,7 +100,8 @@ class BlockBasedTrialGeneratorSpec(BaseTrialGeneratorSpecModel): inter_trial_interval_duration: Distribution = Field( default=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1 / 2), - truncation_parameters=TruncationParameters(min=1, max=8), + truncation_parameters=TruncationParameters(max=8), + scaling_parameters=ScalingParameters(offset=1), ), description="Distribution describing the inter-trial interval (in seconds).", ) diff --git a/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/coupled_baiting/stages.py b/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/coupled_baiting/stages.py index 0f28006..603dd48 100644 --- a/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/coupled_baiting/stages.py +++ b/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/coupled_baiting/stages.py @@ -28,6 +28,7 @@ ExponentialDistributionParameters, Scalar, ScalarDistributionParameter, + ScalingParameters, TruncationParameters, ) @@ -54,7 +55,8 @@ def make_s_stage_1_warmup(): block_length=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -95,7 +97,8 @@ def make_s_stage_1_warmup(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -152,7 +155,8 @@ def make_s_stage_1(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -207,7 +211,8 @@ def make_s_stage_2(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=0.2), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=10), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=10), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.3)), is_baiting=True, @@ -262,7 +267,8 @@ def make_s_stage_3(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=15), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=15), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.5)), is_baiting=True, @@ -313,7 +319,8 @@ def make_s_stage_final(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=30), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), is_baiting=True, @@ -362,7 +369,8 @@ def make_s_stage_graduated(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=30), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), is_baiting=True, diff --git a/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled/stages.py b/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled/stages.py index 5ecd928..01225b3 100644 --- a/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled/stages.py +++ b/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled/stages.py @@ -35,6 +35,7 @@ ExponentialDistributionParameters, Scalar, ScalarDistributionParameter, + ScalingParameters, TruncationParameters, UniformDistribution, UniformDistributionParameters, @@ -72,7 +73,8 @@ def make_s_stage_1_warmup(): block_length=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -113,7 +115,8 @@ def make_s_stage_1_warmup(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -178,7 +181,8 @@ def make_s_stage_1(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -233,7 +237,8 @@ def make_s_stage_2(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=0.2), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=10), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=10), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.3)), is_baiting=False, @@ -280,7 +285,8 @@ def make_s_stage_3(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=15), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=15), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.5)), is_baiting=False, @@ -314,7 +320,8 @@ def make_s_stage_final(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=30), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30), + scaling_parameters=ScalingParameters(offset=1), ), autowater_parameters=None, quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), @@ -366,7 +373,8 @@ def make_s_stage_graduated(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=30), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), is_baiting=False, diff --git a/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled_baiting/stages.py b/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled_baiting/stages.py index d40bb8d..b42636c 100644 --- a/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled_baiting/stages.py +++ b/workspace/aind_behavior_dynamic_foraging_curricula/src/aind_behavior_dynamic_foraging_curricula/uncoupled_baiting/stages.py @@ -35,6 +35,7 @@ ExponentialDistributionParameters, Scalar, ScalarDistributionParameter, + ScalingParameters, TruncationParameters, UniformDistribution, UniformDistributionParameters, @@ -69,7 +70,8 @@ def make_s_stage_1_warmup(): block_length=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -110,7 +112,8 @@ def make_s_stage_1_warmup(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -167,7 +170,8 @@ def make_s_stage_1(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=7), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=7), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.1)), is_baiting=True, @@ -222,7 +226,8 @@ def make_s_stage_2(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=0.2), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=10), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=10), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.3)), is_baiting=True, @@ -269,7 +274,8 @@ def make_s_stage_3(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=15), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=15), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=0.5)), is_baiting=True, @@ -314,7 +320,8 @@ def make_s_stage_final(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=30), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), is_baiting=True, @@ -357,7 +364,8 @@ def make_s_stage_graduated(): ), inter_trial_interval_duration=ExponentialDistribution( distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3), - truncation_parameters=TruncationParameters(truncation_mode="clamp", min=1, max=30), + truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30), + scaling_parameters=ScalingParameters(offset=1), ), quiescent_duration=Scalar(distribution_parameters=ScalarDistributionParameter(value=1)), is_baiting=True,