Skip to content

Optional BA-level project aggregation via --aggregate_projects#1360

Merged
anamileva merged 4 commits into
blue-marble:developfrom
allisonmcampbell:feature/agg-project-option
May 28, 2026
Merged

Optional BA-level project aggregation via --aggregate_projects#1360
anamileva merged 4 commits into
blue-marble:developfrom
allisonmcampbell:feature/agg-project-option

Conversation

@allisonmcampbell
Copy link
Copy Markdown
Contributor

@allisonmcampbell allisonmcampbell commented Apr 24, 2026

Summary

  • Adds --aggregate_projects flag to 7 data toolkit scripts, allowing users to aggregate all generators to the BA-technology level instead of the default disaggregated approach
  • Default behavior is unchanged: thermal/storage use plant-level names, var-gen/hydro are BA-aggregated
  • When enabled, all projects use COALESCE(agg_project, gridpath_technology) || '_' || balancing_authority_code_eia with GROUP BY, producing names like Gas_CC_CISO instead of individual plant IDs
  • Includes COALESCE fix to AGG_PROJECT_NAME_STR so technologies without agg_project in the key file fall back to gridpath_technology

Motivation

The default disaggregated approach produces individual plant-level projects for most of the fleet. For a full WECC system, this creates a very large optimization problem that takes too long to solve on a local machine. Aggregating to the BA-technology level makes a full-system test case tractable while preserving the technology mix and capacity at each BA.

Scripts modified

  • project_data_filters_common.py — COALESCE in AGG_PROJECT_NAME_STR
  • eia860_to_project_portfolio_input_csvs.py
  • eia860_to_project_specified_capacity_input_csvs.py
  • eia860_to_project_load_zone_input_csvs.py
  • eia860_to_project_fixed_cost_input_csvs.py
  • eia860_to_project_availability_input_csvs.py
  • eia860_to_project_opchar_input_csvs.py
  • manual_adjustments.py

Test plan

  • All 3 data toolkit tests pass locally (default behavior, no aggregation)
  • No test output CSV changes
  • CI should pass on all OS/Python matrix combinations

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@anamileva anamileva self-requested a review May 12, 2026 21:26
@anamileva anamileva merged commit 89988c5 into blue-marble:develop May 28, 2026
12 checks passed
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