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 3.8 s on an Nvidia L4 (warm former, transfers included; float32, -59.9 dB against float64 exact backprojection), 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

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[cuda,io,geo]"   # extras combine

From a clone: pip install -e ".[cuda,io]" or uv sync. The CPU kernels need g++ with OpenMP and compile on first use; the float16 CUDA kernel needs nvcc. On the CPU set OMP_NUM_THREADS=<physical cores> OMP_PLACES=cores OMP_PROC_BIND=close.

Quickstart

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. A citation file will come with the preprint.

Contributing and license

CONTRIBUTING.md explains how to run the tests. MIT license (LICENSE).

Metadata

Release files for fastsar 0.1.0

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.0
File Size Uploaded
fastsar-0.1.0.tar.gz 211.3 kB Details

Built distribution (wheel)

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

Total release size: 375.3 kB

Release files / fastsar-0.1.0.tar.gz

Download URL fastsar-0.1.0.tar.gz
Size 211.3 kB
Tags Source
SHA-256 checksum
How to use checksums
91d41ac6deaac8d53b9f5ad69968d24a4f65a3c3c2bca8acc5b9185b89b5cd7c
BLAKE2b-256 checksum
How to use checksums
9e42957e09766a1eedd926745f45a2c44bd2e31027ee2ee887e2d4ac8e9606fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL fastsar-0.1.0-py3-none-any.whl
Size 164.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
285e3b79fbce549c0ba485ae06ddbcf061fcea98fb842ef1f25726aa1b7b62d9
BLAKE2b-256 checksum
How to use checksums
6a1c4c89ef355679c072c1b9d2a58d3ac446c26fdcfeba3aa5e1cfd1a3233008
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

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