Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
dcd40d3
adds draft of coupled block generator and example
micahwoodard Feb 6, 2026
df5dc7f
regenerates schemas
micahwoodard Feb 6, 2026
18d8ff8
lints and adds logs
micahwoodard Feb 7, 2026
363c20e
lints
micahwoodard Feb 7, 2026
13d85ab
fixes typos
micahwoodard Feb 7, 2026
3324705
merge with main
micahwoodard Feb 18, 2026
852d4a0
uses draw_sample for distributions
micahwoodard Feb 18, 2026
6b22100
lints
micahwoodard Feb 18, 2026
61a3dca
lints
micahwoodard Feb 18, 2026
fd4d573
regenerates schema
micahwoodard Feb 18, 2026
7c258f4
adds unit tests for couple task
micahwoodard Feb 25, 2026
196abca
removes unneeded fields from task logic
micahwoodard Feb 25, 2026
cc65a3a
merges with main
micahwoodard Feb 25, 2026
50ea722
reverts test_python
micahwoodard Feb 25, 2026
c90b53b
adds baiting logic
micahwoodard Feb 26, 2026
b5eefa5
updates aind behavior service
micahwoodard Feb 26, 2026
c9f726f
removes curricula
micahwoodard Feb 26, 2026
b39098b
regenerates
micahwoodard Feb 26, 2026
aaa1be2
removes comma
micahwoodard Feb 26, 2026
e5c995e
adds block based trial generator base class
micahwoodard Feb 27, 2026
6115525
breaks up unittests
micahwoodard Feb 27, 2026
cc70b5e
regenerates
micahwoodard Feb 27, 2026
1828bcf
adds tests for baiting
micahwoodard Feb 27, 2026
d882c55
merge with main
micahwoodard Feb 27, 2026
f52c9fa
addresses review comments
micahwoodard Mar 5, 2026
43ab457
merges with main
micahwoodard Mar 5, 2026
6ee1cbc
Update pyproject.toml
micahwoodard Mar 5, 2026
80bd5b8
adds default kwarg for max time
micahwoodard Mar 5, 2026
39db415
Merge branch 'feat-coupled-trial-generator' of github.com:AllenNeural…
micahwoodard Mar 5, 2026
ccf4776
fast retract and volume defaults
micahwoodard Mar 5, 2026
2b65f70
removes timedelta
micahwoodard Mar 5, 2026
2487bd3
set to 96000
micahwoodard Mar 5, 2026
4c15f50
renames p left reward
micahwoodard Mar 5, 2026
f2ee6e2
formats
micahwoodard Mar 5, 2026
139c834
update accepts string or model
micahwoodard Mar 5, 2026
bea68d1
adds log back in
micahwoodard Mar 5, 2026
1e48b30
adds log
micahwoodard Mar 5, 2026
509d4b1
set iti on first trial
micahwoodard Mar 5, 2026
b4ca824
take one bias
micahwoodard Mar 5, 2026
cf1b348
adds dummy move lickspout
micahwoodard Mar 5, 2026
07a1d19
reset autowater
micahwoodard Mar 5, 2026
cc3c074
regroups task engine
micahwoodard Mar 5, 2026
d238e6b
test autowater
micahwoodard Mar 5, 2026
828e3b8
removes testing
micahwoodard Mar 5, 2026
b4ae766
lints
micahwoodard Mar 5, 2026
252cb29
Fix visualizer
bruno-f-cruz Mar 5, 2026
9d402e2
Merge pull request #46 from AllenNeuralDynamics/origin/feat-coupled-t…
bruno-f-cruz Mar 5, 2026
21080f7
Fix type hinting
bruno-f-cruz Mar 6, 2026
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
3 changes: 3 additions & 0 deletions bonsai/Bonsai.config
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
<Package id="Bonsai.Vision" version="2.8.1" />
<Package id="Bonsai.Vision.Design" version="2.8.1" />
<Package id="Bonsai.VR" version="0.6.0" />
<Package id="Bonsai.Windows.Input" version="2.9.0" />
<Package id="BonVision" version="0.11.0" />
<Package id="DockPanelSuite" version="3.1.1" />
<Package id="DockPanelSuite.ThemeVS2015" version="3.1.1" />
Expand Down Expand Up @@ -107,6 +108,7 @@
<AssemblyReference assemblyName="Bonsai.Vision" />
<AssemblyReference assemblyName="Bonsai.Vision.Design" />
<AssemblyReference assemblyName="Bonsai.VR" />
<AssemblyReference assemblyName="Bonsai.Windows.Input" />
<AssemblyReference assemblyName="BonVision" />
<AssemblyReference assemblyName="Harp.AnalogInput" />
<AssemblyReference assemblyName="Harp.Behavior" />
Expand Down Expand Up @@ -149,6 +151,7 @@
<AssemblyLocation assemblyName="Bonsai.Vision" processorArchitecture="MSIL" location="Packages/Bonsai.Vision.2.8.1/lib/net462/Bonsai.Vision.dll" />
<AssemblyLocation assemblyName="Bonsai.Vision.Design" processorArchitecture="MSIL" location="Packages/Bonsai.Vision.Design.2.8.1/lib/net462/Bonsai.Vision.Design.dll" />
<AssemblyLocation assemblyName="Bonsai.VR" processorArchitecture="MSIL" location="Packages/Bonsai.VR.0.6.0/lib/net45/Bonsai.VR.dll" />
<AssemblyLocation assemblyName="Bonsai.Windows.Input" processorArchitecture="MSIL" location="Packages/Bonsai.Windows.Input.2.9.0/lib/net472/Bonsai.Windows.Input.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.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" />
Expand Down
22 changes: 22 additions & 0 deletions examples/coupled_trial_generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import logging
import random

from aind_behavior_dynamic_foraging.task_logic.trial_generators.coupled_trial_generator import CoupledTrialGeneratorSpec
from aind_behavior_dynamic_foraging.task_logic.trial_models import Trial, TrialOutcome


def main():
coupled_trial_generator = CoupledTrialGeneratorSpec().create_generator()
trial = Trial()
for i in range(100):
trial_outcome = TrialOutcome(
trial=trial, is_right_choice=random.choice([True, False, None]), is_rewarded=random.choice([True, False])
)
coupled_trial_generator.update(trial_outcome)
trial = coupled_trial_generator.next()
print(f"Next trial: {trial}")


if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
main()
17 changes: 1 addition & 16 deletions examples/task_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,12 @@
task_logic = AindDynamicForagingTaskLogic(
task_parameters=AindDynamicForagingTaskParameters(
rng_seed=42,
warmup=df_task_logic.Warmup(min_trial=50, max_choice_ratio_bias=0.1, min_finish_ratio=0.8, windowsize=20),
reward_probability=df_task_logic.RewardProbability(base_reward_sum=0.8, family=3, pairs_n=1),
block_parameters=df_task_logic.BlockParameters(min=10, max=30, beta=10, min_reward=0),
inter_trial_interval=df_task_logic.InterTrialInterval(min=1, max=7, beta=3),
delay_period=df_task_logic.DelayPeriod(min=0, max=0, beta=0),
reward_delay=0.1,
reward_size=df_task_logic.RewardSize(right_value_volume=4.0, left_value_volume=4.0),
auto_water=df_task_logic.AutoWater(
auto_water_type="Natural",
multiplier=0.5,
unrewarded=3,
ignored=3,
),
auto_block=df_task_logic.AutoBlock(advanced_block_auto="now", switch_thr=0.5, points_in_a_row=5),
response_time=df_task_logic.Response(response_time=5, reward_consume_time=1),
uncoupled_reward=[0.1, 0.3, 0.7],
)
)


def main(path_seed: str = "./local/PatchForaging_{schema}.json"):
def main(path_seed: str = "./local/DynamicForaging_{schema}.json"):
example_task_logic = task_logic
example_trainer_state = TrainerState(
stage=Stage(name="example_stage", task=example_task_logic), curriculum=None, is_on_curriculum=False
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ version = "0.0.2rc13"
readme = {file = "README.md", content-type = "text/markdown"}

dependencies = [
"aind_behavior_services<0.14",
"aind_behavior_services>=0.13.2",
"pydantic-settings",
]

Expand Down
Loading