ScrollStats: a Python tool for quantifying scroll bar morphology on meandering rivers

ScrollStats: a Python tool for quantifying scroll bar morphology on meandering rivers - Published in JOSS (2026)

https://github.com/tamu-edu/scrollstats

Science Score: 92.0%

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

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
    Organization tamu-edu has institutional domain (www.tamu.edu)
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords from Contributors

archival projection interactive profiles generic sequences observability autograding hacking shellcodes
Last synced: 9 days ago · JSON representation

Repository

An open-source python library to calculate and extract morphometrics from scroll bar floodplains

Basic Info
Statistics
  • Stars: 2
  • Watchers: 3
  • Forks: 2
  • Open Issues: 1
  • Releases: 4
Created over 3 years ago · Last pushed about 1 month ago
Metadata Files
Readme Contributing License

README.md

ScrollStats

Actions Status Documentation Status

PyPI version Conda-Forge PyPI platforms

GitHub Discussion

An open-source python library to calculate and extract morphometrics from scrollbar floodplains.

For further reading on the rationale behind ScrollStats and practical examples demonstrating how to use ScrollStats, check out the documentation here: https://scrollstats.readthedocs.io/en/latest

Introduction

Scroll bar floodplains, often characterized by a series undulating ridges and swales, exhibit a distinct geomorphic signature that can be seen in high-resolution digital elevation models (DEMs). These fine-scale topographic undulations reflect the dynamic balance between sediment deposition and erosional scouring associated with the fluvial processes along the inner bank at the time of their formation. DEM-based analyses of scroll bar floodplains provide critical insight into the temporal evolution of channel morphology and the underlying hydrologic and sedimentary controls that govern riverine landscape change.

The figure below is a visualization of the DEM of a bend on the Lower Brazos River, TX. We can clearly see the undulations in the DEM caused by the river migration as well as features such as cross-channels formed by water flow through the floodplain.

Image of a Bend in Brazos River

Getting Started

If you intend to use ScrollStats for your own analysis, follow the User Installation instructions.

If you intend to develop or contribute to ScrollStats, follow the Developer Installation instructions.

User Installation

Install ScrollStats with pip

shell python -m pip install scrollstats

Or install with conda

shell conda install scrollstats

NOTE: scrollstats v0.1.3 must be installed with python <=3.12 when using conda

Developer Installation

First, clone the repo locally, create a virtual environment for the project, then install the [dev] optional dependencies listed in pyproject.toml.

```shell git clone https://github.com/tamu-edu/scrollstats

python -m venv venv/ source venv/bin/activate

(venv) python -m pip install -e ".[dev]" ```

The ScrollStats Workflow

The ScrollStats Workflow can be broken up into the 3 major steps listed below. Each of these steps is covered in detail in docs with code examples using datasets generated from a bend on the Lower Brazos River, TX.

1. Delineate Ridge Areas

Delineate ridge areas from a DEM to create the ridge area raster. This is achieved by:

  1. applying the profile curvature and residual topography transforms to the DEM
  2. applying a threshold at 0 to these transformed rasters to create binary rasters
  3. finding the union of these binary rasters
  4. denoising the union raster

2. Create Vector Datasets

Create the following vector datasets to define key morphological features of the bend.

  • bend boundary
  • packet boundaries
  • channel centerline
  • ridge lines
  • migration pathways

Some of these datasets are digitized manually, while others are generated by ScrollStats. Details of the vector data creation process can be found in the doc linked above.

3. Calculate Ridge Metrics

Once all of the vector datasets are created and the raster areas are delineated, you can now calculate ridge metrics across the entire bend.

These metrics include ridge amplitude, width, and migration distance for every intersection of a ridge and migration pathway.

Contributing

Contribution to ScrollStats is welcome. There will forever be a "frozen" branch that contains the code exactly as it was at the time of publication, but it is the intent of the maintainer to accept community feedback and suggestions to the project.

Submitting Feedback To submit feedback, please open an issue on this repository with the appropriate label. Currently used labels are:

  • documentation: issues concerning the workflow or clarity of instructions
  • feature: issues requesting or proposing new features for scrollstats
  • bug: issues concerning errors in the code itself

Owner

  • Name: Texas A&M University
  • Login: tamu-edu
  • Kind: organization
  • Location: College Station, TX

A research-intensive flagship university founded in 1876 as the first public institution of higher learning in Texas.

JOSS Publication

ScrollStats: a Python tool for quantifying scroll bar morphology on meandering rivers
Published
June 02, 2026
Volume 11, Issue 122, Page 9736
Authors
Andrew Vanderheiden ORCID
Department of Geography, Texas A&M University, United States
Billy Hales ORCID
Department of Geography, Texas A&M University, United States
Andrew J. Moodie ORCID
Department of Geography, Texas A&M University, United States
İnci Güneralp ORCID
Department of Geography, Texas A&M University, United States
Editor
Adithi R Upadhya ORCID
Tags
scroll bars river meander geomorphology

GitHub Events

Total
  • Release event: 3
  • Delete event: 9
  • Pull request event: 7
  • Issues event: 12
  • Issue comment event: 23
  • Push event: 59
  • Public event: 1
  • Gollum event: 4
  • Create event: 10
Last Year
  • Release event: 2
  • Delete event: 9
  • Pull request event: 7
  • Issues event: 10
  • Issue comment event: 22
  • Push event: 45
  • Gollum event: 4
  • Create event: 8

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 518
  • Total Committers: 3
  • Avg Commits per committer: 172.667
  • Development Distribution Score (DDS): 0.008
Past Year
  • Commits: 141
  • Committers: 2
  • Avg Commits per committer: 70.5
  • Development Distribution Score (DDS): 0.007
Top Committers
Name Email Commits
Andrew Vanderheiden a****9@g****m 514
Andrew Moodie a****e@u****u 3
dependabot[bot] 4****] 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: about 1 month ago

All Time
  • Total issues: 1
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 1
  • Total pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • a-vanderheiden (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 189 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
  • Total maintainers: 1
pypi.org: scrollstats

An open-source python library to calculate and extract morphometrics from scroll bar floodplains

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 189 Last month
Rankings
Dependent packages count: 8.4%
Average: 27.8%
Dependent repos count: 47.3%
Maintainers (1)
Last synced: 16 days ago

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v6 composite
  • actions/setup-python v6 composite
  • codecov/codecov-action v5 composite
  • pre-commit/action v3.0.1 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v6 composite
  • actions/upload-artifact v5 composite
  • openjournals/openjournals-draft-action master composite
pyproject.toml pypi
  • geopandas *
  • lazy-loader *
  • matplotlib *
  • nptyping *
  • numba *
  • rasterio *
  • scipy *
  • tqdm *
.github/workflows/cd.yml actions
  • actions/attest-build-provenance v3.0.0 composite
  • actions/checkout v6 composite
  • actions/download-artifact v6 composite
  • hynek/build-and-inspect-python-package v2 composite
  • pypa/gh-action-pypi-publish release/v1 composite