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
6 changes: 4 additions & 2 deletions .github/workflows/dynamic-foraging-cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@ jobs:
working-directory: ./.bonsai
run: ./setup.ps1

- name: Run python unit tests
run: uv run python -m unittest
- name: Run root python unit tests
run: |
uv run python -m unittest discover tests
uv run --directory .\workspace\aind_behavior_dynamic_foraging_curricula\ python -m unittest discover tests
Comment thread
micahwoodard marked this conversation as resolved.

- name: Regenerate all schemas
run: |
Expand Down
54 changes: 36 additions & 18 deletions schema/coupled_baiting.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,14 @@
"rate": 0.2
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 20.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm confused on the logic here.

  • Before we were sampling between 10 and 20, now we are sampling between 0 and 20 and then adding 10, resulting in 10-30
  • So shouldn't we instead sample between 0 and 10, and then add 10?

},
"autowater_parameters": {
"min_ignored_trials": 3,
Expand Down Expand Up @@ -241,11 +244,14 @@
"rate": 0.2
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 20.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 5,
Expand Down Expand Up @@ -348,11 +354,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 40.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 7,
Expand Down Expand Up @@ -455,11 +464,14 @@
"rate": 0.05
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 20.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 60.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 20.0
}
},
"autowater_parameters": {
"min_ignored_trials": 10,
Expand Down Expand Up @@ -562,11 +574,14 @@
"rate": 0.05
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 20.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 60.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 20.0
}
},
"autowater_parameters": null,
"bias_intervention_parameters": {
Expand Down Expand Up @@ -673,11 +688,14 @@
"rate": 0.05
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 20.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 60.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 20.0
}
},
"autowater_parameters": null,
"bias_intervention_parameters": {
Expand Down
27 changes: 18 additions & 9 deletions schema/uncoupled.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 30.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 3,
Expand Down Expand Up @@ -241,11 +244,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 30.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 5,
Expand Down Expand Up @@ -348,11 +354,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 40.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 7,
Expand Down
27 changes: 18 additions & 9 deletions schema/uncoupled_baiting.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 30.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 3,
Expand Down Expand Up @@ -241,11 +244,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 30.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 5,
Expand Down Expand Up @@ -348,11 +354,14 @@
"rate": 0.1
},
"truncation_parameters": {
"truncation_mode": "exclude",
"min": 10.0,
"truncation_mode": "clamp",
"min": 0.0,
"max": 40.0
},
"scaling_parameters": null
"scaling_parameters": {
"scale": 1.0,
"offset": 10.0
}
},
"autowater_parameters": {
"min_ignored_trials": 7,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ def make_s_stage_1_warmup():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.2),
truncation_parameters=TruncationParameters(min=10, max=20),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=20),
scaling_parameters=ScalingParameters(offset=10),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -151,7 +152,8 @@ def make_s_stage_1():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.2),
truncation_parameters=TruncationParameters(min=10, max=20),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=20),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question here, I don't follow the logic of how the parameterization works

scaling_parameters=ScalingParameters(offset=10),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -207,7 +209,8 @@ def make_s_stage_2():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.1),
truncation_parameters=TruncationParameters(min=10, max=40),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=40),
scaling_parameters=ScalingParameters(offset=10),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -263,7 +266,8 @@ def make_s_stage_3():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.05),
truncation_parameters=TruncationParameters(min=20, max=60),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=60),
scaling_parameters=ScalingParameters(offset=20),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -315,7 +319,8 @@ def make_s_stage_final():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.05),
truncation_parameters=TruncationParameters(min=20, max=60),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=60),
scaling_parameters=ScalingParameters(offset=20),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -365,7 +370,8 @@ def make_s_stage_graduated():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.05),
truncation_parameters=TruncationParameters(min=20, max=60),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=60),
scaling_parameters=ScalingParameters(offset=20),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@ def st_stage_1_to_stage_2(metrics: DynamicForagingMetrics) -> bool:
# stage 2
@StageTransition
def st_stage_2_to_stage_3(metrics: DynamicForagingMetrics) -> bool:
return bool(metrics.foraging_efficiency_per_session[-1] >= 0.65 and metrics.unignored_trials_per_session[-1] >= 300)
return bool(
metrics.foraging_efficiency_per_session[-1] >= 0.65
and metrics.unignored_trials_per_session[-1] >= 300
and metrics.consecutive_sessions_at_current_stage >= 2
)


@StageTransition
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ def make_s_stage_1_warmup():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.1),
truncation_parameters=TruncationParameters(min=10, max=30),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30),
scaling_parameters=ScalingParameters(offset=10),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -177,7 +178,8 @@ def make_s_stage_1():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.1),
truncation_parameters=TruncationParameters(min=10, max=30),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=30),
scaling_parameters=ScalingParameters(offset=10),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down Expand Up @@ -233,7 +235,8 @@ def make_s_stage_2():
),
block_length=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=0.1),
truncation_parameters=TruncationParameters(min=10, max=40),
truncation_parameters=TruncationParameters(truncation_mode="clamp", min=0, max=40),
scaling_parameters=ScalingParameters(offset=10),
),
inter_trial_interval_duration=ExponentialDistribution(
distribution_parameters=ExponentialDistributionParameters(rate=1.0 / 3),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@ def st_stage_1_to_stage_2(metrics: DynamicForagingMetrics) -> bool:
# stage 2
@StageTransition
def st_stage_2_to_stage_3(metrics: DynamicForagingMetrics) -> bool:
return bool(metrics.foraging_efficiency_per_session[-1] >= 0.65 and metrics.unignored_trials_per_session[-1] >= 300)
return bool(
metrics.foraging_efficiency_per_session[-1] >= 0.65
and metrics.unignored_trials_per_session[-1] >= 300
and metrics.consecutive_sessions_at_current_stage >= 2
)


@StageTransition
Expand Down
Loading