v1.0.0
VrForaging 1.0.0 release
This tag marks the first stable release of the experimental workflow. Major versions are used to track dataset compatibility. Within a given major version, we may continue to evolve the experimental workflow, experiment control, UI, and curricula, but try our best to keep the data contract backwards-compatible.
Major features
- Updated against the latest versions of aind-behavior-services and clabe.
- Introduced script-driven workflows, including task launch, calibration, and session recovery.
- Refactored infrastructure to use external schema-generator references instead of package-duplicated schemas.
- Added saturation visualizer support across camera visualizers.
- Added support for odor mixtures across multiple olfactometers.
- Added Olfactometer extension support to the data contract and QC pipeline.
- Added support for terminating patches after N reward sites via OnSiteCountPatchTerminator.
- Migrated docs from Sphinx to MkDocs.
- Added delayed experiment start and stop support.
- Moved curricula into the mono-repo and streamlined project structure and launcher behavior.
Improvements
- Surfaced annotations in QC reports.
- Enforced rig_name and computer_name from environment variables.
- Improved metadata mapping, including olfactometer stimulus mapping.
- Improved photodiode event detection and aligned QC tests.
- Refactored ValidateOlfactometerDefinition to return Unit in Process.
- Updated schema folder layout and refactored Bonsai directory placement.
- Refactored QA startup ordering to run before task engine startup.
- Reduced QC stack-trace verbosity.
- Refactored and stabilized visualizer architecture, including saturation slider and velocity limits.
- Added commit hash encoding to metadata.
- Added waterlog integration to the experiment script.
- Added flexible tracking for external curricula repositories.
- Added support for automatic dataset version inference.
- Added curriculum README rendering.
Breaking changes
- Removed max_open_time from task logic.
- Rig schema is not backwards compatible in this release due to upstream simplification in aind-behavior-services. (See #499 for migration instructions.)
- Curriculum state used for sessions is now serialized to trainer_state.json as per aind-file-standards.
- odor_specification is now represented as
List[float]. - task_logic schema backward deserialization support was explicitly extended for versions >= 0.6.
Bug fixes
- Fixed lens models in instrument mapping.
- Fixed Pandas 3.x related QC issues by avoiding in-place mutation of read-only dataframes.
- Fixed deployment script issues.
- Fixed native assertion and startup-related native errors in visualizers.
- Added graceful pre-exit error handling.
- Generalized environment sampling and implemented sequential sampling.
- Fixed task logic and bounds for CTCM algorithm.
- Applied rig-test driven bug fixes.
What's Changed
- Move curricula to mono repo by @bruno-f-cruz in #519
- Add curriculum metadata to aind-data-schema data mapper by @bruno-f-cruz in #518
- Release v1 by @bruno-f-cruz in #476
- Update schema folder by @bruno-f-cruz in #520
- Refactor QA to run prior to task engine startup by @bruno-f-cruz in #522
- Ensure curriculum does not override root logger during import by @bruno-f-cruz in #524
- Small bug fixes from tests at the rig by @bruno-f-cruz in #525
- Refactor visualizers by @bruno-f-cruz in #527
- Encode commit hash in metadata by @bruno-f-cruz in #526
- Reduce verbosity level for stack traces in quality-control by @bruno-f-cruz in #530
- Refactor ImGui visualizers to prevent native errors at startup by @bruno-f-cruz in #531
- Refactor visualizer to include saturation slider and limits for velocity by @bruno-f-cruz in #534
- Fix native assertion from visualizers by @bruno-f-cruz in #535
- Refactor bonsai directory to
./bonsaiby @bruno-f-cruz in #539 - Handle errors gracefully before exiting by @bruno-f-cruz in #540
- Add waterlog to aind experiment script by @bruno-f-cruz in #541
- Allow flexible tracking of external curricula repositories by @bruno-f-cruz in #542
- Ensure patch reward available depletes on reward delivery by @bruno-f-cruz in #544
- Generalize environment sampling and implement sequential sampling by @bruno-f-cruz in #547
- Refactor available reward to not deplete implicitly by @bruno-f-cruz in #548
- Add support for automatically inferring dataset version by @bruno-f-cruz in #550
- Ensure previous task logic schema (>=0.6) is backwards deserializable by @bruno-f-cruz in #551
- Add deterministic reversals curriculum by @tiffanyona in #545
- Render curriculum readme by @bruno-f-cruz in #556
- Fix task logic and bounds for Ctcm algorithm by @bruno-f-cruz in #553
- Replace single_site_matching with single_site by @galenlynch in #552
- Add "Learning Sets" example by @bruno-f-cruz in #557
New Contributors
- @galenlynch made their first contribution in #552
Full Changelog: v0.6.8...v1.0.0