Skip to main content

Python interface to GuidosToolbox (GTB) for spatial pattern analysis

Project description

pyguidos

pipeline status coverage report docs status version license

A Python interface to the main GuidosToolbox (GTB) modules for spatial pattern analysis

Overview

pyguidos is a Python interface to the main modules of GuidosToolbox (GTB), a scientific software package for pattern spatial analysis of raster images. This Python module provides programmatic access to the core GTB analytical tools, enabling reproducible landscape analysis workflows in Python scripts, Jupyter notebooks, and automated pipelines.

Repository Contents

  • /docs: Documentation files.
  • /notebooks: Jupyter notebooks to use the module and visualise results.
  • /pyguidos: script repository.
  • /tests: Unit and integration tests for analytical tools, input validation (checks), and utility functions.

Modules

Function Description
frag() Fragmentation analysis
frag_change() Fragmentation change
landmos() Landscape Mosaic
spa() Simplified Pattern Analysis
acc() Foreground Patch Size Accounting
rss() Restoration Status Summary
extract_by_polygon() Extract raster by polygon features

Documentation

Full API documentation is available at https://jrc-forest.pages.code.europa.eu/guidos/pyguidos.


Requirements

  • Python >= 3.10
  • numpy >2.0
  • rasterio >=1.4
  • scipy >=1.15
  • scikit-image>=0.26
  • matplotlib >=3.10
  • pyogrio >=0.10
  • geopandas >=1.1
  • shapely >=2.0
  • pyproj >=3.4
  • python-ternary >=1.0
  • numba >0.62
  • tbb >=2021.6.0; sys_platform == 'win32'
  • intel-openmp; sys_platform == 'linux'

Installation

1. Standard Installation (not yet available)

For general use, install the latest stable version directly via pip:

pip install pyguidos

2. Development installation

To install the latest development version directly from the GitLab repository without cloning:

pip install git+https://code.europa.eu/jrc-forest/guidos/pyguidos.git

3. Editable Installation (Recommended for Testing)

To run the example notebooks or contribute to the source code, you must clone the repository and install it in "editable" mode. This allows changes in the code to be reflected immediately.

  1. Clone the repository
git clone https://code.europa.eu/jrc-forest/guidos/pyguidos.git
cd pyguidos
  1. Create and activate a virtual environment using Python.
  • Windows
py -m venv myvenv
myvenv\Scripts\activate
  • Linux/Mac
python -m venv myvenv
source myvenv/bin/activate
  1. Install in editable mode with dependencies:
pip install -e .

This links module's source code directly to your Python environment, so any changes you make are immediately reflected without reinstallation.


Quick Start

Once installed, you can verify your setup and explore the available tools directly from your Python console or Jupyter Notebook.

import pyguidos as pg

# List all available analytical tools and their descriptions
pg.info()

# Get detailed documentation and methodology links for a specific tool
pg.info('landmos')

# Get full technical specification of a function
help(pg.landmos)

Usage Examples

import pyguidos as pg

# Fragmentation analysis
result = pg.frag(
    in_tiff="my_map.tif",
    method="FAD",
    window_size=27
)

# Fragmentation change
result = pg.frag_change(
    in_tiff_t1="my_map2018_frag_fad_27.tif",
    in_tiff_t2="my_map2025_frag_fad_27.tif"
)

# Landscape Mosaic
result = pg.landmos(
    in_tiff="my_landcover.tif",
    window_size=33
)

# Simplified Pattern Analysis (SPA)
result = pg.spa(
    in_tiff="my_map.tif",
    edge_width=1,
    classes=6
)

# Foreground Patch Size Accounting
result = pg.acc(
    in_tiff="my_map.tif",
    thresholds=[10, 100, 1000, 10000]
)

# Raster Spatial Statistics
result = pg.rss(in_tiff="my_map.tif")

# Extract raster by polygon
pg.extract_by_polygon(
    shapefile_path="regions.shp",
    geotiff_path="my_map.tif",
    output_dir="output/",
    id_field="NAME"
)

Example data and Jupyter notebooks with worked examples are available in the project repository.


Citation

If you use pyGuidos in your research, please cite both the GuidosToolbox software and this package:

GuidosToolbox:

  • Vogt P. and Riitters K. (2017). GuidosToolbox: universal digital image object analysis. European Journal of Remote Sensing, 50, 1, pp. 352-361. doi: 10.1080/22797254.2017.1330650

pyGuidos:

  • Caudullo G. and Vogt P. (2026). PyGuidos, A cross-platform Python interface to GuidosToolbox for landscape pattern analysis. In press.

Interactive Citation

You can get the plain-text citations directly in your Python console:

import pyguidos as pg
pg.citation()

Contributing

Contributions are welcome. Please follow these steps:

  1. Fork the repository on GitLab
  2. Create a new branch for your feature or fix:
    git checkout -b feature/your-feature-name
    
  3. Make your changes and ensure existing tests pass:
    pytest tests/
    
  4. Submit a merge request with a clear description of the changes and their motivation.

Please open an issue before starting work on significant changes, to allow discussion of the approach.

For bug reports, please include the pyGuidos version, Python version, operating system, and a minimal reproducible example.


Authors

European Commission, Joint Research Centre (JRC)


License

This project is licensed under the European Union Public Licence v1.2 (EUPL-1.2). See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyguidos-2.3.0.tar.gz (438.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyguidos-2.3.0-py3-none-any.whl (419.6 kB view details)

Uploaded Python 3

File details

Details for the file pyguidos-2.3.0.tar.gz.

File metadata

  • Download URL: pyguidos-2.3.0.tar.gz
  • Upload date:
  • Size: 438.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for pyguidos-2.3.0.tar.gz
Algorithm Hash digest
SHA256 6a4ca66a6cb0e26bc9f4bc5879c3f669b54354f4f951cd0adb92e095ffd2934e
MD5 55d21920430969feb9a927c388482ddf
BLAKE2b-256 462c7d9e8fd97cf84a275226da99ec63a2019a8c2a4f2df149f748f72eae61c7

See more details on using hashes here.

File details

Details for the file pyguidos-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: pyguidos-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 419.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for pyguidos-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 658c468980970f4ca99e6229c596795bacd35ec8e662ef3718e30ad94c6ed1cb
MD5 c8d7cfb2eae3a47d27bede9cee2f76de
BLAKE2b-256 44b26d35e094e7651d4bb3531da6b421f610d4ab04eb14bd450ace204589baf9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page