Skip to content

Feat adding curriculum#52

Merged
micahwoodard merged 41 commits intomainfrom
feat-adding-curriculum
Apr 1, 2026
Merged

Feat adding curriculum#52
micahwoodard merged 41 commits intomainfrom
feat-adding-curriculum

Conversation

@micahwoodard
Copy link
Copy Markdown
Collaborator

@micahwoodard micahwoodard commented Mar 16, 2026

Added aind-behavior-dynamic-foraging-curricula as a workspace. I mirrored what was done is Aind.Behavior.VrForaging.Curricula. Had to add some args for metrics_from_dataset since df metrics depend on past sessions. Added tests for coupled_baiting and minimal tests for metrics. Should probably add some tests for calculating foraging efficiency

@micahwoodard micahwoodard marked this pull request as draft March 16, 2026 17:02
@micahwoodard micahwoodard marked this pull request as ready for review March 20, 2026 21:41
Copy link
Copy Markdown
Member

@bruno-f-cruz bruno-f-cruz left a comment

Choose a reason for hiding this comment

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

Here's a first pass.

One question: do you have plans for generating docs for the curricula?

I have done these for VrForaging: https://allenneuraldynamics.github.io/Aind.Behavior.VrForaging.Curricula/

But it wont work here because I hold them in two separate repos. We could re-use some of it i guess, but I will leave it up to you. Def not urgent

"pydantic-settings",
]

[tool.uv.workspace]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What I had in mind was slightly different. I think we could just move the curriculum package to ./src and use that as the workspace root instead. I think it makes the organization a bit more uniform and easier to follow.


# warmup
@StageTransition
def st_stage_1_warmup_to_stage_1(metrics: DynamicForagingMetrics) -> bool:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Are there not better names for these stages? using the index seems a bit wasteful since the graph already has this information implicitly

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

These are the names of the stages currently used so I'm not sure. That would be a good question for scientists

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess we can just wait until someone figures out that a stage should be added (or removed) between 2 and 3 and we will call it stage_2_5 🤣

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

trruuuuu

@micahwoodard
Copy link
Copy Markdown
Collaborator Author

Here's a first pass.

One question: do you have plans for generating docs for the curricula?

I have done these for VrForaging: https://allenneuraldynamics.github.io/Aind.Behavior.VrForaging.Curricula/

But it wont work here because I hold them in two separate repos. We could re-use some of it i guess, but I will leave it up to you. Def not urgent

I did not have any plans for docs. I can start working on that next!

@micahwoodard
Copy link
Copy Markdown
Collaborator Author

micahwoodard commented Mar 23, 2026

@bruno-f-cruz ready for a second look through. Not entirely sure if the repo structure now aligns with what you had in mind.

Copy link
Copy Markdown
Member

@bruno-f-cruz bruno-f-cruz left a comment

Choose a reason for hiding this comment

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

Change the folder name to use underscores instead of dashes and otherwise probably good to go :)
I think you may also be missing a top-level pyproject toml for the full project https://docs.astral.sh/uv/concepts/projects/workspaces/#workspace-layouts

@micahwoodard
Copy link
Copy Markdown
Collaborator Author

micahwoodard commented Mar 27, 2026

@bruno-f-cruz the current structure works in terms of both packages being independently built and synced. Another way that would make sense to me is something like this where its clear that the curricula and mapper are packages to be used on top of the task. This also mirrors the uv example

aind-behavior-dynamic-foraging/
├── pyproject.toml                        
├── src/
│   └── aind_behavior_dynamic_foraging/
└── packages/
    ├── aind-behavior-dynamic-foraging-curricula/
    │   ├── pyproject.toml
    │   └── src/
    │       └── aind_behavior_dynamic_foraging_curricula/
    └── aind-behavior-dynamic-foraging-metadata-mapper/  
        ├── pyproject.toml
        └── src/
            └── aind_behavior_dynamic_foraging_metadata_mapper/

@bruno-f-cruz
Copy link
Copy Markdown
Member

Sure. Just be careful with abusing the pattern too much. Optional dependencies are always an option. I am ok with either option and will trust your judgment either way.

@micahwoodard micahwoodard merged commit 1a52556 into main Apr 1, 2026
5 checks passed
@micahwoodard micahwoodard deleted the feat-adding-curriculum branch April 1, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants