Adding statewide monitoring workflow under data.remote inst/ccmmf - #3913
Adding statewide monitoring workflow under data.remote inst/ccmmf#3913sarahkanee wants to merge 37 commits into
Conversation
Includes hls, phenology, events, tillage, traits. Single tree for dependent scripts (events + pool + tillage). Should break this up at some point
Includes orchestrator, crop/subclass and ADOY gap-fill, product build, QC reporting, and SGE submission scripts. Excludes large runtime artifacts (CDL fractions, trained parquet tables, logs).
Bring lab management code (extract packages, events/phenology/hls/traits, stakeholder docs, Session 0 env template) onto the PR branch. Ship county crop matrices as real files and resolve shared HLS libs via sibling paths so clones work without /projectnb defaults.
Session 1 adds an operator runbook for cadwr-landuse (01-03) while pointing at Alexey's README/docs as canonical; pipeline and Session 0 use user wording and ASCII.
Session 1 adds a CLASS/SUBCLASS lookup check (ignore DWR ** sentinels), spells out management/*-with-YEAR publish dirs, and checks out the cadwr-landuse auto-discover branch until main has it.
These one-off modislc/skanee/neochatt path scripts are lab ops, not part of the portable monitoring stack shown in PR PecanProject#3913.
Sessions 0-4 and pipeline are the curriculum; package READMEs are detail docs linked from sessions, not a parallel TOC.
Lead README, Session 0/1, and pipeline with what the trainee does (add 2024, re-run 2023), portable paths first, and a clearer checklist.
| **You are here to process a new LandIQ year.** | ||
|
|
||
| This training walkthrough adds **2024** and re-runs **2023** (the year pair). | ||
| You work on **your own Linux cloud / HPC** (not BU SCC). |
There was a problem hiding this comment.
This statement is only meaningful to people who ARE working on the BU SCC. No one else will know what that is or consider that the "default"
| @@ -0,0 +1,56 @@ | |||
| # CCMMF monitoring pipeline - documentation | |||
|
|
|||
| **You are here to process a new LandIQ year.** | |||
There was a problem hiding this comment.
What's LandIQ? what's a LandIQ year? Why would I want to process one and what does that mean?
| @@ -0,0 +1,34 @@ | |||
| # CCMMF statewide monitoring (`inst/ccmmf`) | |||
|
|
|||
| California LandIQ → phenology → management-event pipeline scripts for PEcAn. | |||
There was a problem hiding this comment.
If I was looking in this folder for the first time, how would I know what this is? You need to start more broadly and explain yourself. Also, I don't think it's fair to assume that the ONLY thing you'll end up putting in the data.remote/insts/ccmmf folder will be phenology
|
|
||
| **Documentation (start here):** [documentation/README.md](documentation/README.md) | ||
| **Environment setup:** [documentation/sessions/00-environment.md](documentation/sessions/00-environment.md) | ||
| **PR:** https://github.com/PecanProject/pecan/pull/3913 |
There was a problem hiding this comment.
not sure why the documentation would reference a PR. Drop
|
|
||
| | Path | Role | | ||
| |------|------| | ||
| | `documentation/` | Stakeholder sessions + `pipeline.md` + `ccmmf_env.example.sh` | |
There was a problem hiding this comment.
Expand every single "role". Even knowing how this workflow works, I find the descriptions overly terse and cryptic. Any time you read/write documentation or tutorials, you have to put yourself in the shoes of someone who has never heard of what you're doing and is looking at this project for the first time
| export CCMMF_ROOT=/projectnb/dietzelab/ccmmf | ||
|
|
||
| export LANDIQ_GAPFILL_ROOT=$CCMMF_ROOT/management/landiq-gapfill | ||
| export CCMMF_LANDIQ_V4=$CCMMF_ROOT/LandIQ-harmonized-v4.1 |
There was a problem hiding this comment.
I don't think it's safe to define variable names with version numbers in them, it will require a lot of code fixes (and potential bugs) when LandIQ jumps to V5.
| A routine run updates only the years you pass and carries the rest over from the | ||
| existing product, so adding a year is cheap. | ||
|
|
||
| On a routine run, emission tables should **not** rebuild. If they do, confirm |
| compute node. Run the whole thing as one batch job: | ||
|
|
||
| ```bash | ||
| qsub -l buyin -l h_rt=8:00:00 -v 'GAPFILL_ARGS=2023,2024' $LANDIQ_GAPFILL_ROOT/sge/run_gapfill.sge |
There was a problem hiding this comment.
this won't run for other people. You need to do more to explain concepts so users can understand what something is supposed to do. otherwise they won't know how to configure it for their own use case
| @@ -0,0 +1,32 @@ | |||
| #!/bin/bash -l | |||
| # | |||
| # SGE job: download CDL GeoTIFF(s) from NASS CropScape (avoids login-node timeout). | |||
There was a problem hiding this comment.
- unclear what SGE is
- these scripts look like they will only run on the BU SCC, not CARB's server or any else's
| }) | ||
|
|
||
| .fa <- sub("^--file=", "", grep("^--file=", commandArgs(trailingOnly = FALSE), value = TRUE)[1L]) | ||
| source(file.path(dirname(normalizePath(.fa, mustWork = FALSE)), "_lib", "pkg_root.R")) |
There was a problem hiding this comment.
as your code matures towards production quality, you should be using "source" less and relying on the package more. This will mean moving more things into the /R folder and also using system.file more than file.path
Sessions and package README now point at pipeline.md. Package README explains CCMMF broadly without a PR link and clarifies first-time setup from inst/ccmmf.
…sh docs. Fold MSLSP into phenology/extract and NDTI into tillage/extract; move tillage metrics into events; remove SGE/explore leftovers; rewrite pipeline and session docs around the year-pair training path.
Removed first-time setup instructions from README.md and streamlined the content.
Added instructions for running the pipeline in the README.
Keep "package" only for real R/Python/PEcAn packages.
Removed duplicate instruction for running the pipeline.
Updated descriptions for various paths and removed first-time setup instructions.
Removed redundant line about following pipeline documentation.
Updated section heading from 'tree' to 'branch' for clarity.
Removed reference to LandIQ crop code lookup table from README.
Removed reference to cdl_fractions_metadata.csv in the documentation.
Updated the algorithm section to clarify the process of joining NDTI scenes and determining tillage dates.
Removed reference to older flat imagery trees and associated README.
Updated contact reference for session lead in documentation.
Includes hls, phenology, events, tillage, traits.
Single tree for dependent scripts (events + pool + tillage). Should break this up at some point
Description
Motivation and Context
Review Time Estimate
Types of changes
Checklist: