ESA SNAP GPT for SAR workflows, installable with conda

Hi everyone,

I wanted to share a small weekend project that came out of a recurring pain point in my own SAR workflows: installing and using ESA SNAP gpt reproducibly in headless environments, servers, CI, and Jupyter notebooks.

I have created an unofficial conda package:

esa-snap-s1tbx-gpt

Repository: https://github.com/pmuguda/snap-gpt-conda
Documentation: https://pmuguda.github.io/snap-gpt-conda/
Conda package: https://anaconda.org/sarforge/esa-snap-s1tbx-gpt

It repackages the official ESA SNAP installers so that the SNAP Graph Processing Tool (gpt) and the Sentinel-1/SAR stack can be installed directly from conda:

conda create -n snap13 -c sarforge -c conda-forge esa-snap-s1tbx-gpt=13.0.0
conda activate snap13
gpt -h

The package is focused on headless SAR processing. It includes the SNAP engine, gpt, Sentinel-1 Toolbox (s1tbx), Radar/Polarimetric Toolbox (rstb), and shared SAR/microwave components. Optical toolboxes such as s2tbx and s3tbxare intentionally pruned to keep the package smaller and focused on SAR/GPT workflows.

Current published build matrix:

SNAP version linux-64 win-64 osx-arm64
9.0.0 yes no no
10.0.0 yes no no
11.0.0 yes no no
12.0.0 yes no no
13.0.0 yes yes yes

Older SNAP versions are kept because many SAR workflows, graph XML files, and published methods depend on a specific SNAP release. The package version follows the SNAP version directly, while conda build numbers are used only for packaging fixes.

It should also work with pyroSAR auto-detection, because the normal SNAP layout is preserved and the snap/gptlaunchers are placed on PATH.

Example:

from pyroSAR.examine import ExamineSnap

snap = ExamineSnap()
print(snap.gpt)

A few notes:

  • This is unofficial packaging and is not affiliated with or endorsed by ESA.

  • SNAP itself remains GPL-3.0, developed by ESA and contributors.

  • The packaging scripts/workflows are Apache-2.0.

  • This package does not provide SNAP’s old snappy/jpy Python-Java bridge. The intended usage is through gpt, subprocess calls, graph XML, notebooks, or pyroSAR.

I also want to acknowledge prior work from the snap-contrib ecosystem, especially snap-contrib/snap-conda, which showed that SNAP through conda was possible for unattended/headless use. This package differs by narrowing the scope to headless gpt plus the SAR stack, preserving multiple SNAP versions for reproducibility, keeping a pyroSAR-friendly layout, and publishing a documented install matrix for Linux, Windows, and Apple Silicon macOS where storage allows.

I would be very interested in feedback from SNAP and SAR users, especially around:

  • whether this helps with reproducible SNAP/GPT workflows;

  • whether the retained platform/version matrix makes sense;

  • any missing runtime checks that should be added;

  • whether this would be useful in teaching, CI, cloud, or notebook environments.

If you try it and it helps, a star on the repo would also help others discover it:

https://github.com/pmuguda/snap-gpt-conda

Thanks!

2 Likes