InSARHub is a modular Python framework for automated InSAR and time-series processing.
The primary goal of this package is to provide a streamlined and user-friendly InSAR processing experience across multiple satellite products.
InSARHub includes a self-hosted web interface that covers the full InSAR workflow — from scene search and download through interferogram processing to time-series analysis.
insarhub-appOpen http://localhost:8000 to access the UI.
| Panel | What it does |
|---|---|
| Search & Download | Draw an AOI on the map, search Sentinel-1 SLC stacks, download scenes and precise orbit files |
| Processor | Build and edit the interferogram pair network with quality scoring; view S1 coherence decay maps; submit to HyP3; monitor and download results |
| Analyzer | Run MintPy time-series analysis step by step; edit the network post-ingest; inspect diagnostic overview layers |
| Results Viewer | Overlay the velocity map on the basemap; click any pixel to plot its displacement time series |
All data stays on your machine — InSARHub runs a local FastAPI server and delivers a modern React frontend directly in your browser.
See the Web UI documentation for a full walkthrough.
InSARHub can be installed using Conda:
conda install insarhub -c conda-forgePip:
conda install gdal -c conda-forge
pip install insarhubFrom source:
git clone https://github.com/jldz9/InSARHub.git
cd InSARHub
conda env create -f environment.yml -n insarhub_dev
conda activate insarhub_dev
pip install -e .- Python >=3.11,<3.13
- numpy <2.0
- proj >=9.4
- gdal >=3.8
- sqlite >=3.44
- mintpy
- asf_search
- colorama
- contextily
- dem_stitcher
- hyp3_sdk
- rasterio >=1.4
- sentineleof
- pyproj
- fastapi
- uvicorn
- python-multipart
from insarhub import Downloader-
View available downloaders
Downloader.available()
-
Create downloader
dl = Downloader.create('S1_SLC', intersectsWith=[-113.05, 37.74, -112.68, 38.00], start='2020-01-01', end='2020-12-31', relativeOrbit=100, frame=466, workdir='path/to/dir')
-
Search
results = dl.search()
-
Filter
filter_result = dl.filter(start='2020-02-01')
-
Select interferogram pairs
from insarhub.utils import plot_pair_network pairs, baselines, scene_bperp = dl.select_pairs(dt_max=96, pb_max=150) fig = plot_pair_network(pairs, baselines, scene_bperp) fig.show()
-
Download
dl.download()
from insarhub import Processor-
View available processors
Processor.available()
-
Create Processor
processor = Processor.create('Hyp3_InSAR', workdir='/your/work/path', pairs=pairs)
-
Submit Jobs
jobs = processor.submit()
-
Refresh Jobs
jobs = processor.refresh()
-
Download Succeeded Jobs
processor.download()
from insarhub import Analyzer-
View available analyzers
Analyzer.available()
-
Create Analyzer
analyzer = Analyzer.create('Hyp3_SBAS', workdir="/your/work/dir")
-
Prepare data
analyzer.prep_data()
-
Run time-series analysis
analyzer.run()
InSARHub includes a command-line interface for running the full pipeline without writing Python code, suitable for HPC batch jobs and scripted workflows.
insarhub <command> [options]# Search scenes and select interferogram pairs
insarhub downloader -N S1_SLC \
--AOI -113.05 37.74 -112.68 38.00 \
--start 2020-01-01 --end 2020-12-31 \
--stacks 100:466 \
-w /data/bryce \
--select-pairs
# Submit pairs to HyP3 (auto-reads stack_p*_f*.json from workdir subfolders)
insarhub processor -N Hyp3_InSAR -w /data/bryce submit
# Wait for jobs and download results automatically
insarhub processor -w /data/bryce watch
# Run MintPy time-series analysis
insarhub analyzer -N Hyp3_SBAS -w /data/bryce run| Command | Description |
|---|---|
insarhub downloader |
Search scenes, select interferogram pairs, and download data |
insarhub processor |
Submit and manage InSAR processing jobs |
insarhub analyzer |
Run time-series analysis on processed interferograms |
insarhub utils |
Helper utilities (pair selection, network plot, SLURM, ERA5, clip) |
Use insarhub <command> --help for full option details, or see the CLI Reference.