Releases: RuminantFarmSystems/RuFaS
v1.0.0
Release Notes --- v1.0.0
Highlights
- [core, architecture] Large refactor and modularization across
animal, manure, crop/soil, feed, and I/O subsystems. - [animal] Major reorganization of the animal module (growth,
digestion, milk/lactation, genetics, reproduction and ration
management). - [manure] Comprehensive manure-module refresh (streams, processors,
storages, separators, anaerobic digester fixes, temperature model). - [output] OutputManager and reporting rework: chunked outputs,
data-origin tracking, improved rounding/significant-digits and CSV
unit handling. - [testing] Expanded unit and end-to-end (E2E) test coverage and
automated E2E expected-results regeneration. - [tooling] Packaging and CI updates (pyproject.toml, GitHub
Actions); baseline Python compatibility changed in CI tooling. - Note: Many renames and refactors were introduced (examples include
output keys and time/unit names). These changes may be
backward-incompatible for scripts and downstream reports.
Scientific Evaluation
Evaluation Objective:
A structured whole-farm evaluation was conducted prior to release of
v1.0 to assess integrated model performance following recent updates.
While individual methods are tested throughout development, this
whole-farm assessment focused on system-wide behavior across diverse
farm conditions.
Key Findings:
- Alignment with reported production: Predicted annual milk
production closely matched farm-reported values across the 13
evaluation farms - Environmental outcomes within expected ranges: Enteric methane,
manure emissions, and carbon intensity estimates were within
expected ranges and behaved consistently in response to production
efficiency and manure system configuration. - Methodological updates performed as intended: Differences
between v0.8 and v1.0 were consistent with documented updates to
herd demographics simulation, lactation curve implementation, diet
formulation, and manure module methodology. Observed shifts were
directionally logical and explainable. - No evidence of unintended system instability: Production and
emissions outputs remained coherent across diverse farm scenarios.
Methodology:
Thirteen farms representing variation in herd size, geography,
production level, and management practices were simulated four times
each, with outputs averaged to reduce stochastic variability. We
evaluated production metrics (e.g., milk yield, intake, herd
demographics) and environmental outcomes (e.g. enteric methane, manure
methane and N₂O, and carbon intensity).
Model performance was assessed through:
- Comparison of predicted milk production with farm-reported values,
- Benchmarking environmental outputs against published literature
ranges, and - Comparison with v0.8 model outputs to ensure changes aligned with
documented methodological updates.
This review was designed to confirm biologically and environmentally
plausible system-level behavior prior to release. While not a formal
external validation, the results provide confidence that the v1.0 update
performs as intended across a diverse set of farm scenarios.
Improvements
- [animal] Reorganized animal/herd initialization; ration
formulation and ration-optimizer refactored to enable user-defined
rations. - [animal] Nutrition and requirements refactors; improved unit-test
coverage for animal components. - [manure] New/updated manure storage classes (composting, slurry,
covered/bedded-pack) and improved processor models
(temperature-dependent processes, damping/Arrhenius adjustments). - [manure] Manure manager adjacency matrix validation and traversal
improvements to clarify routing and processor order. - [feed] FeedManager and FeedStorage fixes: storage-based
deductions, mapping/uniqueness handling, inventory rounding and
buffer/shrink handling. - [emissions] Updates to feed and emissions handling including
purchased-feed emissions, farmgrown feed LCA/LUC-related handling,
and interpolated feed-emissions data support. - [output] ReportGenerator/GraphGenerator improvements: legend
alignment, mapping logs, aggregation logging, and more consistent
reporting of units. - [input, validation] InputManager and DataValidator consolidation:
improved cross-validation, alias handling, more helpful error
messages, and lazy runtime metadata loading. - [crop/soil] Crop and soil refactors including canopy water and
root-depth handling; harvested crop dry-matter (DM) refactor. - [io] UTF‑8 CSV handling and CSV units improvements.
- [performance] Performance optimizations (new numba usage in parts
of the codebase). - [docs] Documentation improvements and Data Collection App (DCA)
integration: schema, dropdowns and improved validation messages.
Bug Fixes
- [time/units] Fixed time-unit handling (unit renames and Time.day
corrections). - [manure] Fixes to anaerobic digester behavior and separator
handling that addressed processing and emissions flows. - [animal] Fixes to herd/reproduction handling (estrus, herd
initialization) and enteric methane reporting adjustments. - [feed] Resolved feed-storage deduction and feed-purchase
accounting defects; fixes that prevented potential infinite-loop
conditions in ration/feeding logic. - [io] OutputManager parsing and report naming fixes to reduce
ambiguity in aggregation and export. - [tests] Multiple E2E and unit-test fixes aligned with refactors to
restore expected behaviour in automated tests.
Data / I/O Changes
- [output] OutputManager now supports chunked output writing and
enhanced data-origin metadata for reported variables. - [output] Standardized rounding and significant-digit behavior for
reported values; CSV outputs now include unit information where
available. - [input, dca] Data Collection App schema changes and new validation
fields; improved error messaging and dropdown behavior. - [input] Support for multiple properties files and input_root
handling; metadata loading moved to lazy/runtime where applicable. - [e2e] E2E expected-results regeneration was automated; tolerances
and overwrite behaviour were adjusted in test automation. - Caution: renaming of output keys (examples noted during refactor)
and changes to units/rounding can affect downstream dashboards,
filters and comparisons.
Internal / Tooling
- [ci] CI and packaging updates: pyproject.toml and GitHub Actions
workflow updates; CI now targets newer Python runtime(s) in
workflows. - [deps] Added/used numba in parts of the codebase for
performance-critical paths. - [testing] Increased unit-test coverage and improved E2E
automation, including test fixes and fork/CI reliability
improvements. - [docs] Sphinx documentation updates and repo governance additions
(LICENSE, CODEOWNERS, CONTRIBUTING). - [constants] Consolidation of constants and units across modules to
reduce duplication.
Known Risks and Notes
- Large refactors and many moved/renamed symbols may cause
backward-incompatible API changes; downstream tools and reports may
require updates. - New dependency (numba) and CI/tooling changes may require
environment adjustments for users and CI runners. - Changes to emissions defaults, interpolated feed-emissions data, and
rounding/units may materially change model outputs relative to
previous releases; subject-matter review is advised. - OutputManager chunkification and altered reporting/origins increase
complexity for downstream consumers; verify memory/IO behavior for
large runs. - DataValidator now consolidates validation behavior; callers that
previously relied on OutputManager side effects should confirm new
control flow and event logging.
1.0.0.01
What's Changed
- [Feed][Emission] Implement dict reporting structure for feed deduction data by @matthew7838 in #2760
- [Feeds][Ration] Feed order fix by @ew3361zh in #2763
- updated purchased feed deductions reporting by @KFosterReed in #2785
- Update pyproject.toml by @PooyaHekmati in #2816
Full Changelog: 1.0.0.0alpha...1.0.0.01
1.0.0.0alpha
What's Changed
- [Manure] Liquid manure storage bug fix and addition of missing separation efficiency by @elle-andreen in #2678
- [2/2][Input Manager] Add functionality to load metadata lazliy by @PooyaHekmati in #2640
- Update input_manager.py by @PooyaHekmati in #2688
- Allow multiple crop-field combos to map to the same feed storage by @allisterakun in #2672
- [Metadata] Prevent simulation fails when metadata blobs for fields/manure/harvest DNE by @matthew7838 in #2674
- Maximum ration attempts by @JoeWaddell in #2677
- [Feed Storage] Feed storage hot fix by @ew3361zh in #2708
- [Pilot testing] Fixed farm 4 by @matthew7838 in #2710
- [DataValidator] Improves and fixes DataValidator data-fixing error messaging by @ew3361zh in #2675
- [Feed][Reporting] Farmgrown Feed reports cleanup by @ew3361zh in #2679
- [Manure] Updates to damping factor and Arrhenius value constants for slurry and anaerobic lagoon manure storages by @elle-andreen in #2711
- [OutputManager] Add option to use original regex filter match as output variable name by @ew3361zh in #2709
- Update FGF to report Daily by @allisterakun in #2726
- Genetics implementation by @allisterakun in #2608
- [EEEManager]Fix the error associated with loading runtime metadata by @PooyaHekmati in #2701
- Revert "Genetics implementation" by @allisterakun in #2730
- Setting minimum for liquid manure by @JoeWaddell in #2721
- avoid animal and manure modules if no animals simulated by @JoeWaddell in #2732
- [E2E] Fix broken e2e testing by @matthew7838 in #2705
- Add support for multiple properties files by @PooyaHekmati in #2689
- Scientific documentation updates by @KFosterReed in #2731
- Removing-storage-strings by @JoeWaddell in #2739
Full Changelog: 1.0.1-alpha...1.0.0.0alpha
v1.0.1-alpha
What's Changed
- update code from forked repo by @PooyaHekmati in #2441
- updates input folder from forked repo by @PooyaHekmati in #2440
- Make
max_daily_feed_recalculations_per_yearan User Input by @allisterakun in #2586 - [Manure] Implement unit test for
Processor.check_manure_stream_compatibility()by @allisterakun in #2584 - [Animal] Rollback to single methane emission prediction support by @matthew7838 in #2582
- [GitHub Action] Fix GitHub Action to run on Forked Branches by @allisterakun in #2583
- Cleanup AnimalModuleReporter by @allisterakun in #2393
- Cross-scenario Aggregation by @PooyaHekmati in #2587
- [EEE][FeedManager] Update Calculation Method for Purchased Feed Emissions by @ew3361zh in #2524
- [Manure] Updates manure stream splitting to accommodate for zero deposition in parlor streams by @ew3361zh in #2594
- [Manure] Adding back emission reporting by @matthew7838 in #2603
- [CropSoil] Removes routines folder by @ew3361zh in #2606
- [Testing][E2E] Add E2E testing for Feed/Feed Storage modules by @ew3361zh in #2605
- [Cross validation] Conditional clause by @matthew7838 in #2597
- Remove
dummy_pathgenerated by unit tests by @allisterakun in #2612 - [Manure] Separate tracking for manure bedding VS by @matthew7838 in #2599
- [Inputs][Feed] Remove outdated feed inputs by @ew3361zh in #2618
- Update PR template and changelog example to reflect IO changes by @allisterakun in #2624
- Diesel consumption by @PooyaHekmati in #1299
- [Units][Logging] Fixes units logging error by @ew3361zh in #2629
- [FeedManager][Storage] Updates
FeedManagerto deduct feeds by storage by @ew3361zh in #2598 - Reinstating report_daily_herd_total_ration functionality by @JoeWaddell in #2634
- [ReadMe][Documentation] Updates ReadMe Getting Started section by @ew3361zh in #2635
- Fix ReadMe Badges by @allisterakun in #2641
- [CrossValidation] Implements final XValidation step by @ew3361zh in #2628
- ConfigRufas_Img by @gmg228 in #2613
- Farmgrown feed emissions reporting by @allisterakun in #2633
- [1/2][EEE] Add Economics input prices by @PooyaHekmati in #2639
- [Metadata][TaskManager] Expands path matching capacities for dirs and files by @ew3361zh in #2643
- [FeedManager][FeedStorage] Ensures particular crop-field pair maps to only one storage by @ew3361zh in #2644
- NASEM net energy update by @JoeWaddell in #2600
- Separate Unit Tests for photosynthesize() and partition_biomass() in allocate_biomass() by @allisterakun in #2653
- [Inputs][Metadata][Properties] Adds task property to allow running simulations using inputs from external repos by @ew3361zh in #2660
- [Manure] Improve temperature estimation of slurry of liquid manure in storage by @matthew7838 in #2636
- [Manure] Updates Contributing Factors to Anaerobic Lagoon Methane Calculations by @ew3361zh in #2638
- Improved ration manager logic by @JoeWaddell in #2655
- [Feed] Adds Purchased Feed Buffer default by @ew3361zh in #2673
- [Animal][Testing] Update Animal module unit testing to 100% by @ew3361zh in #2670
New Contributors
Full Changelog: pre-release...1.0.1-alpha
v1.0.0-alpha
pre-release Merge pull request #2579 from RuminantFarmSystems/milking_cow_fractio…