##
**sarpyx** is a specialized Python toolkit for **Synthetic Aperture Radar (SAR)** processing with tight integration to ESA **SNAP**. It focuses on reproducible pipelines, fast tiling workflows, and advanced research features like **sub-aperture decomposition**.
## Highlights
- SNAP GPT integration with configurable graphs and operator chaining.
- Sub-aperture decomposition for squint-angle diversity and motion sensitivity.
- Parallel tiling and batch processing for large product volumes.
- Geocoded outputs ready for GIS and downstream ML.
- Extensible architecture compatible with `rasterio`, `geopandas`, and `pyproj`.
## Install
For container workflows, use the Docker Compose CLI plugin (`docker compose`) with full commands:
```bash
docker compose version
make recreate
```
Using uv (recommended)
```bash
uv sync --extra copernicus
```
For development installation with extras:
```bash
uv sync --extra copernicus --extra dev --extra test --extra docs
```
Using pip (editable)
```bash
python -m pip install -e .
```
## Docs
See `docs/user_manual.md` for full CLI usage and end-to-end workflows.
## Container grid configuration
At startup the container no longer generates the grid. Mount a prebuilt grid file and expose it via `GRID_PATH`:
```bash
export GRID_PATH=./grid/grid_10km.geojson
make check-grid # validates GRID_PATH exists (or ./grid/grid_10km.geojson)
make recreate # runs compose only after preflight passes
```
For direct docker runs, pass the file path used inside the container:
```bash
export GRID_PATH=/workspace/grid/grid_10km.geojson
docker run --rm -e GRID_PATH=$GRID_PATH ...
```
You can also pass `--grid-path` to the `worldsar` CLI command.
##
**With Love By:** Roberto Del Prete