Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary
Last synced: 8 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: Laurin-98
  • License: gpl-3.0
  • Language: Jupyter Notebook
  • Default Branch: main
  • Size: 410 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

FROSTBYTE: Forecasting River Outlooks from Snow Timeseries: Building Yearly Targeted Ensembles

License: GPL v3 PRs Welcome Twitter

FROSTBYTE is a reproducible data-driven workflow for probabilistic seasonal streamflow forecasting, based on streamflow and snow water equivalent station observations.

FROSTBYTE logo

Description

This repository contains a reproducible data-driven workflow, organized as a collection of Jupyter Notebooks. The workflow leverages snow water equivalent (SWE) measurements as predictors and streamflow observations as predictands, drawn from reliable datasets like CanSWE, NRCS, SNOTEL, HYDAT, and USGS. Gap filling for SWE datasets is done using quantile mapping from nearby stations and Principal Component Analysis is used to identify independent predictor components. These components are employed in a regression model to generate ensemble hindcasts of seasonal streamflow volumes. This workflow was applied by Arnal et al. (2024) to 75 river basins with a nival (i.e., snowmelt-driven) regime and with minimal regulation across Canada and the USA, for generating hindcasts from 1979 to 2021. This study presented a user-oriented hindcast evaluation, offering valuable insights for snow surveyors, forecasters, workflow developers, and decision-makers.

Repository Structure

  • 📂 notebooks/: Collection of Jupyter Notebooks detailing each step of the forecasting workflow.
  • 📂 scripts/: Functions used in the data processing and analyses carried out in the Notebooks.
  • 📂 settings/: Settings for running the forecasting workflow.
  • 📂 test_case_data/: Sample data for running the forecasting workflow for two single river basins: the Bow River at Banff in Alberta, Canada, and the Crystal River Abv Avalanche Crk, Near Redstone in Colorado, USA.
  • 📄 requirements.txt: Lists the Python packages required for reproducing the workflow.

Getting Started

The steps below will help you to have a fully set-up environment to explore and interact with the Jupyter notebooks. If you're new to Jupyter notebooks, you might want to check out some resources on how to use them effectively.

  1. Clone the Repository

    Begin by cloning the repository to your local machine. Use the command below in your terminal or command prompt: bash git clone https://github.com/CH-Earth/FROSTBYTE.git This command will create a copy of the repository in your current directory.

  2. Set Up Virtual Environment (Optional)

    It's a good practice to use a virtual environment for Python projects. This isolates your project's dependencies from other projects. To create and activate a virtual environment, run: bash python -m venv frostbyte source frostbyte/bin/activate # For Windows, use `env\Scripts\activate` This step creates a new virtual environment named frostbyte and activates it.

  3. Install Dependencies

    With your virtual environment activated, install the required Python packages using:

bash pip install -r requirements.txt

This command reads the requirements.txt file and installs all the necessary packages to run the notebooks.
  1. Navigate to the Notebooks Directory
    bash cd notebooks/

  2. Start Jupyter Notebook

    Finally, start the Jupyter Notebook server: bash jupyter notebook This command will open a new tab in your default web browser with the Jupyter Notebook interface, where you can open and run the notebooks.

Contribution

We welcome and appreciate contributions from the community! If you're interested in improving these notebooks or adding new features, here's how you can contribute:

  1. Fork and Clone: Fork this repository to your account and clone it locally to make your changes.

  2. Create a Feature Branch: For each new feature or significant change, create a separate branch in your repository. This helps in keeping track of different contributions and ensures that the main branch remains stable.

  3. Discuss Major Changes: If you're considering a major change or addition, open an issue first. This way, we can have a discussion about the proposed changes, their impact, and how they fit into the project's roadmap.

  4. Commit Your Changes: Make your changes in your feature branch and commit them with clear, descriptive commit messages. Your commit messages should succinctly explain the changes and their rationale.

  5. Test Your Changes: Ensure that your changes do not break existing functionality. Adding tests for new features is highly encouraged.

  6. Create a Pull Request: Once you're ready, submit a pull request to merge your changes into the main branch. Provide a clear description in the pull request about the changes and their purpose.

  7. Code Review: Your pull request will be reviewed by the maintainers. Engage in the review process if there are comments or suggestions.

  8. Merge: Once your pull request is approved, it will be merged into the main branch.

By contributing to this project, you agree to abide by its terms and conditions. Happy coding and forecasting!

License

This project is licensed under the MIT License. See the LICENSE file for details.

Citation

If you use this workflow, please consider citing it using the Cite this repository button.

Arnal, L., Clark, M. P., Pietroniro, A., Vionnet, V., Casson, D. R., Whitfield, P. H., Fortin, V., Wood, A. W., Knoben, W. J. M., Newton, B. W., and Walford, C.: FROSTBYTE: A reproducible data-driven workflow for probabilistic seasonal streamflow forecasting in snow-fed river basins across North America, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2023-3040, 2024.

Contact

If you have any questions about using or running the workflow, or are willing to contribute, please contact louise.arnal[-at-]usask.ca

Owner

  • Login: Laurin-98
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Arnal"
  given-names: "L."
  orcid: "https://orcid.org/0000-0002-0208-2324"
- family-names: "Casson"
  given-names: "D. R."
  orcid: "https://orcid.org/0000-0003-0452-0284"
- family-names: "Clark"
  given-names: "M. P."
  orcid: "https://orcid.org/0000-0002-2186-2625"
- family-names: "Thiombiano"
  given-names: "A. N."
  orcid: "https://orcid.org/0000-0001-6583-0038"
title: "FROSTBYTE: Forecasting River Outlooks from Snow Timeseries: Building Yearly Targeted Ensembles"
version: 1.0.0
date-released: 2024-06-15
url: "https://github.com/CH-Earth/FROSTBYTE"

GitHub Events

Total
  • Push event: 4
  • Create event: 2
Last Year
  • Push event: 4
  • Create event: 2

Dependencies

requirements.txt pypi
  • Bottleneck ==1.3.2
  • CRPS ==2.0.4
  • PyYAML ==5.3.1
  • Shapely ==1.7.1
  • geopandas ==0.10.2
  • ipykernel ==5.1.4
  • matplotlib ==3.1.3
  • netCDF4 ==1.5.3
  • numpy ==1.18.1
  • pandas ==1.0.3
  • properscoring ==0.1
  • rasterio ==1.2.0
  • scikit-learn ==0.22.1
  • scipy ==1.4.1
  • statsmodels ==0.11.1
  • xarray ==0.15.1