Skip to content
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

support runoff normalization for partial years with annual normalization data #434

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

fneum
Copy link
Member

@fneum fneum commented Mar 27, 2025

Changes proposed in this Pull Request

It makes cutout.runoff(normalize_using_yearly=...) more lenient by supporting proportional scaling of partially represented years in the cutout, assuming even distribution of runoff throughout the year. In this case, a warning is printed due to the strong assumption.

Relevant for PyPSA/pypsa-eur#1613 (e.g. July-June meteorological years, in case the original cutout does not span Jan-Dec for each year included)

This also means we can include hydro in the CI test of PyPSA-Eur, which uses only a week of weather data.

Checklist

  • Code changes are sufficiently documented; i.e. new functions contain docstrings and further explanations may be given in doc.
  • [] Unit tests for new features were added (if applicable).
  • [] Newly introduced dependencies are added to environment.yaml, environment_docs.yaml and setup.py (if applicable).
  • A note for the release notes doc/release_notes.rst of the upcoming release is included.
  • I consent to the release of this PR's code under the MIT license.

@fneum fneum requested review from lkstrp and Copilot March 27, 2025 07:13
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR enhances the runoff normalization function to support partial years by applying proportional scaling based on available data, while issuing a warning about the strong assumption of even runoff distribution.

  • Improved handling of date ranges for runoff and normalization data
  • Added partial year normalization logic with proportional scaling and a warning message
  • Updated reindexing to use a dynamic coordinate based on the altered dimension
Files not reviewed (1)
  • RELEASE_NOTES.rst: Language not supported
Comments suppressed due to low confidence (3)

atlite/convert.py:1026

  • [nitpick] Ensure that reindexing using the dynamic dimension (dim) aligns with the intended coordinate, especially if the original 'countries' coordinate was explicitly required in other parts of the code.
).reindex({dim: result.coords[dim]})

atlite/convert.py:1010

  • [nitpick] Verify that the proportional scaling logic correctly handles all edge cases, such as when the overlap period almost covers a full year, to ensure the computed fraction accurately reflects the intended partial data scaling.
fraction = (end - start).total_seconds() / ((year_end - year_start).total_seconds())

atlite/convert.py:965

  • [nitpick] Consider renaming 'result_time' to a more descriptive name like 'time_index' to more clearly indicate that this variable represents a DatetimeIndex.
result_time = pd.DatetimeIndex(result.coords["time"].values)

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.

1 participant