-
Notifications
You must be signed in to change notification settings - Fork 1
2026 State RPS / CES /Hydrofrac Update #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Yunzhi-Chen
wants to merge
18
commits into
main
Choose a base branch
from
yc/26statepolicy
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
d5b8f13
Initial code
Yunzhi-Chen c9540ad
update
Yunzhi-Chen fd9fd05
update voluntary data
Yunzhi-Chen 72144ce
Round to 6 decimals
Yunzhi-Chen 5c45310
Update data_processing.py
Yunzhi-Chen d0f2ac2
update
Yunzhi-Chen d3e9622
Update data_processing.py
Yunzhi-Chen cb08088
Update data_processing.py
Yunzhi-Chen dd37fa3
add docstrings to the functions in generate_comparison_plots.py
Yunzhi-Chen 7261b29
Remove intermediate outputs and the outputs
Yunzhi-Chen 9361310
Update state_policies/data_processing.py
Yunzhi-Chen 00ae900
Merge branch 'yc/26statepolicy' of https://github.com/ReEDS-Model/ReE…
Yunzhi-Chen 5eb92d0
Update state_policies/README.md
Yunzhi-Chen 186ef78
Update state_policies/README.md
Yunzhi-Chen dad911a
Update state_policies/README.md
Yunzhi-Chen 0d8692d
Update README.md
Yunzhi-Chen 68b4c59
Merge branch 'yc/26statepolicy' of https://github.com/ReEDS-Model/ReE…
Yunzhi-Chen c5aaaba
Change interpolation base year back to 2023 so the policy change will…
Yunzhi-Chen File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,107 @@ | ||
| # Overview | ||
|
|
||
| This folder produces three CSV files that ReEDS consumes as state-level | ||
| renewable / clean energy policy inputs: | ||
|
|
||
| | Output | Description | | ||
| | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | `outputs/rps_fraction.csv` | Required RPS fraction of retail sales by state and year, plus voluntary RPS and Nova Scotia (NS) rows. Columns:`t, st, rps_all, rps_solar, rps_wind`. | | ||
| | `outputs/ces_fraction.csv` | Required CES fraction of retail sales by state and year. Columns:`*t, st, Value`. | | ||
| | `outputs/hydrofrac_policy.csv` | State-level fraction of existing hydro / non-RE generation that already counts toward each state's RPS_All and CES targets. Columns:`*st, RPS_All, CES`. | | ||
|
|
||
| Both `rps_fraction.csv` and `ces_fraction.csv` are produced as piecewise-linear | ||
| ramps between policy "change points", so the year-over-year trajectory is smooth | ||
| even when the underlying LBNL data jumps (for example when a state has a 2050 | ||
| target with otherwise flat interim values). The un-interpolated values are | ||
| saved in `outputs/intermediate outputs/` for diagnostic purposes and are used | ||
| by the comparison plots described below. | ||
|
|
||
| # Running the script | ||
|
|
||
| From this folder: | ||
|
|
||
| ``` | ||
| python data_processing.py | ||
| ``` | ||
|
|
||
| The script reads everything from `inputs/` and writes the three CSVs above to | ||
| `outputs/`, plus diagnostic intermediates to `outputs/intermediate outputs/`. | ||
|
|
||
| # Input files | ||
|
|
||
| All located in `inputs/`: | ||
|
|
||
| | Input | Description | | ||
| | --- | --- | | ||
| | `RPS & CES Targets and Demand_June 2026.xlsx` | Annual LBNL state RPS / CES dataset, provided by Galen Barbose. Source: https://emp.lbl.gov/projects/renewables-portfolio. The script reads four sheets from this file: `Statewide Sales`, `RPS & CES Demand (GWh)`, and `Non-RE Accounting`. Note: the `Non-RE Accounting` sheet is not in the public workbook. Galen sends it separately, and we paste it back into this file as the `Non-RE Accounting` tab so the workbook is self-contained. | | ||
| | `nrel-green-power-data-v2024.xlsx` | NLR Green Power Data (formerly NREL), used for the voluntary RPS row. Source: https://www.nlr.gov/analysis/voluntary-power-procurement. | | ||
| | `RPS_nonUS.csv` | Non-US RPS data (currently only Nova Scotia, `NS`). | | ||
| | `hierarchy.csv` | Region hierarchy from a recent ReEDS Reference run, used to map BAs to states for the hydrofrac calculation. | | ||
| | `gen_ann.csv` | Annual generation by tech and BA from a recent ReEDS Reference run, used to compute hydro / non-RE shares for the hydrofrac calculation. | | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same here. |
||
|
|
||
| # Annual update procedure | ||
|
|
||
| The LBNL state RPS / CES dataset is refreshed roughly once per year. To pick up | ||
| a new release: | ||
|
|
||
| 1. Download the new LBNL RPS dataset from | ||
| https://emp.lbl.gov/projects/renewables-portfolio and place it in | ||
| `inputs/` (e.g. `RPS & CES Targets and Demand_June 2026.xlsx`). To get the `Non-RE Accounting` | ||
| sheet, request it from Galen Barbose and paste it back into the workbook | ||
| as a sheet named `Non-RE Accounting`. | ||
|
Yunzhi-Chen marked this conversation as resolved.
|
||
| 2. Open `data_processing.py` and update the parameters at the top of the file: | ||
| - `filename` — point to the new file. | ||
| - `Salessheetname`, `Salessheet_usecols`, `Salessheet_skiprows`, `Salessheet_nrows` — match the new sheet's name and header layout. | ||
| - `RPSsheetname`, `RPSsheet_usecols`, `RPSsheet_skiprows`, `RPSsheet_nrows` — match the new sheet's name and header layout. | ||
| - `Hydrosheet_*` — re-check the row counts on the `Non-RE Accounting` sheet (e.g. whether a totals row was added at the bottom of the RPS block). | ||
| - Confirm `hydro_year` is still appropriate for the latest ReEDS Reference run. | ||
| 3. Check https://www.nlr.gov/analysis/voluntary-power-procurement for a newer | ||
| NLR Green Power Data release (e.g. `nrel-green-power-data-v2025.xlsx`). If a | ||
| newer file exists, download it into `inputs/`, update `filename_voluntary` in | ||
| `data_processing.py`, and bump `Voluntarysheet_nrows` to match the number of | ||
| historical years in the new file. Also update the hardcoded `<= 2024` year | ||
| cap in the voluntary projection block (search for `rps_series[rps_series['t'] <= 2024]`) to the new last historical year. The NLR file is updated on a | ||
| different schedule from the LBNL workbook, so this step is independent and | ||
| may be skipped if no newer NLR release is available. | ||
| 4. (Optional, but recommended for PR review) Stage the previous run's outputs | ||
| for comparison. From `state_policies/`: | ||
| ``` | ||
| copy outputs\rps_fraction.csv "old and new data comparison\old ReEDS input\rps_fraction0.csv" | ||
| copy outputs\ces_fraction.csv "old and new data comparison\old ReEDS input\ces_fraction0.csv" | ||
| copy outputs\hydrofrac_policy.csv "old and new data comparison\old ReEDS input\hydrofrac_policy0.csv" | ||
| ``` | ||
| 5. Run the processing script: | ||
| ``` | ||
| python data_processing.py | ||
| ``` | ||
| 6. Generate before/after comparison plots: | ||
| ``` | ||
| cd "old and new data comparison" | ||
| python generate_comparison_plots.py | ||
| ``` | ||
|
|
||
| This writes six PNGs to `old and new data comparison/plots/`: | ||
| `rps_all_comparison.png`, `rps_solar_comparison.png`, | ||
| `rps_wind_comparison.png`, `ces_fraction_comparison.png`, | ||
| `hydrofrac_RPS_All_comparison.png`, and | ||
| `hydrofrac_CES_comparison.png`. Attach these to the PR so reviewers can see | ||
| what changed. | ||
|
|
||
| # Output files | ||
|
|
||
| The `outputs/` folder is **generated by `data_processing.py` and is not tracked | ||
| in git** (see `.gitignore`). The canonical copies of the three files below live | ||
| in the ReEDS repository after the annual update PR is merged; the diagnostic | ||
| intermediates are only needed locally to regenerate the comparison plots. | ||
|
|
||
| Files that get copied into ReEDS (`inputs/state_policies/` in the ReEDS repo): | ||
|
|
||
| * `rps_fraction.csv` | ||
| * `ces_fraction.csv` | ||
| * `hydrofrac_policy.csv` | ||
|
|
||
| Diagnostic / intermediate files (not used directly by ReEDS) live in | ||
| `outputs/intermediate outputs/`: | ||
|
|
||
| * `rps_fraction_intermediate.csv` — RPS fractions before piecewise interpolation. | ||
| * `ces_fraction_intermediate.csv` — CES fractions before piecewise interpolation. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you give a version number or date rather than "recent" to make things clearer down the road?