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

Create _streamflow_flow_indices.py #1832

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

faimahsho
Copy link

streamflow_flow_indice is a submodule in the xclim indices module to calculate streamflow signatures, representing individual watershed characteristics of large river/lake basins.

Pull Request Checklist:

  • This PR addresses an already opened issue (for bug fixes / features)
    • This PR fixes #xyz
  • Tests for the changes have been added (for bug fixes / features)
    • (If applicable) Documentation has been added / updated (for bug fixes / features)
  • CHANGELOG.rst has been updated (with summary of main changes)
    • Link to issue (:issue:number) and pull request (:pull:number) has been added

What kind of change does this PR introduce?

  • ...This PR introduces three hydrological signatures in xclim indices module. The functions included are to calculate the high and low flow variables of a data series of watersheds and generate a characteristic value of the catchment from the calculated hydrological signatures.

Does this PR introduce a breaking change?

This can develop unique watershed attributes.

Other information:

streamflow_flow_indice is a submodule in the xclim indices module to calculate streamflow signatures, representing individual watershed characteristics of large river/lake basins.
@github-actions github-actions bot added docs Improvements to documenation indicators Climate indices and indicators labels Jul 8, 2024
Copy link

github-actions bot commented Jul 8, 2024

Welcome, new contributor!

It appears that this is your first Pull Request. To give credit where it's due, we ask that you add your information to the AUTHORS.rst and .zenodo.json:

  • The relevant author information has been added to AUTHORS.rst and .zenodo.json

Please make sure you've read our contributing guide. We look forward to reviewing your Pull Request shortly ✨

@tlogan2000 tlogan2000 requested a review from huard July 9, 2024 14:23
Copy link

github-actions bot commented Jul 9, 2024

Warning
This Pull Request is coming from a fork and must be manually tagged approved in order to perform additional testing.

Copy link
Collaborator

@huard huard left a comment

Choose a reason for hiding this comment

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

If the flow_index is not in the literature, I suggest to remove it from this PR and keep it in your project scripts.

Once this PR is merged in, I think it would be interesting to look at additional indices that requires other variables like precipitation, as I think it would provide better physical understanding of processes.

The next step will be to write a test for each index to make sure it behaves as expected. You'll see plenty of examples in the test directory.

xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
.DS_Store Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
docs/references.bib Outdated Show resolved Hide resolved
@faimahsho faimahsho force-pushed the Watershed-indices branch 2 times, most recently from 948fa30 to 0507d4c Compare July 16, 2024 21:01
Copy link
Collaborator

@huard huard left a comment

Choose a reason for hiding this comment

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

Looks good. Please review the changes I just pushed, and add tests for the "indicators" I created.

Note that I added an indexer argument, which lets you pick a season or specific months. Let me know if you believe this is useful or not.

I think the next step would be to have Louise review the finalized PR.

},
"HIGH_FLOW_FREQUENCY": {
"long_name": "Fréquence des débits élevés",
"description": "Nombre de jours où le débit est {thresholf_factor} fois supérieur à la médiane.",
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
"description": "Nombre de jours où le débit est {thresholf_factor} fois supérieur à la médiane.",
"description": "Nombre de jours où le débit est {threshold_factor} fois supérieur à la médiane.",

xclim/indices/_hydrology.py Outdated Show resolved Hide resolved
xclim/indices/_hydrology.py Outdated Show resolved Hide resolved
xclim/indices/_hydrology.py Outdated Show resolved Hide resolved
xclim/indices/_streamflow_flow_indices.py Outdated Show resolved Hide resolved
@faimahsho faimahsho force-pushed the Watershed-indices branch 3 times, most recently from d8ae74d to 7beffe9 Compare July 18, 2024 15:36
…ean over whole period. This part of the analysis can be done on the user-side. Added support for **indexer, allowing more freedom when selecting the period
xclim/indices/_hydrology.py Outdated Show resolved Hide resolved
xclim/indices/_hydrology.py Outdated Show resolved Hide resolved
faimahsho and others added 3 commits July 26, 2024 09:28
Co-authored-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Comment on lines 29 to +30
@declare_units(q="[discharge]")
def base_flow_index(q: xarray.DataArray, freq: str = "YS") -> xarray.DataArray:
def base_flow_index(q: xr.DataArray, freq: str = "YS") -> xr.DataArray:
Copy link
Contributor

@coxipi coxipi Aug 21, 2024

Choose a reason for hiding this comment

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

What I will bring up was already there before the PR, but it would be good to address this while we're at it.

  1. discharge is both a variable type defined in units.py (like "precipitation" & "temperature"), but also a variable name in variables.yml (like pr & tas). I think it should be one or the other
  2. functions in hydrology should use something like discharge or streamflow instead of q, i.e. we should use a variable name defined in variables.yml. At least I think we usually try to follow this rule?
  3. Speaking of which, discharge and streamflow in variables.yml seem to define the same quantity? Maybe we can remove discharge from variables.yml and keep it only as a variable type, then use streamflow as a variable name?

Maybe we want a shorter variable name than streamflow? I would advise against q because of quantiles which are often used with xclim, but since we are splitting sdba maybe this will be less an issue in the future.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I found this : #1431
So it seems the issue is that there is no convention on the name. q is often used, but I agree that its ambiguous.

I'm not sure (1) is a showstopper. But as discharge is not actually used in any indicator, we could indeed remove it from the variables.yml.

@RondeauG how breaking would it be for downstream (xhydro) if we changed all the q inputs to streamflow ? Does that make sense to you ?

Copy link
Contributor

Choose a reason for hiding this comment

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

3. Speaking of which, `discharge` and `streamflow` in `variables.yml` seem to define the same quantity? Maybe we can remove `discharge` from `variables.yml` and keep it only as a variable type, then use `streamflow` as a variable name?

This was because discharge was the legacy name used in xclim, but partners in xhydro much preferred streamflow (as discharge had a strong connotation with dams and regulated flow).

However, I agree that streamflow is kinda long. Q is the standard in hydrology for streamflow in m3 s-1, and q for m3 s-1 km-2, but if it's too confusing with quantiles, we could find something else.

As to how breaking this would be for xhydro, this is completely fine for now. None of these indicators have been hard-coded anywhere in the package. The only explicit calls to xclim indicators are for stats and the frequency analysis functions, both of which use da.

Copy link
Contributor

@coxipi coxipi Aug 22, 2024

Choose a reason for hiding this comment

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

If we sort out the situation with the variables used in the streamflow indices, then the cfcheck in Streamflow class can be removed. See the discussion here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Improvements to documenation indicators Climate indices and indicators
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants