feat(benchmark): Phase 4 validation pipeline integration, metric_CRPS… - #4062
feat(benchmark): Phase 4 validation pipeline integration, metric_CRPS…#4062ayushman1210 wants to merge 13 commits into
Conversation
6bb6f9a to
25e7854
Compare
divine7022
left a comment
There was a problem hiding this comment.
this looks good to me. I left few inline comments, but I haven’t finished my review yet
|
metric work here looks good some relevant places are modules/benchmark/inst/ |
There was a problem hiding this comment.
I would like to slow down on committing this one. this done as a part of magic; so the question whether data can live here ? then comes a question, It's that this file arrived with no citation and no derivation, and once it's in the tree it falls under LICENSE -- I defer this @dlebauer for clarification
There was a problem hiding this comment.
I think it would make more sense to put the example run in a package vignette (probably best).
Regarding including this dataset, I dont think it makes sense to include a dataset here. And, you make a good point about the license, but I think it is sufficient to cite the source of the data in the README.md.
There was a problem hiding this comment.
The vignette can use a small fixture: perhaps two systems, two years, and 10 ensemble members.
Co-authored-by: Akash B V <www.divinehome12@gmail.com>
Co-authored-by: Akash B V <www.divinehome12@gmail.com>
dlebauer
left a comment
There was a problem hiding this comment.
Thanks @ayushman1210 , this is great progress. I have a number of in-line comments.
A few key points:
-
we should not add a new salinas-socs directory in the PEcAn root. this could go under examples/ and / or it could be included as a package vignette.
-
PR description claims that it
closes #4059, but it doesn't appear to meet (or explain deviations from) specifications in that issue. For example:
- there is no Ameriflux dataset
- bias metric (it is calculated for the plot, but there is no metric_Bias function)
- there is no spaghetti plot
- Please revise README for clarity, style, and consistency with current state. Style: use standard capitalization and concise, complete sentences, particularly in the introduction, file descriptions, and workflow steps. Distinguish committed files from generated or external inputs—ensemble_output.csv and build_salinas_soc_obs.py are referenced but not included. Explain how the monthly model output should be compared with the annual SOC observations.
There was a problem hiding this comment.
The vignette can use a small fixture: perhaps two systems, two years, and 10 ensemble members.
Description
This PR implements Phase 4: Biogeochemistry MVP Integration and Initial Benchmarks (#4059), proving the decoupled PEcAn validation pipeline end-to-end against real model output and observations.
Key changes include:
metric_CRPS.RImplementation & Metric Registry: Added Continuous Ranked Probability Score inmetric_CRPS.RusingscoringRules::crps_sample()with pure-R analytical fallback. RegisteredCRPSinpecan_metric_registryand added unit test suitetest-metric_CRPS.R(6/6 PASS).salinas-socs/ensemble_benchmark/run_benchmarks.Rto ingest EFI-long ensemble outputs, align monthly model data to annual observations withalign_by_time(), compute point metrics (RMSE, MAE, R2) & spread metrics (Coverage, CRPS), and compile a dynamic HTML report (Salinas_SOC_Validation_Report.html).test-ensemble_integration.Rintestthat(18/18 PASS) to verify time alignment, metric calculations, and scorecard column structures without heavy model execution in CI.metric_Coverage.Rfor direct in-band scoring and updatedmetric_timeseries_plot.Rwith numerical PMU scores andStatus: PASS/FAILannotations.Motivation and Context
This change fulfills Phase 4 of the GSoC 2026 Validation Toolkit workplan. Building on the core data intake API (#4017), test coverage (#4032), and Quarto reporting layer (#4040, #4041), Phase 4 proves the pipeline on real biogeochemistry datasets (Salinas SOC ensemble & AmeriFlux MVP) and introduces ensemble spread metrics (CRPS, Coverage).
Closes #4059.
Types of changes
Checklist: