Skip to main content

FastSAR

License: MIT Python 3.10+

FastSAR forms synthetic aperture radar (SAR) images on x86 CPUs, Nvidia GPUs and Google Cloud TPUs from Python. It reads frequency-domain CPHD files, forms spotlight, stripmap and sliding spotlight images by factorized backprojection, and provides autofocus, interferometry, geolocation, map GeoTIFFs and SICD output.

FastSAR image of the Panama Canal's Pacific entrance from an Umbra spotlight collection

Panama Canal, Pacific entrance (Umbra open data, 2023-07-18): 12,207 by 8,808 pixels in 2.9 s on an Nvidia L4 (warm former, transfers included; float32, -59.9 dB against the float64 reference of precision.md), downsampled. A c4d-highmem-16 CPU instance (16 vCPUs, 8 cores) takes 11.3 s. ISCE3, the fastest open-source code that forms this collection, would take an estimated 4.8 h on that CPU and 27 min on the L4.

Cost per 1000 images against error for FastSAR and five open-source implementations

Cost per 1000 Panama images (October 2026 prices) against error over the lock, port and ship regions, relative to the float64 reference (performance, comparison).

Install

Linux on x86-64 or 64-bit ARM and macOS on Apple silicon, Python 3.10 to 3.13. The CPU kernels compile on first use: with g++ and OpenMP on Linux (Debian and Ubuntu: apt install g++), with Apple's clang on macOS (the command line tools, xcode-select --install, which also serve the Metal backend of ExactFormer on Apple GPUs); the cuda extra needs an Nvidia driver for CUDA 12 and the tpu extra a Cloud TPU VM.

pip install fastsar                  # CPU (and JAX on whatever device it has)
pip install "fastsar[io]"            # io: sarpy for CPHD and SICD
pip install "fastsar[cuda]"          # cuda: CuPy for Nvidia GPUs
pip install "fastsar[tpu]"           # tpu: jax[tpu] for Cloud TPUs
pip install "fastsar[geo]"           # geo: rasterio for GeoTIFFs and DEMs
pip install "fastsar[raw]"           # raw: h5py for the NISAR raw reader
pip install "fastsar[cuda,io,geo]"   # extras combine

From a clone: pip install -e ".[cuda,io]" or uv sync. The CUDA tensor-core kernels (float16, and float32 on compute capability 8.0 and later) need nvcc from the CUDA toolkit; without it float32 runs on the CUDA cores, more slowly. On the CPU set OMP_NUM_THREADS=<physical cores> OMP_PLACES=cores OMP_PROC_BIND=close. Importing fastsar sets XLA_PYTHON_CLIENT_PREALLOCATE=false unless it is already set, so that JAX does not reserve most of a GPU's memory before the CUDA kernels run (performance.md).

Quickstart

The chain below reads a CPHD file and writes a GeoTIFF and a SICD, so it needs pip install "fastsar[io,geo]".

import fastsar
from fastsar import products

out = fastsar.form_cphd('scene_CPHD.cphd')        # mode, grid and window from the file
img = out['image']                                # complex64 [nx, ny] on a ground plane at the scene height
lat, lon, h = products.geolocate(out, 100, 200)   # pixel (100, 200) on the ground
products.write_geotiff('amp.tif', **products.geocode_image(out))   # amplitude on a north-up UTM grid
products.write_sicd('scene.nitf', out)            # complex image with its geometry

examples/chain.py runs this chain from the command line (--simulate needs no data); form_umbra.py and form_capella_stripmap.py form vendor grids.

Supported data, modes and devices

Data Modes Status
Capella CPHD stripmap, spotlight, sliding spotlight checked against vendor SICDs; a 2022 dynamic stripmap is correct near the center only
Umbra CPHD spotlight three open-data collections on the vendor's grid
ICEYE CPHD dwell spotlight formed (28 GB history); not compared with the vendor image
TOA-domain CPHD, raw Level-0 not supported
Simulated echoes stripmap, ScanSAR, TOPS, any track fastsar.stripmap, burst, patches
CPU (cpu) Nvidia GPU (cuda) Cloud TPU (tpu) Any JAX device (jax)
Factorized backprojection C++/OpenMP, AVX-512 or AVX2 CUDA via CuPy Pallas reference program
Precision float32 float32, float16 three-pass (default), single-pass float32, float16
Exact backprojection (ExactFormer) C++/OpenMP, float32 with float64 tile centers CUDA, the same falls back to jax float32, float64 block centers

Polar format (algorithm='pfa') runs as a JAX program on any device.

Documentation

docs/README.md lists every page; start with the processing chain. Measurement records are in sar-accel-study. To cite FastSAR, use CITATION.cff.

Contributing and license

CONTRIBUTING.md explains how to run the tests (GitHub Actions runs the CPU suite; the CUDA and TPU tests run on those machines before a release). MIT license (LICENSE).

Metadata

Release files for fastsar 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastsar 0.1.3
File Size Uploaded
fastsar-0.1.3.tar.gz 297.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastsar 0.1.3
File Interpreter ABI Platform
fastsar-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 516.4 kB

Release files / fastsar-0.1.3.tar.gz

Download URL fastsar-0.1.3.tar.gz
Size 297.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f2c3a99ca1fd42983fe69f29d5c3ae32a9d8d0245a91f7feafffc5568f344156
BLAKE2b-256 checksum
How to use checksums
612a9a71cb5c89abdd3f6b932dea2950ae4deb6af074a65fcac9b2e177d2c476
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / fastsar-0.1.3-py3-none-any.whl

Download URL fastsar-0.1.3-py3-none-any.whl
Size 219.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3354b26b5eec4844d8c73a4e956e339dc301ba99cb1de384947686973622dcff
BLAKE2b-256 checksum
How to use checksums
591e18c1c1f9dd555b8e5c62989845b907eeeb3fd20f108fd51198c095c4840e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release history Release notifications | RSS feed

0.1.4

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page