# Scabbard
<!--
.. image:: https://img.shields.io/pypi/v/scabbard.svg
:target: https://pypi.python.org/pypi/scabbard
.. image:: https://readthedocs.org/projects/scabbard/badge/?version=latest
:target: https://scabbard.readthedocs.io/en/latest/?version=latest
:alt: Documentation Status -->
Python package to design, use or visualise topographic analysis, landscape evolution models and hydro/morphodynamics simulations. Among other, home of [GraphFlood](https://egusphere.copernicus.org/preprints/2024/egusphere-2024-1239/) (`CPU` and `GPU`) and [`CHONK`](https://gmd.copernicus.org/articles/17/71/2024/). This framework is also building a `GPU` backend for general purpose landscape modeling.
### Built on the shoulder of giants
`scabbard` started as a personal codebase and evolved toward a fully-fledge numerical Framework. It uses the robust and battle-tested scientific `python` stack (e.g. `numpy, scipy, numba, ...`) and geospatial `python` (e.g. `rasterio`, `geopandas`, `libgdal`, ...). It also relies on multiple domain-specific libraries to built a future-proof and community-compatible backend: [`libtopotoolbox` and `pytopotoolbox`](https://github.com/TopoToolbox), [`fastscapelib`](https://fastscapelib.readthedocs.io/en/latest/), [`LSDTopoTool`](https://lsdtopotools.github.io/) as well as my own collection of `c++` and `numba` routines. All the GPU backends use [`taichi`](https://docs.taichi-lang.org/) to ensure cross-platform/hardware compatibility and user-friendly code.
* Free software: MIT license
<!-- * Documentation: https://scabbard.readthedocs.io. -->
## How to install
`pip install pyscabbard`
As simple as that. Thanks to github actions allowing smooth CI, you do not have to compile anything yourself.
**NOTE**: `pytopotoolbox` official installation procedure is still WIP. I provide binary wheels within this project ([./wheels/pytopotoolbox](https://github.com/bgailleton/scabbard/tree/main/wheels/pytopotoolbox) ). At first import, `scabbard` will provide instruction (i.e. a single command line to run).
## Features
* General geomorphic routines
* `Graphflood`: Efficient hydrodynamic modelling, tailored for large scale. CPU and GPU version.
* `CHONK/trackscape/popscape`: Long term Landscape Evolution Models.
## Usage
Documentation is WIP and will be online soon
## Credits
This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
=======
History
=======
0.0.15 (2024-12-08)
-----------------------
* Fixing the new import system for legacy graphflood
* Renamed graphflood.py to legacy_graphflood.py
0.0.14 (2024-11-20)
-----------------------
* Small fixes on the boundary condition helpers
0.0.13 (2024-11-20)
-----------------------
* Adding an option for changing the exponent in Riverdale friction equation (e.g. migrating from manning to chezy)
0.0.12 (2024-11-20)
-----------------------
* Adapting the install process to pip topotoolbox
* Migrating to new ttb
* Minor fixes and additions
* Adding the start of a multi-backend unified graphflood interface
0.0.11 (2024-11-05)
-----------------------
* Loads of minor fixes in the install process
* Adding an hdf5 io/helper
* Refactor part of the ray tracing 3D plotter
* Adding orthographic projection
0.0.9 (2024-10-25)
--------------------------
* More fixes on the setup process
* Added a simple GPU ray tracing engine for 3D plots
* Started a unified interface for graphflood
0.0.8 (2024-10-15)
--------------------------
* Cleaning the install process
* Removing problematic legacy imports
* Trimming requirements
* Deprecating older tools relying on packages I do not use anymore
0.0.5 - 0.0.7 (2024-10-15)
--------------------------
* Total refactoring. As Simple as that.
* `scabbard` is the main tool now, it uses multiple backends `DAGGER`, `pytopotoolbox`, `fastscapelib`, `numba` and `taichi`
0.0.3 - 0.0.4 (2023-10-23)
--------------------------
* Fixing couple of bugs on the grid
* Experimental support for DAGGER's experimental stuff
* Adding environment object (WIP, future main structure)
0.0.2 (2023-07-31)
------------------
* Adding drainage divide quick extraction tools
* Fixing sea_level/Z0 stuff
0.0.1 (2023-07-25)
------------------
* First release on PyPI.
* Adding tools for quick river extraction
* Started a big behind-the-scene refactoring and standardisation (invisible at top level)
* Maintenance and bug fixes
Raw data
{
"_id": null,
"home_page": "https://github.com/bgailleton/scabbard",
"name": "pyscabbard",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "scabbard",
"author": "Boris Gailleton",
"author_email": "boris.gailleton@univ-rennes.fr",
"download_url": "https://files.pythonhosted.org/packages/42/c6/fa737f0e91d4ce743a70cd6d6b02baf75c40bddbf60fdeba271b1bbde079/pyscabbard-0.0.15.tar.gz",
"platform": null,
"description": "# Scabbard\n\n<!-- \n.. image:: https://img.shields.io/pypi/v/scabbard.svg\n :target: https://pypi.python.org/pypi/scabbard\n\n.. image:: https://readthedocs.org/projects/scabbard/badge/?version=latest\n :target: https://scabbard.readthedocs.io/en/latest/?version=latest\n :alt: Documentation Status -->\n\n\n\nPython package to design, use or visualise topographic analysis, landscape evolution models and hydro/morphodynamics simulations. Among other, home of [GraphFlood](https://egusphere.copernicus.org/preprints/2024/egusphere-2024-1239/) (`CPU` and `GPU`) and [`CHONK`](https://gmd.copernicus.org/articles/17/71/2024/). This framework is also building a `GPU` backend for general purpose landscape modeling.\n\n\n### Built on the shoulder of giants\n\n`scabbard` started as a personal codebase and evolved toward a fully-fledge numerical Framework. It uses the robust and battle-tested scientific `python` stack (e.g. `numpy, scipy, numba, ...`) and geospatial `python` (e.g. `rasterio`, `geopandas`, `libgdal`, ...). It also relies on multiple domain-specific libraries to built a future-proof and community-compatible backend: [`libtopotoolbox` and `pytopotoolbox`](https://github.com/TopoToolbox), [`fastscapelib`](https://fastscapelib.readthedocs.io/en/latest/), [`LSDTopoTool`](https://lsdtopotools.github.io/) as well as my own collection of `c++` and `numba` routines. All the GPU backends use [`taichi`](https://docs.taichi-lang.org/) to ensure cross-platform/hardware compatibility and user-friendly code.\n\n\n* Free software: MIT license\n<!-- * Documentation: https://scabbard.readthedocs.io. -->\n\n## How to install\n\n\n`pip install pyscabbard`\n\nAs simple as that. Thanks to github actions allowing smooth CI, you do not have to compile anything yourself.\n\n**NOTE**: `pytopotoolbox` official installation procedure is still WIP. I provide binary wheels within this project ([./wheels/pytopotoolbox](https://github.com/bgailleton/scabbard/tree/main/wheels/pytopotoolbox) ). At first import, `scabbard` will provide instruction (i.e. a single command line to run).\n\n\n## Features\n\n* General geomorphic routines\n\n* `Graphflood`: Efficient hydrodynamic modelling, tailored for large scale. CPU and GPU version.\n\n* `CHONK/trackscape/popscape`: Long term Landscape Evolution Models.\n\n\n## Usage\n\nDocumentation is WIP and will be online soon\n\n\n## Credits\n\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n=======\nHistory\n=======\n\n0.0.15 (2024-12-08)\n-----------------------\n* Fixing the new import system for legacy graphflood\n* Renamed graphflood.py to legacy_graphflood.py\n\n0.0.14 (2024-11-20)\n-----------------------\n* Small fixes on the boundary condition helpers\n\n0.0.13 (2024-11-20)\n-----------------------\n* Adding an option for changing the exponent in Riverdale friction equation (e.g. migrating from manning to chezy)\n\n0.0.12 (2024-11-20)\n-----------------------\n\n* Adapting the install process to pip topotoolbox\n* Migrating to new ttb\n* Minor fixes and additions\n* Adding the start of a multi-backend unified graphflood interface\n\n\n0.0.11 (2024-11-05)\n-----------------------\n\n* Loads of minor fixes in the install process\n* Adding an hdf5 io/helper\n* Refactor part of the ray tracing 3D plotter\n* Adding orthographic projection\n\n0.0.9 (2024-10-25)\n--------------------------\n\n* More fixes on the setup process\n* Added a simple GPU ray tracing engine for 3D plots\n* Started a unified interface for graphflood \n\n0.0.8 (2024-10-15)\n--------------------------\n\n* Cleaning the install process\n* Removing problematic legacy imports\n* Trimming requirements\n* Deprecating older tools relying on packages I do not use anymore\n\n0.0.5 - 0.0.7 (2024-10-15)\n--------------------------\n\n* Total refactoring. As Simple as that.\n* `scabbard` is the main tool now, it uses multiple backends `DAGGER`, `pytopotoolbox`, `fastscapelib`, `numba` and `taichi`\n\n\n0.0.3 - 0.0.4 (2023-10-23)\n--------------------------\n\n* Fixing couple of bugs on the grid\n* Experimental support for DAGGER's experimental stuff\n* Adding environment object (WIP, future main structure)\n\n0.0.2 (2023-07-31)\n------------------\n\n* Adding drainage divide quick extraction tools\n* Fixing sea_level/Z0 stuff \n\n0.0.1 (2023-07-25)\n------------------\n\n* First release on PyPI.\n* Adding tools for quick river extraction\n* Started a big behind-the-scene refactoring and standardisation (invisible at top level)\n* Maintenance and bug fixes\n",
"bugtrack_url": null,
"license": "MIT license",
"summary": "Suite of Hydrodynamic, topographic analysis, Landscape Evolution model and visualisation tools",
"version": "0.0.15",
"project_urls": {
"Homepage": "https://github.com/bgailleton/scabbard"
},
"split_keywords": [
"scabbard"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a90fd028bac12dd4cdff1ff0934de262249d93b13e49db1859b64e26b7dda1ca",
"md5": "6515e2d7494e87b88381ae501e7dcf5f",
"sha256": "8a0c490040a152e97c7795181d3854ec85e1d58c48d3a3271ac735164c0c8908"
},
"downloads": -1,
"filename": "pyscabbard-0.0.15-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6515e2d7494e87b88381ae501e7dcf5f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.10",
"size": 166976,
"upload_time": "2024-12-09T08:59:38",
"upload_time_iso_8601": "2024-12-09T08:59:38.582947Z",
"url": "https://files.pythonhosted.org/packages/a9/0f/d028bac12dd4cdff1ff0934de262249d93b13e49db1859b64e26b7dda1ca/pyscabbard-0.0.15-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "42c6fa737f0e91d4ce743a70cd6d6b02baf75c40bddbf60fdeba271b1bbde079",
"md5": "9ff5ad92f6a8cd48b41b79f2cd0782a3",
"sha256": "2dbfb3189a67bb9326bf77791ea85214f4ddcf15ff5e4b04677cb33826b3cc0f"
},
"downloads": -1,
"filename": "pyscabbard-0.0.15.tar.gz",
"has_sig": false,
"md5_digest": "9ff5ad92f6a8cd48b41b79f2cd0782a3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 114858,
"upload_time": "2024-12-09T08:59:40",
"upload_time_iso_8601": "2024-12-09T08:59:40.250968Z",
"url": "https://files.pythonhosted.org/packages/42/c6/fa737f0e91d4ce743a70cd6d6b02baf75c40bddbf60fdeba271b1bbde079/pyscabbard-0.0.15.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-09 08:59:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bgailleton",
"github_project": "scabbard",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "cffi",
"specs": [
[
">=",
"1.17.1"
]
]
},
{
"name": "charset_normalizer",
"specs": [
[
">=",
"3.3.2"
]
]
},
{
"name": "click",
"specs": [
[
">=",
"8.1.7"
]
]
},
{
"name": "cmcrameri",
"specs": [
[
">=",
"1.9"
]
]
},
{
"name": "Cython",
"specs": [
[
">=",
"3.0.11"
]
]
},
{
"name": "dagger",
"specs": [
[
">=",
"0.0.1"
]
]
},
{
"name": "genapi",
"specs": [
[
">=",
"0.0.8"
]
]
},
{
"name": "hypothesis",
"specs": [
[
">=",
"6.115.3"
]
]
},
{
"name": "mathutils",
"specs": [
[
">=",
"3.3.0"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.2.1"
]
]
},
{
"name": "numba",
"specs": [
[
">=",
"0.60.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.19.0"
]
]
},
{
"name": "Pillow",
"specs": [
[
">=",
"11.0.0"
]
]
},
{
"name": "platformdirs",
"specs": [
[
">=",
"4.3.6"
]
]
},
{
"name": "plotly",
"specs": [
[
">=",
"5.24.1"
]
]
},
{
"name": "pooch",
"specs": [
[
">=",
"1.8.2"
]
]
},
{
"name": "psutil",
"specs": [
[
">=",
"6.0.0"
]
]
},
{
"name": "pybind11",
"specs": [
[
">=",
"2.12.0"
]
]
},
{
"name": "PyYAML",
"specs": [
[
">=",
"6.0.2"
]
]
},
{
"name": "rasterio",
"specs": [
[
">=",
"1.3.11"
]
]
},
{
"name": "scipy",
"specs": [
[
">=",
"1.14.1"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"73.0.1"
]
]
},
{
"name": "Sphinx",
"specs": [
[
">=",
"8.1.3"
]
]
},
{
"name": "taichi",
"specs": [
[
">=",
"1.7.1"
]
]
},
{
"name": "thread",
"specs": [
[
">=",
"2.0.5"
]
]
}
],
"tox": true,
"lcname": "pyscabbard"
}