A modular Python framework for automated InSAR and time-series processing.
Project description
InSARHub
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.
Table of Contents
Web UI
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 — entirely in your browser, with no cloud dependency.
insarhub-app
Open http://localhost:8000 to access the UI.
Features
| Panel | What it does |
|---|---|
| Search & Download | Draw an AOI on the map, search Sentinel-1 SLC stacks, download scenes and precise orbit files |
| Processor | Select interferogram pairs from a network graph, submit to HyP3, monitor job status, and download results |
| Analyzer | Run time-series analysis with configurable steps; view progress live in the log |
| 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.
Installation
InSARHub can be installed using Conda:
conda install insarhub -c conda-forge
Pip:
pip install insarhub
conda install gdal
From 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 .
Requirements
- 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
Usage
Downloader:
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')
-
Download
dl.download()
Processor:
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()
Analyzer
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()
CLI
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]
End-to-end example
# 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 pairs_p*_f*.json from workdir subfolders)
insarhub processor -N Hyp3_InSAR -w /data/bryce submit
# Wait for jobs and download results automatically
insarhub processor -N Hyp3_InSAR -w /data/bryce watch
# Run MintPy time-series analysis
insarhub analyzer -N Hyp3_SBAS -w /data/bryce run
Commands
| 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.
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file insarhub-0.2.1.tar.gz.
File metadata
- Download URL: insarhub-0.2.1.tar.gz
- Upload date:
- Size: 545.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbc754ecf6174aaec474a042e604112001ea72ea9e4abba4e6c1a6e951c5d42d
|
|
| MD5 |
df9b141acd7e8a1f960607ec940746f5
|
|
| BLAKE2b-256 |
9896a76853b31e6146c6aa242703bb9176fb201dc25c612299eb1b0769122578
|
File details
Details for the file insarhub-0.2.1-py3-none-any.whl.
File metadata
- Download URL: insarhub-0.2.1-py3-none-any.whl
- Upload date:
- Size: 552.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f89a06d6ebc5e761217ff93a86bce829e5780efe74179bf15385cea6f4affea
|
|
| MD5 |
9bfdb11c5c313b2a4134a43c7be8539e
|
|
| BLAKE2b-256 |
1b76e7f81396a5386d8caa6062497df414440e99a29a543e336cc9d5de52d5af
|