RivGraph

RivGraph: Automatic extraction and analysis of river and delta channel network topology - Published in JOSS (2021)

https://github.com/VeinsOfTheEarth/RivGraph

Science Score: 59.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: researchgate.net, joss.theoj.org
  • Committers with academic emails
    4 of 7 committers (57.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.3%) to scientific vocabulary

Keywords

manuscript python

Keywords from Contributors

numerical-modeling particle
Last synced: 6 months ago · JSON representation

Repository

Extracting and quantifying graphical representations of river and delta channel networks from binary masks

Basic Info
Statistics
  • Stars: 93
  • Watchers: 5
  • Forks: 28
  • Open Issues: 11
  • Releases: 4
Topics
manuscript python
Created almost 7 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog License

README.md

build Coverage Status docs DOI

RivGraph logo

About

RivGraph is a Python package that provides tools for converting a binary mask of a channel network into a directed, weighted graph (i.e. a set of connected links and nodes).

Core functionality of RivGraph.\label{fig:corefunctions}

The figure above demonstrates the core components of RivGraph, but many other features are provided, including:

  • Morphologic metrics (lengths, widths, branching angles, braiding indices)
  • Algebraic representations of the channel network graph
  • Topologic metrics (both topologic and dynamic such as alternative paths, flux sharing, entropies, mutual information, etc.)
  • Tools for cleaning and preparing your binary channel network mask
  • Island detection, metrics, and filtering
  • Mesh generation for characterizing along-river characteristics
  • (beta) Tools for centerline migration analysis

All of RivGraph's functionality maintains and respects georeferencing information. If you start with a georeferenced mask (e.g. a GeoTIFF), RivGraph exports your results in the CRS (coordinate reference system) of your mask for convenient mapping, analysis, and fusion with other datasets in a GIS.

You can see some description of RivGraph's functionality via this AGU poster, and the flow directionality logic and validation is described in our ESurf Dynamics paper. Examples demonstrating the basic RivGraph features are available for a delta channel network and a braided river.

Installing

RivGraph is hosted at conda-forge. We recommend installing into a fresh conda environment to minimize the risk of dependency clashes. The easiest way to do this is to open Terminal (Mac/Unix) or Anaconda Prompt (Windows) and type:

conda create -n rivgraph_env rivgraph -c conda-forge
conda activate rivgraph_env

You may then want to install Spyder or your preferred IDE. Conda should fetch all the required dependencies and handle versioning.

If you want to install RivGraph into an already-existing environment, you can run

conda activate myenv
conda install rivgraph -c conda-forge

You may also install RivGraph from this Github repo.

Instructions for testing your installation are available here.

How to use?

Please see the documentation for more detailed instructions.

RivGraph requires that you provide a binary mask of your network. This page provides some help, hints, and tools for finding or creating your mask.

To see what RivGraph does and how to operate it, you can work through the Colville Delta example or the Brahmaputra River example. Both examples include sample masks.

RivGraph contains two primary classes (delta and river) that provide convenient methods for creating a processing workflow for a channel network. As the examples demonstrate, you can instantiate a delta or river class, then apply associated methods for each. After looking at the examples, take a look at classes.py to understand what methods are available.

Note: there are many functions under the hood that may be useful to you. Check out the im_utils script (image utilities) in particular for functions to help whip your mask into shape!

Contributing

If you think you're not skilled or experienced enough to contribute, think again! We agree wholeheartedly with the sentiments expressed by this Imposter syndrome disclaimer. We welcome all forms of user contributions including feature requests, bug reports, code, documentation requests, and code. Simply open an issue in the tracker. For code development contributions, please contact us via email to be added to our slack channel where we can hash out a plan for your contribution.

Citing RivGraph

Citations help us justify the effort that goes into building and maintaining this project. If you used RivGraph for your research, please consider citing us.

If you use RivGraph's flow directionality algorithms, please cite our ESurf Dynamics paper. Additionally, if you publish work wherein RivGraph was used to process your data, please cite our JOSS Paper.

Contacting us

The best way to get in touch is to open an issue or comment on any open issue or pull request. Otherwise, send an email to j.........k@gmail.com

License

This is free software: you can redistribute it and/or modify it under the terms of the BSD 3-clause License. A copy of this license is provided in LICENSE.txt.

RivGraph has been assigned number C19049 by the Feynman Center for Innovation.

Owner

  • Name: Veins of the Earth
  • Login: VeinsOfTheEarth
  • Kind: organization

A collection of tools for next-gen vector and graph based river mapping, monitoring, and modeling

GitHub Events

Total
  • Watch event: 9
  • Push event: 12
  • Pull request event: 1
  • Fork event: 3
  • Create event: 2
Last Year
  • Watch event: 9
  • Push event: 12
  • Pull request event: 1
  • Fork event: 3
  • Create event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 540
  • Total Committers: 7
  • Avg Commits per committer: 77.143
  • Development Distribution Score (DDS): 0.578
Past Year
  • Commits: 10
  • Committers: 2
  • Avg Commits per committer: 5.0
  • Development Distribution Score (DDS): 0.3
Top Committers
Name Email Commits
Jon Schwenk j****k@g****m 228
jay j****n@u****u 191
Jon Schwenk j****k@l****v 52
jsta s****2@m****u 49
Lawrence V l****e@v****t 18
Katy Barnhart k****t@u****v 1
Ishtiaq Hussain 5****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 48
  • Total pull requests: 56
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 15
  • Total pull request authors: 6
  • Average comments per issue: 3.69
  • Average comments per pull request: 0.96
  • Merged pull requests: 50
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: less than a minute
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Lvulis (19)
  • jonschwenk (6)
  • leotrs (4)
  • jsta (4)
  • elbeejay (3)
  • cgotelli (2)
  • forestbat (2)
  • kensukename2 (1)
  • fluvialgeomorf (1)
  • hcamkerr (1)
  • zhaoshaohua21 (1)
  • rockbusteriitk (1)
  • GustavoWillyNagel (1)
  • huck-rees (1)
  • ssarker07 (1)
Pull Request Authors
  • elbeejay (46)
  • jsta (6)
  • Lvulis (2)
  • mwort (2)
  • Ishticode (1)
  • kbarnhart (1)
Top Labels
Issue Labels
documentation (9) bug (4) good first issue (4) question (2) enhancement (2) dependency testing (1)
Pull Request Labels
documentation (1)

Packages

  • Total packages: 3
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 3
proxy.golang.org: github.com/VeinsOfTheEarth/RivGraph
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
proxy.golang.org: github.com/veinsoftheearth/rivgraph
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
conda-forge.org: rivgraph

RivGraph extracts and quantifies graphical representations of river and delta channel networks from binary masks.

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 33.9%
Dependent repos count: 34.0%
Stargazers count: 37.3%
Average: 39.1%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

.github/workflows/build.yml actions
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/docs.yml actions
  • JamesIves/github-pages-deploy-action 3.7.1 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
environment.yml pypi
setup.py pypi