Skip to main content

Parse OpenEO process graphs from JSON to traversible Python objects.

Project description

OpenEO Process Graph Parser (Python & networkx)

PyPI - Status PyPI PyPI - Python Version codecov

Python package to parse OpenEO process graphs from raw JSON into fully traversible networkx graph objects. This package is an evolution of the openeo-pg-parser-python package.

Installation

This package can be installed with pip:

pip install openeo-pg-parser-networkx

Currently Python versions 3.9 and 3.10 are supported.

Basic usage

(An example notebook of using openeo-pg-parser-networkx together with a process implementation source like openeo-processes-dask can be found in openeo-pg-parser-networkx/examples/01_minibackend_demo.ipynb.)

Parse a JSON OpenEO process graph:

from openeo_pg_parser_networkx.graph import OpenEOProcessGraph

NDVI_GRAPH_PATH = "../tests/data/graphs/apply.json"

parsed_graph = OpenEOProcessGraph.from_file(NDVI_GRAPH_PATH)
> Deserialised process graph into nested structure
> Walking node root-fd8ae3b4-8cb8-46c8-a5cd-c8ee552d1945
> Walking node apply2-fd8ae3b4-8cb8-46c8-a5cd-c8ee552d1945
> Walking node multiply1-f8644201-32a8-4283-8814-a577c4e28226
> Walking node apply1-fd8ae3b4-8cb8-46c8-a5cd-c8ee552d1945
> Walking node ndvi1-06a8d8af-296a-4960-a1cb-06dcd251b6bb
> Walking node loadcollection1-fd8ae3b4-8cb8-46c8-a5cd-c8ee552d1945

Plot it:

parsed_graph.plot()

example process graph

To execute a process graph, OpenEOProcessGraph needs to know which Python code to call for each of the nodes in the graph. This information is provided by a "process registry", which is basically a dictionary that maps each process_id to its actual Python implementation as a Callable.

Register process implementations to a "process registry":

from openeo_pg_parser_networkx import ProcessRegistry
process_registry = ProcessRegistry()

from openeo_processes_dask.process_implementations import apply, ndvi, multiply, load_collection, save_result

process_registry["apply"] =  apply
process_registry["ndvi"] =  ndvi
process_registry["multiply"] =  multiply
process_registry["load_collection"] =  load_collection
process_registry["save_result"] =  save_result

Build an executable callable from the process graph:

pg_callable = parsed_graph.to_callable(process_registry=process_registry)

Execute that callable like a normal Python function:

pg_callable
> Running process load_collection
> Running process apply
> ...

Development environment

openeo-pg-parser-networkx requires poetry >1.2, see their docs for installation instructions.

To setup the python venv and install this project into it run:

poetry install

To add a new core dependency run:

poetry add some_new_dependency

To add a new development dependency run:

poetry add some_new_dependency --group dev

To run the test suite run:

poetry run python -m pytest

Note that you can also use the virtual environment that's generated by poetry as the kernel for the ipynb notebooks.

Pre-commit hooks

This repo makes use of pre-commit hooks to enforce linting & a few sanity checks. In a fresh development setup, install the hooks using poetry run pre-commit install. These will then automatically be checked against your changes before making the commit.

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

openeo_pg_parser_networkx-2023.1.2.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

openeo_pg_parser_networkx-2023.1.2-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file openeo_pg_parser_networkx-2023.1.2.tar.gz.

File metadata

  • Download URL: openeo_pg_parser_networkx-2023.1.2.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.9 Linux/5.15.0-1031-azure

File hashes

Hashes for openeo_pg_parser_networkx-2023.1.2.tar.gz
Algorithm Hash digest
SHA256 59e12e9b0d66f3b40ed3e4f4450cd50f40ab179cf44063cfded672ff008bb070
MD5 d8e5814b672618db1bf21f0490cdd339
BLAKE2b-256 d8d3dcb615df997923355f6072a07452def8c3c0f27c9c70efa2ecc7f46ccf27

See more details on using hashes here.

File details

Details for the file openeo_pg_parser_networkx-2023.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for openeo_pg_parser_networkx-2023.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 045e1c2f3ad2aeae0fe8822e03a43f6dbc965fa4ebe63a55869c1e06b24aac4f
MD5 0203349ecb0533906575928e75448944
BLAKE2b-256 98304090ad4545b5a40516db3f209a8b744396701422b5506d8f8ebe45bc4834

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