Releases: jldz9/InSARHub
Releases · jldz9/InSARHub
v0.2.5
Key updates:
- Network scoring system and modification before interferogram generation. Based on S1 global coherence dataset and weather data
- add quick_overview in mintpy for quality control
- 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
[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/--versionflag - Windows fix:
insarhub-appno longer returns immediately on Windows — setsWindowsSelectorEventLoopPolicyso 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
NoneTypecrash in troposphere correction whenPath.mkdir()was called on an already-resolved path - CLI credential setup: Removed spurious blank first line from
.cdsapircwritten by the interactive credential prompt
v0.2.3 bugfix
v0.2.3
Bug Fixes
- Fixed troposphere correction crash —
Path.mkdir()returnsNone, which was incorrectly assigned and passed to pyaps3 as the weather data directory - Fixed
.cdsapircfile 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-imageendpoint - Fixed
RuntimeWarning: invalid value encountered in castwhen rendering velocity PNG with NaN pixels - Added path traversal protection to
/api/folder-imageendpoint - 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
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-filesoption 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
--stackswith 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 unpackin the parallel download result handler - Fixed NumPy warning
invalid value encountered in castwhen 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
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-stitcheraligned 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 histogramERA5Downloader: Batch ERA5 reanalysis download for MintPy tropospheric correction, MintPy-compatible filenamesclip_hyp3_insar: Clip HyP3 zip outputs to a custom AOI before analysisSlurmjob_Config: Generate SLURM batch scripts for HPC job submissionearth_credit_pool: Load multi-account Earthdata credentials from a pool file
CLI (insarhub)
insarhub download— search, filter, and download SLC scenesinsarhub processor submit/refresh/download/retry/watch/save/credits— full HyP3 job lifecycleinsarhub analyzer prep/run— prepare and run MintPy analysisinsarhub 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
CommandResultpattern shared between CLI and Panel frontend