Skip to content

Add management practice priors#3

Open
divine7022 wants to merge 4 commits into
mainfrom
management_prac
Open

Add management practice priors#3
divine7022 wants to merge 4 commits into
mainfrom
management_prac

Conversation

@divine7022
Copy link
Copy Markdown

@divine7022 divine7022 commented Jan 30, 2026

Summary

Adds documented prior distributions for CA ag management parameters, derived from NRCS practice standards, CDFA program guidelines, and UC ANR extension publications.

  • data/management_priors.yaml - Machine readable priors for ensemble sampling

  • R/sample_priors.R - Functions to sample from prior distributions

  • docs/management_priors.md - Documentation with source justifications

  • scenarios.yaml - Updated parameter values based on verified sources and added comments

Verification

All priors verified against primary sources:

  • NRCS conservation practice standards (329, 340, 345, 449)
  • CDFA compost application rates white paper (Gravuer 2016)
  • UC ANR publications (3396, 3470)
  • USDA NASS census 2022

Implements - #161

@divine7022 divine7022 marked this pull request as draft January 30, 2026 17:17
@divine7022 divine7022 changed the title Management practices for different crops Add management practice priors Jan 30, 2026
Copy link
Copy Markdown
Contributor

@dlebauer dlebauer left a comment

Choose a reason for hiding this comment

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

This is a solid step toward a structured priors system. It is clear that you have put a lot of thought into the specification, and this is a first step toward a framework that could be used for monitoring, future scenarios, and creation of test runs.

management_priors.yaml appears aligned with the yaml example I drafted in ccmmf/organization#170, although we skipped the explicit "Before implementation the first step is to discuss and have the specification reviewed." step.

Given the near-term need to simulate management inputs, I recommend that we address a few points, focusing on those that will more clearly define the approach and align with existing PEcAn functions and data (like events_schema.json and PEcAn.data.land::look_up_fertilizer_components).

Let's capture feedback from @mdietze, @sarahkanee and others, and triage what should be included in this PR vs what belongs in new issues.

To fix before merging:

  1. Consistent Practice IDs. And these should be consistent with names in events.json where practical. We may need to expand the list of practices in events_schema.json; ideally we don't need a separate practice dictionary.
    • specifically, in management_priors.yaml, practices uses 'cover_crop_annual', 'compost_application', 'irrigation_drip' whereas adoption_rates has 'cover_crop', 'compost', and compatibility has 'cover_crop', 'irrigation_flood', 'tillage'.
  2. Make sure that README is consistent with scenarios.yaml; remove scenario_parameters.csv if obsolete.

Future work:

  • Gather feedback from group and triage - decide what's needed in this PR vs what can be clarified in new issues for future implementation.
    • criteria for merging: meets near term needs to simulate management inputs and does not cause unnecessary technical debt (i.e. downstream pipelines that will not be transferable to monitoring and projection workflows, beyond what is necessary to learn through the process of implementation and application)
  • Consider what this would look like as a spreadsheet from the perspectives of end users, data validation, and code complexity.
  • Expand the priors to better represent the common crops/PFTs in CA, and regions. Also need to have generic CFT fallbacks. Coverage doesn't need to be comprehensive at the crop level, but should reflect what is available from CDFA/UCANR/NRCS sources for major CA crops.
  • Adoption rates will be useful in the short term for simulating monitoring workflows. Where applicable, these should be directly informed by initial conditions + transition matrices derived from LandIQ data.
    • but note that even though LandIQ says it has mixed cropping systems, it does not, and this is one place that adoption rates (e.g. % of orchards with ground cover) will be helpful.

Comment thread docs/management_priors.md

### STIR Scale Background

NRCS uses the Soil Tillage Intensity Rating (STIR) on a **0-200 scale**:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

add definition of STIR - and confirm how this is linked to SIPNET tillage efficiency.

Comment thread docs/management_priors.md

### Our Model Parameter

Our parameter `tillage_eff_0to1` represents SOM pool transfer fraction, not direct STIR. The conversion is approximately `tillage_eff ≈ STIR / 200`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think it is a good idea to use STIR to inform the SIPNET parameter, especially to inform the relative impact of different tillage tools and practices.

However, there isn't a direct mapping to a SIPNET parameter, and the parameter would probably be best calibrated using a time series of CO2 flux.

So for an MVP I think it would be sufficient to create a table of priors that represent no-till, reduced-till, and conventional

Suggested change
Our parameter `tillage_eff_0to1` represents SOM pool transfer fraction, not direct STIR. The conversion is approximately `tillage_eff ≈ STIR / 200`.
The SIPNET parameter $f_\text{till}$ (`tillage_eff_0to1`) represents the transient increase in decomposition rate that exponentially decays over time[^1]. SOM pool transfer fraction, not direct STIR. The conversion is approximately `tillage_eff ≈ STIR / 200`.
[^1]: SIPNET Documentation https://pecanproject.github.io/sipnet/user-guide/model-inputs/#tillage

Comment thread docs/management_priors.md
Comment on lines +48 to +49
We use Beta distributions because:
1. Parameter is bounded [0, 1]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

need to separate bulleted list by blank line for the list to render correctly

Suggested change
We use Beta distributions because:
1. Parameter is bounded [0, 1]
We use Beta distributions because:
1. Parameter is bounded [0, 1]

distribution: beta
a: 7
b: 13 # mean=0.35
date:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

typically tillage will occur some number of days before planting. It may make more sense to anchor tillage dates to planting.

It may sense to anchor other management types to planting dates, e.g.

  • irrigation only between planting and harvest (perhaps a few days ahead)
  • pre-planting fertilization; post-planting side-dress

Comment thread docs/management_priors.md

## Compost Application

### CDFA Official Rates
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

PEcAn.data.land::look_up_fertilizer_components provides default values for different fertilizer and organic matter types, including the C:N ratio and mineral N content. Would that be helpful here? If CDFA specifies these very broad "compost types" it may not be necessary, but if there are statistics on the frequency and application rates of specific NCC types, it could be useful.

Comment thread docs/management_priors.md

CalRecycle lab data (n=1364 samples) shows typical finished compost C:N = 14-20.

**Prior:** Normal(16, 3) -> 95% CI [10, 22]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

should there be separate priors for high and low C:N OM additions?

- [reduced_tillage, cover_crop]
- [compost_application, reduced_tillage]
- [irrigation_drip, cover_crop_orchard]
incompatible:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

what makes these incompatible? Need to add sources.


metadata:
sources:
- id: nrcs_cps_329
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

For linking priors to references, I think it would be better to include the id, and then use a bibtex file to store the references. Create a group in Zotero with files and export the bibtex.

source: CDFA Gravuer 2016 Table 2
parameters:
org_c_kg_m2:
# Table 2: annual crops + lower N compost = 4.0-5.3 dry tons/ac
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • we should leverage and / or extend PEcAn.data.land::look_up_fertilizer_components to support this workflow (look up N & C composition)
  • organic matter ammendments typically have some mineral N (NO3 &/or NH4)

b: 15 # ~25%, flood dominant

# Crop-specific baselines
crop_baselines:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Need to have fallbacks for crops and regions not covered.
Regions should have an associated polygon [or perhaps could be a set of county names]

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