ecosim-multisite-project
Sort EcoSIM run folders for a set of sites into one project directory with input/<SITE_ID>/ and run_dir/<SITE_ID>/ subdirectories and a project manifest. Use when asked to create EcoSIM run folders, r
SKILL.md.agents/skills/ecosim-multisite-project/SKILL.md
GitHubEcoSIM Multi-Site Project
Use When
- The request names more than one site, or a project of sites.
- Sites already prepared one by one should be gathered into a single project.
- A project needs refreshing after a site's inputs or traits changed.
Layout
result/projects/<PROJECT>/
input/<SITE_ID>/ the site's inputs (copy of result/<SITE_ID>/input/)
run_dir/<SITE_ID>/ <SITE_ID>.namelist, input paths ../../input/<SITE_ID>/<file>
project.json manifest: per-site inputs, chronology, tracker, smoke, and trait status
PROJECT.md the manifest as a table
Each case stays self-contained: its own grid, climate, plant management, the
site-corrected PFT parameter copy, GHG, and microbial files. Backups
(*.before_*, *.orig_*, *.prev_*) are not copied.
Workflow
Choose a project name (from the user, or a short descriptive one) and the site list.
Prepare every site with the single-site workflow (
ameriflux-namelist-generatorreferences/runfolder_workflow.md), each inresult/<SITE_ID>/with its own progress tracker: data preparation, run folder, 2-year smoke run, and plant-trait correction. Sites are independent; report per-site problems instead of stopping the whole project.Assemble the project:
python .agents/skills/ecosim-multisite-project/scripts/assemble_project.py \ --project <PROJECT> --sites US-UMB US-xGR [...]The script requires
result/<SITE_ID>/input/,run_dir/<SITE_ID>.namelist, and a passed smoke run (--allow-no-smoketo override), copies the inputs, rewrites namelist paths to../../input/<SITE_ID>/, checks that every path resolves fromrun_dir/<SITE_ID>/, and writesproject.jsonandPROJECT.md. It exits nonzero if any site was skipped or has path problems.Report from
PROJECT.md: one row per site with PFTs, chronology, climate years, stage status, smoke run, and trait findings, plus the sites left out and why.To add sites or pick up changes, fix them in
result/<SITE_ID>/and rerun the script with those sites; other sites in the manifest are kept. Model output already in a project run directory is kept unless--replace-runs.
Full Runs
Only on request, run each case in its project run directory:
nohup python .agents/skills/ameriflux-namelist-generator/scripts/run_site_full.py \
--site-id <SITE_ID> --run-dir result/projects/<PROJECT>/run_dir/<SITE_ID> > /dev/null 2>&1 &
The same rules apply as for single sites: one continued run on failure, then
report the error. Sites run independently; a failing site does not stop the
others. Each run writes full_run_summary.json in its run directory.
Rules
- Do not edit inputs inside the project; change them in
result/<SITE_ID>/and reassemble, so the single-site tracker, logs, and evidence stay the source of truth. - Keep one PFT parameter copy per site; trait corrections are site-specific.
- A site missing data or failing its smoke run is reported, not silently dropped.