{"id":51265171,"url":"https://github.com/francescoingv/expose-pygeoapi-platform","last_synced_at":"2026-06-29T15:00:28.247Z","repository":{"id":342632827,"uuid":"1174600841","full_name":"francescoingv/expose-pygeoapi-platform","owner":"francescoingv","description":"EXPOSE platform: for exposing and executing scientific processes via \"OGC API - Processes\" standard using pygeoapi plugins and external execution services","archived":false,"fork":false,"pushed_at":"2026-06-12T13:54:50.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T15:17:19.342Z","etag":null,"topics":["geospatial-processing","ogc-api-processes","open-science","processing-services","pygeoapi","scientific-workflows"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/francescoingv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-06T16:19:46.000Z","updated_at":"2026-06-12T13:52:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/francescoingv/expose-pygeoapi-platform","commit_stats":null,"previous_names":["francescoingv/ingv-pygeoapi-processing-platform","francescoingv/expose-pygeoapi-platform"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/francescoingv/expose-pygeoapi-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francescoingv%2Fexpose-pygeoapi-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francescoingv%2Fexpose-pygeoapi-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francescoingv%2Fexpose-pygeoapi-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francescoingv%2Fexpose-pygeoapi-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/francescoingv","download_url":"https://codeload.github.com/francescoingv/expose-pygeoapi-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/francescoingv%2Fexpose-pygeoapi-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34931592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geospatial-processing","ogc-api-processes","open-science","processing-services","pygeoapi","scientific-workflows"],"created_at":"2026-06-29T15:00:14.588Z","updated_at":"2026-06-29T15:00:28.231Z","avatar_url":"https://github.com/francescoingv.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# EXPOSE (EXecutables for OGC API PrOcesses and Scientific Environments) platform\n\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18892848.svg)](https://doi.org/10.5281/zenodo.18892848)\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Python](https://img.shields.io/badge/python-3.x-blue.svg)\n\nPlatform for exposing command‑line scientific programs as\n**OGC API - Processes** web services using **pygeoapi** and a\nremote execution architecture.\n\n------------------------------------------------------------------------\n\n## Overview\n\nThe **EXPOSE (EXecutables for OGC API PrOcesses and Scientific Environments) platform**\nis a software architecture\ndesigned to expose command‑line scientific programs as web services\ncompliant with the **OGC API - Processes** standard.\n\nMany scientific applications are distributed as command-line programs\nthat require specific runtime environments, dependencies, or operating\nsystems. Running these programs within a single web service environment\nis often difficult due to incompatible software stacks or resource\nisolation requirements.\n\nThis platform provides a solution that separates:\n\n1.  **API layer** -- exposes processes through the OGC API - Processes\n    standard\n2.  **Execution layer** -- runs scientific programs in isolated\n    environments\n\nThe API layer is implemented using the **pygeoapi framework**, which\nprovides an implementation of the OGC API suite and allows extension\nthrough plugins.\n\nActual execution of the scientific programs is delegated to lightweight\nremote services called **generic processor providers**, which run the\nprograms on dedicated machines and return results via HTTP.\n\nThis architecture allows:\n\n-   isolation of execution environments\n-   independent deployment of processing codes\n-   reuse of a single API infrastructure for multiple programs\n-   a single entrypoint exposing all processing services\n\n------------------------------------------------------------------------\n\n## Design principles\n\nThe platform design follows several principles:\n\n-   **Environment isolation** -- programs can run on different machines\n    with independent software environments.\n\n-   **Single API entry point** -- all processes are exposed through one\n    OGC API.\n\n-   **Minimal execution service** -- the execution service is\n    lightweight and flexible.\n\n-   **Decoupled architecture** -- API infrastructure and execution\n    environments are independent.\n\n------------------------------------------------------------------------\n\n## Platform architecture\n\nThe platform consists of four main layers.\n\n### 1. pygeoapi\n\nThe **pygeoapi** framework exposes processes through APIs compliant with\nthe **OGC API - Processes** standard.\n\nhttps://pygeoapi.io/\n\n------------------------------------------------------------------------\n\n### 2. pygeoapi process plugins\n\nRepository:\n\nhttps://github.com/francescoingv/expose-pygeoapi-plugins\n\nPlugins implement the processing logic exposed through pygeoapi.\n\nResponsibilities:\n\n-   validate input/output parameters\n-   forward execution requests to the execution service\n-   collect execution results\n-   format and return results according to **pygeoapi** infrastructure\n\n------------------------------------------------------------------------\n\n### 3. Execution service\n\nRepository:\n\nhttps://github.com/francescoingv/generic-processor-provider\n\nResponsibilities:\n\n-   receive execution requests from plugins\n-   execute configured command‑line programs\n-   manage parameters and runtime environment\n-   return results via HTTP\n\n------------------------------------------------------------------------\n\n### 4. Scientific processing codes\n\nScientific codes are **not part of this repository**.\n\nThey are executed by the execution service using the configured\n`command_line` parameter.\n\nThis design allows:\n\n- independent development of scientific codes\n- flexible deployment\n- reuse of the same execution infrastructure\n\nCurrently supported examples:\n\n- **pybox** – scientific processing model to simulate the dispersals\n  of a gravity-driven pyroclastic density currents (PDC)\n  \n  Repository: https://github.com/silviagians/PyBOX-Web\n  DOI: https://doi.org/10.5281/zenodo.18920969\n\n- **conduit** – scientific processing model for computing the one-dimensional,\n  steady, isothermal, multiphase and multicomponent flow of magma\n  in volcanic conduits\n\n- **solwcad** – scientific processing model to compute the saturation surface\n  H₂O–CO₂ fluids in silicate melts of arbitrary composition\n\n------------------------------------------------------------------------\n\n## Architecture diagram\n\n```mermaid\nflowchart TD\n\nClient[\"Client application\"] --\u003e API[\"pygeoapi (OGC API - Processes)\"]\nAPI --\u003e Plugins[\"pygeoapi process plugins\"]\nPlugins --\u003e Provider[\"generic-processor-provider\"]\nProvider --\u003e Code[\"Scientific processing code (CLI program)\"]\n```\n\n------------------------------------------------------------------------\n\n## Logical workflow\n\n1.  A client sends a processing request to **pygeoapi**.\n2.  **pygeoapi** forwards the request to the appropriate plugin.\n3.  The **pygeoapi plugin** sends the execution request to the\n    **generic processor provider**.\n4.  The provider executes the scientific program.\n5.  Results are returned to the plugin.\n6. **pygeoapi** exposes the result through the OGC API interface.\n\n------------------------------------------------------------------------\n\n## Platform components\n\n| Component | Repository | DOI | Role |\n|-----------|------------|-----|------|\n| processing platform | [expose-pygeoapi-platform](https://github.com/francescoingv/expose-pygeoapi-platform) | https://doi.org/10.5281/zenodo.18892848 | platform architecture |\n| pygeoapi process plugins | [expose-pygeoapi-plugins](https://github.com/francescoingv/expose-pygeoapi-plugins) | https://doi.org/10.5281/zenodo.18892819 | OGC API process implementation |\n| generic processor provider | [generic-processor-provider](https://github.com/francescoingv/generic-processor-provider) | https://doi.org/10.5281/zenodo.18892842 | remote execution service |\n\n------------------------------------------------------------------------\n\n## Related projects\n\nEXPOSE is built upon the pygeoapi framework, which provides the\nimplementation of the OGC API standards and the plugin architecture\nused by this platform.\n\n**pygeoapi**\\\nhttps://github.com/geopython/pygeoapi\\\nDOI: https://doi.org/10.5281/zenodo.5999665\n\n------------------------------------------------------------------------\n\n## Related scientific software\n\nExamples of scientific processing codes exposed through this platform:\n\n- **PyBOX-Web**\n  Repository: https://github.com/silviagians/PyBOX-Web\n  DOI: https://doi.org/10.5281/zenodo.18920969\n  \n------------------------------------------------------------------------\n\n## Citation\n\nIf you use this platform in scientific work, please cite it as:\n\nMartinelli, F. (2026).\n*EXPOSE (EXecutables for OGC API PrOcesses and Scientific Environments) platform*.\nDOI: https://doi.org/10.5281/zenodo.18892848\n\n------------------------------------------------------------------------\n\n## License\n\nThis project is distributed under the MIT License.\n\nSee the LICENSE file for details.\n\n------------------------------------------------------------------------\n\n## Author\n\nFrancesco Martinelli\nIstituto Nazionale di Geofisica e Vulcanologia (INGV)\nPisa, Italy\n\n------------------------------------------------------------------------\n\n## Acknowledgements\n\nDeveloped at the **Istituto Nazionale di Geofisica e Vulcanologia\n(INGV)**.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrancescoingv%2Fexpose-pygeoapi-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrancescoingv%2Fexpose-pygeoapi-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrancescoingv%2Fexpose-pygeoapi-platform/lists"}