Skip to content

Releases: jldz9/InSARHub

v0.2.5

21 Apr 19:36

Choose a tag to compare

Key updates:

  1. Network scoring system and modification before interferogram generation. Based on S1 global coherence dataset and weather data
  2. add quick_overview in mintpy for quality control
  3. re-oragnize fastaoi into seperate sub modules

Pair Quality Database:

  • DB no longer rebuilds when pair selection parameters change (dt_max, pb_max, min_degree, etc.) — only rebuilds when the scene set actually changes
  • Removing scenes from the network no longer triggers a rebuild; the existing DB already covers all subsets
  • DB now stores _scene_names for exact scene-set comparison instead of relying on count alone
  • Backward compatible: old DBs without _scene_names fall back to count comparison and migrate on the next rebuild
    Performance
  • S1 global coherence prefetch is now parallelized in two phases: season tile S3 downloads run concurrently (up to 4 threads), followed by per-pair numpy coherence evaluation in parallel (8 threads). Expected speedup for 32,000+ pairs: 4–6× on first run, with warm cache unchanged

select_pairs: Avoid Bad Acquisition Days (avoid_low_quality_days)

  • Default changed to True — bad-weather scenes are excluded from the network by default
  • Default precipitation threshold tightened to 25 mm (3-day accumulation)
  • Weather and snow data fetched during bad-scene filtering is now seeded directly into the pair quality cache — the scorer reuses it instead of making a second round of API calls, eliminating duplicate fetches entirely
  • select_pairs returns a prefetch_cache containing the pre-fetched weather/snow keyed by stack, which _run_folder_select_pairs writes into each subfolder's CacheManager before scoring begins
  • Status message "Building weather/snow cache — P{path}/F{frame}…" shown in the GUI while seeding so the user can see progress during long cache writes
    main
    ·
    v0.2.5
    1 paren

Full Changelog: v0.2.4...v0.2.5

v0.2.4

25 Mar 19:28

Choose a tag to compare

[0.2.4] - 2026-03-25

New Features

  • CLI & API: select_pairs() is now a pure computation method — no file I/O inside the class. File writing (JSON, PNG, workflow marker) has been moved to the CLI and API call sites, keeping the core logic reusable and testable
  • Path handling: All functions that accept path arguments now call .expanduser().resolve(), enabling ~ tilde paths everywhere
  • WebUI: Added documentation button in the General Settings panel (bottom-left) linking to the InSARHub docs site
  • WebUI (insarhub-app): Auto-creates the working directory if it does not exist when -w <path> is passed
  • CLI (insarhub-app): Added -v / --version flag
  • Windows fix: insarhub-app no longer returns immediately on Windows — sets WindowsSelectorEventLoopPolicy so uvicorn blocks correctly

Bug Fixes

  • WebUI Processor: Unchecking dry-run after a completed run no longer leaves the button stuck at "✓ Done" — the status resets to idle on checkbox change
  • WebUI Processor: Clicking "✓ Done" after a real (non-dry-run) submit now correctly closes the modal
  • WebUI Processor: "✓ Done" button now shows a pointer cursor on hover
  • Analyzer: Fixed NoneType crash in troposphere correction when Path.mkdir() was called on an already-resolved path
  • CLI credential setup: Removed spurious blank first line from .cdsapirc written by the interactive credential prompt

v0.2.3 bugfix

21 Mar 02:08

Choose a tag to compare

v0.2.3

Bug Fixes

  • Fixed troposphere correction crash — Path.mkdir() returns None, which was incorrectly assigned and passed to pyaps3 as the weather data directory
  • Fixed .cdsapirc file created by CLI prompt having a blank first line
  • Fixed dry run checkbox leaving the submit button stuck at "✓ Done" after job completion
  • Fixed "✓ Done" button not closing the modal after a real (non-dry-run) submission
  • Fixed missing pointer cursor on "✓ Done" button
  • Fixed pixel hover value lookup to use Mercator projection formula instead of linear WGS84 interpolation
  • Fixed unclosed file handle in /api/folder-image endpoint
  • Fixed RuntimeWarning: invalid value encountered in cast when rendering velocity PNG with NaN pixels
  • Added path traversal protection to /api/folder-image endpoint
  • Fixed polling interval leak in frontend job status watcher

Documentation

  • Home page: corrected package name from "InSAR Script" to "InSARHub", added Web UI overview screenshot and button, clarified WSL2 support
  • Header: added Email and Discord icon buttons next to GitHub badge
  • Header: reduced excess whitespace in GitHub badge

Features

  • Added yellow click marker on the map when a time-series pixel is selected
  • Click marker renders above the velocity overlay layer

v0.2.1 GUI release

20 Mar 02:24

Choose a tag to compare

v0.2.1

Web UI

  • Velocity map alignment fixed — corrected a projection error where UTM-projected MintPy outputs were reprojected to EPSG:3857 using wrong source CRS, causing the velocity overlay to appear shifted relative to the basemap
  • Time-series click marker — clicking a pixel on the velocity map now shows a yellow highlight point to indicate the selected location
  • Per-job analyzer status — the Stop button and run status in the Analyzer panel are now isolated per job folder; switching folders no longer bleeds status across jobs
  • Drawer auto-hides on map click — the job drawer collapses automatically when clicking on the map to extract a time-series

Downloader

  • Added --orbit-files option to download precise orbit files alongside scenes
  • Added granule name input: users can now supply a file, list, or string of granule names for custom scene searches
  • Fixed --stacks with multiple entries (e.g. 28:107 28:112) being incorrectly deduplicated by the ASF server
  • Orbit download now falls back to ASF server automatically if the CDSE server is unavailable
  • Fixed duplicate EOF file detection by checking acquire time

Bug Fixes

  • Fixed download error not enough values to unpack in the parallel download result handler
  • Fixed NumPy warning invalid value encountered in cast when rendering velocity colormaps with NaN pixels
  • Pinned CI to Python 3.12 to avoid instability with 3.13/3.14

Documentation

  • Completed Web UI documentation: Search & Download, Processor, Analyzer, and Results Viewer pages
  • Added figures for all UI panels with light/dark mode variants

v0.1.0 Init Release

09 Mar 18:46

Choose a tag to compare

Changelog

0.1.0 - 2026-03-06

Initial Release

First public release of InSARHub — a modular Python framework for automated InSAR time-series processing.


Features

Downloader

  • ASF_Base_Downloader: Search and download Sentinel-1, ALOS, and NISAR SLC data via the ASF Search API
  • Spatial filtering with bounding box, WKT, or GeoJSON/shapefile AOI
  • Post-search filtering by date range, path/frame, flight direction, polarization, season, coverage, and scene count
  • Scene footprint visualization with basemap overlay (footprint())
  • DEM download via dem-stitcher aligned to search footprints
  • Multi-threaded download with Ctrl+C cancellation and partial-file cleanup
  • S1_SLC: Sentinel-1 SLC specialized downloader with orbit file (sentineleof) support

Processor

  • Hyp3_InSAR: Submit, monitor, download, retry, and persist HyP3 InSAR jobs
  • Multi-account credential pool with automatic credit-aware job rotation
  • Batch job persistence (save/load JSON) for resumable workflows
  • watch() mode: polls job status and downloads succeeded outputs continuously
  • Retry failed jobs with automatic timestamp-stamped save files

Analyzer

  • Hyp3_SBAS: End-to-end MintPy SBAS time-series analysis from HyP3 outputs
  • Automatic unzip, file collection, common-overlap clipping, and MintPy config generation
  • Optional pyAPS tropospheric correction with CDS API credential management
  • cleanup() to remove temporary files after processing

Utilities

  • select_pairs: Temporal and perpendicular baseline filtering with configurable targets and tolerances
  • Local baseline computation (zero network calls for Sentinel-1 and ALOS)
  • API fallback with threaded fetching for products without local baseline data
  • Connectivity enforcement: minimum/maximum degree per scene with force-connect option
  • plot_pair_network: Network visualization with per-scene connection histogram
  • ERA5Downloader: Batch ERA5 reanalysis download for MintPy tropospheric correction, MintPy-compatible filenames
  • clip_hyp3_insar: Clip HyP3 zip outputs to a custom AOI before analysis
  • Slurmjob_Config: Generate SLURM batch scripts for HPC job submission
  • earth_credit_pool: Load multi-account Earthdata credentials from a pool file

CLI (insarhub)

  • insarhub download — search, filter, and download SLC scenes
  • insarhub processor submit/refresh/download/retry/watch/save/credits — full HyP3 job lifecycle
  • insarhub analyzer prep/run — prepare and run MintPy analysis
  • insarhub utils select-pairs/plot-network/era5/clip — utility commands
  • Workdir (-w) and credential pool (--credential-pool) flags across all subcommands

Core

  • Auto-registering component registry (Downloader, Processor, Analyzer)
  • InSAREngine: high-level pipeline runner with skip flags and watch mode
  • Unified CommandResult pattern shared between CLI and Panel frontend