Skip to content

Update 2025 Interconnection Queue - #15

Open
Yunzhi-Chen wants to merge 69 commits into
mainfrom
yc/interconnectionqueue25
Open

Update 2025 Interconnection Queue#15
Yunzhi-Chen wants to merge 69 commits into
mainfrom
yc/interconnectionqueue25

Conversation

@Yunzhi-Chen

@Yunzhi-Chen Yunzhi-Chen commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

Update interconnection queues to LBNL's 2025 data vintage (LBNL_Ix_Queue_Data_File_thru2025.xlsx), producing interconnection_queues_2025.csv over a 2027–2031 window. Along the way this fixes two bugs in the processing script — one that silently dropped queues, one that double-counted capacity — and repoints the county mapping, which was broken against current ReEDS main.

The bug fixes apply to the new 2025 output only. interconnection_queues_2024.csv is deliberately left untouched: ReEDS already runs on it. Prior-vintage outputs are unchanged (interconnection_queues_2024.csv, _2023.csv, queue_versions_2024.html, queue_versions_2023.html).

Technical details

Implementation notes

  • Params: version=2026, t_1=2028, t_2=2031 — columns 2027–2031, continuing the +1/vintage pattern (2024 file was 2026–2030).
  • LBNL renamed columns this vintage (IA_status_cleanIA_phase_clean, type1/mw1type_1/mw_1). Added a third branch to the existing version check and rename them back to the old names, so the rest of the script is untouched.
  • LBNL also folded Pumped Storage and Biofuel into Other Storage/Other, which the script filters out — so pumped-hydro and biomass no longer appear. See Additional details.
  • mw_* now read as object because of the header offset — added a pd.to_numeric cast.
  • ReEDS/inputs/county2zone.csv no longer exists on ReEDS main; the mapping moved to ReEDS/inputs/zones/county_state.csv (same FIPS,county_name,state, 3109 rows). The script did not run without this.
  • reeds_path now reads a REEDS_PATH env var, defaulting to the previous hardcoded path.
  • The version-1 figure is no longer regenerated if it already exists, so a run can't overwrite a prior vintage's figure. Fixed chart 1's x-axis sort to use year_range_version_1.

The two bugs

1 — counties matched on name instead of FIPS (61be803). Queues were matched to ReEDS counties on lowercased county name + state, with .str.lower() as the only normalisation. LBNL does not always use the ReEDS spelling — Louisiana is written Acadia Parish where ReEDS has acadia — so unmatched rows were dropped at the merge and their capacity vanished. Louisiana lost essentially its entire queue. Matching on LBNL's FIPS code fixes that, but that code is sometimes stale (Oglala Lakota SD reports 46113, current 46102) or several codes concatenated for multi-county projects (5301353023 = 53013 + 53023) — pure FIPS matching lost 90 projects / 20 GW that name matching had caught. So the fix is FIPS first, county name as fallback; the two methods' blind spots are complementary. Unmatched active capacity drops from 4.4% to 1.9%, the remainder being out of ReEDS scope (e.g. MX).

2 — t_2 double-counted the IA Executed queue (aa8c280). The final-year column was built as max(cap_t1, cap_t2) + cap_t1 rather than cap_t1 + cap_t2. The two live on separate rows and max() was being used to broadcast one onto the other, which only works when cap_t2 > cap_t1; otherwise the IA-Executed capacity was counted twice and cap_t2 disappeared (cap_t1=300, cap_t2=100 gave 600 instead of 400). The t_1 column was never affected.

How the fixes were verified

Both bugs were isolated by running the same 2024 input file through four variants of the script (each bug on/off), so every difference is attributable to the code, not to new data. With both bugs re-introduced the script reproduces the committed interconnection_queues_2024.csv cell for cell (max delta 0) — that is what makes the other variants trustworthy. And after both fixes, capacity at t_2 equals the matched raw input exactly (ratio 1.0000, against 1.0498 before); the excess was precisely the double-counted capacity.

Figures

2024 vintage, before vs. after the two fixes — same input file, only the script changes. Effects applied in order, so A + B = net:

bugfix_comparison

2025 interconnection queue (outputs/figures/queue_versions_2025.html):

image

What ReEDS uses today vs. what it will use (outputs/figures/compare_queue_versions.html):

image

Read the 2026 and 2031 bars as constraint presence, not a limit of zero: eq_interconnection_queues is guarded by $(sum{(tgg,rr), cap_limit(tgg,rr,t)}), so a year absent from the csv is unconstrained rather than blocked.

Additional changes

  • README updated: new filename, REEDS_PATH note, tech-group change.
  • .gitignore: atb/ (unrelated, carried on this branch) and the local-only folder used to produce the before/after comparison.

Relevant sources or documentation

Additional details

What this changes for ReEDS. In every overlapping year the limit tightens by 35–55% — a combination of the window shifting a year, the data update, and the two fixes. This is the main consequence of the PR.

Needs a paired ReEDS change: interconnection_start in inputs/scalars.csv should go 2025 → 2026 to match the new window. Without it, 2025 and 2026 builds count against the 2027 limit — which matters more than usual given how much that limit tightens.

Behavior change — biomass and pumped-hydro are gone from the output. LBNL folded Pumped Storage and Biofuel into Other Storage/Other, which the script filters out. ReEDS treats a missing (tg,r) as a 0 limit, so this blocks new biomass and PSH builds through 2031. Backfilling the old labels by joining the 2024 file on q_id+entity would recover ~3.6 GW PSH and ~6.0 GW biofuel; skipped to keep the change minimal. Say the word if you'd rather have the backfill.

Output verification: 19,655 rows (1,925 csp + 10 tech groups × 1,727 counties), 2,132 counties; no NaNs, no negatives, no duplicate (r,tg), values monotonic across years; interconnection_queues_2025.csv matches interconnection_queues.csv; capacity at t_2 reconciles exactly with the matched raw input.

Documentation: README updated. No ReEDS documentation changes needed.

LLM usage: Claude Code — adapting the script to the new column schema, locating the moved county mapping file, isolating and fixing the two bugs, and building the four-variant comparison used to verify them.

kennedy-mindermann and others added 30 commits April 30, 2026 17:13
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ession/README.md

Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
Update AEO preprocessing to pull from AEO2026
This reverts commit c43c67f.
Add natural gas price regression pipeline
Remove highprice and lowprice since AEO 2026 does not have the two scenarios
Update natural gas regression parameters with AEO 2026 data
Fix formatting issues in README.md
Yunzhi-Chen and others added 24 commits June 24, 2026 13:53
Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
…ression_params.ipynb

Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
Add temperature - gas price regression workflow
2026 State RPS / CES /Hydrofrac Update
@Yunzhi-Chen Yunzhi-Chen self-assigned this Aug 19, 2026
@Yunzhi-Chen
Yunzhi-Chen requested a review from atpham88 August 20, 2026 19:55
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.

4 participants