13 KiB
13 KiB
Phase 1 Stack Generation Smoke Test
Updated: 2026-04-05
Follow-up note:
- MintPy SBAS continuation is now recorded separately in:
notes/PHASE2_MINTPY_SBAS_SMOKETEST.md
Goal
Validate that one LT-1 stack can be transformed from:
- per-scene
tiff + meta.xml + orbit.xml
into:
stripmapStack --nofocuscompatible acquisition directories- a generated stripmap stack work plan
without changing production code yet.
Sample
- group key:
LT1A|STRIP1|HH|DESCENDING|E123.3_N46.1
- dates:
2025011820250315202505102025070520250830
- reference date:
20250510
Commands Used
- Build dry-run stack workspace:
C:\Users\Administrator\.conda\envs\InSAR\python.exe experiments\isce2_sbas_timeseries\scripts\build_lt1_stack_prep.py --manifest-path experiments\isce2_sbas_timeseries\configs\sample_stack_e123p3_n46p1.json
- Materialize LT-1 acquisitions inside
Ubuntu-24.04:
wsl -d Ubuntu-24.04 /home/administrator/miniconda3/bin/conda run -n isce2 python /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/materialize_lt1_stack_scenes.py --stack-manifest /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/stack_input_manifest.json
- Run generated wrapper:
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/run_stripmap_stack_dryrun.sh
- Execute the frozen stack step chain inside
Ubuntu-24.04:
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_01_reference
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_02_focus_split
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_03_geo2rdr_coarseResamp
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_04_refineSecondaryTiming
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_05_invertMisreg
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_06_fineResamp
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_07_grid_baseline
- Regenerate the stack in
interferogramworkflow mode and execute the new pair-processing stage:
C:\Users\Administrator\.conda\envs\InSAR\python.exe experiments\isce2_sbas_timeseries\scripts\build_lt1_stack_prep.py --manifest-path experiments\isce2_sbas_timeseries\configs\sample_stack_e123p3_n46p1.json --workflow interferogram
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/run_stripmap_stack_dryrun.sh
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_generated_stack_runfile_ubuntu2404.sh /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1 run_08_igram
- Prepare MintPy metadata in the dedicated
mintpyenv while bridging the workingisce2Python package:
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/install_mintpy_runtime_ubuntu2404.sh
wsl -d Ubuntu-24.04 bash /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scripts/run_mintpy_with_isce_ubuntu2404.sh prep_isce.py -f "/mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/stack_work/Igrams/*/filt_*.unw" -m /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/stack_work/Igrams/20250118_20250315/referenceShelve/data.dat -b /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/stack_work/baselines -g /mnt/z/Code/Insar_management_system_v2/experiments/isce2_sbas_timeseries/scratch/lt1a_strip1_hh_descending_e123p3_n46p1/stack_work/geom_reference
Confirmed Results
- All 5 acquisitions were materialized into:
scratch/lt1a_strip1_hh_descending_e123p3_n46p1/SLC/YYYYMMDD/
- Each acquisition directory now contains:
YYYYMMDD.slcYYYYMMDD.slc.xmlYYYYMMDD.slc.vrtdata.dat/.dir/.bak
- Example materialized output:
20250510.slc- size:
3262658784bytes
stackStripMap.py --nofocusran successfully far enough to:- discover all 5 acquisitions
- estimate stack baselines
- select interferometric pairs
- generate stack config files
- generate run files
Baseline Snapshot
Relative to reference date 20250510, the generated stack reported:
20250118-199.6873591838194
20250315-89.0330513325973
20250705-561.9056433404087
20250830215.98283570831154
The generated network reported:
- minimum connection degree:
4.0
- number of pairs:
10
Generated Stack Work Products
Under scratch/lt1a_strip1_hh_descending_e123p3_n46p1/stack_work/:
baselines/configs/run_files/pairs.pdf
Generated run files:
run_01_referencerun_02_focus_splitrun_03_geo2rdr_coarseResamprun_04_refineSecondaryTimingrun_05_invertMisregrun_06_fineResamprun_07_grid_baseline
Important Runtime Fixes
matplotlibwas missing from theisce2env.- fixed by installing it with
pipinside the WSLisce2environment
- fixed by installing it with
stackStripMap.pycould not importstripmapStack.Stackby default.- fixed by exporting:
PYTHONPATH=/home/administrator/miniconda3/envs/isce2/share/isce2PATH=/home/administrator/miniconda3/envs/isce2/share/isce2/stripmapStack:$PATH
- fixed by exporting:
- the generated run files now include these prefixes automatically
run_01_referencereachedtoposuccessfully butcreateWaterMask.pyfailed without Earthdata credentials.- root cause:
SWBDdownload requires~/.netrcforurs.earthdata.nasa.gov
- current judgment:
- local DEM is already sufficient for this experiment
- the only missing optional online input is the water-body mask download
- experimental fallback:
scripts/run_generated_stack_runfile_ubuntu2404.shnow auto-generates a synthetic all-landgeom_reference/waterMask.rdr- the helper script is
scripts/create_synthetic_watermask.py
- limitation:
- this fallback preserves stack execution but does not provide a true coastline mask
- root cause:
- LT-1 input preparation now has a shared helper:
backend/app/isce2_pipeline/lt1_input_resolver.py- purpose:
- centralize DEM resolution
- centralize orbit-pool resolution
- centralize LT-1 precise-orbit XML reuse or generation
- compatibility rule:
- this is a refactor of shared input-prep logic
- the original D-InSAR execution path was not removed
run_lt1_dinsar_pipeline.pystill keeps its original public workflow entry and now calls the helper internally
Latest Execution Status
run_01_referencetopocompleted successfully inUbuntu-24.04- local
geom_reference/waterMask.rdrwas synthesized fromshadowMask.rdr
run_02_focus_split- completed successfully
- generated configs were effectively no-op under the current
--nofocuscontract
run_03_geo2rdr_coarseResamp- completed successfully in
Ubuntu-24.04 - generated
offsets/<date>/range.offandazimuth.offfor:20250118202503152025070520250830
- generated
coregSLC/Coarse/<date>/YYYYMMDD.slcproducts for:20250118202503152025070520250830
- runtime observation:
- this stage is long-running and mostly silent in the log file
- progress is easier to confirm from product directories than from stdout
- completed successfully in
run_04_refineSecondaryTiming- completed successfully in
Ubuntu-24.04 - generated pair-level
refineSecondaryTiming/pairs/<pair>/misreg.*for all 10 pairs - log observation:
Bad match at level 1andcorrelation errorappeared in the log- despite that noise, the stage exited
0and downstream inversion succeeded
- completed successfully in
run_05_invertMisreg- completed successfully in
Ubuntu-24.04 - generated date-level
refineSecondaryTiming/dates/<date>/misreg.*for:2025011820250315202505102025070520250830
- inversion observation:
- design matrix was reported as full rank
- RMSE in azimuth was
0.002341399255443996pixels - RMSE in range was
0.0027480408593210303pixels
- completed successfully in
run_06_fineResamp- completed successfully in
Ubuntu-24.04 - generated fine coregistered
merged/SLC/<date>/YYYYMMDD.slcfor all 5 dates - each merged date directory now also includes:
referenceShelve/secondaryShelve/
- completed successfully in
run_07_grid_baseline- completed successfully in
Ubuntu-24.04 - generated
merged/baselines/<date>/baseline grids for all 5 dates - each date-level baseline directory now includes:
- raw baseline raster
.xml.vrt.full.vrt
- completed successfully in
build_lt1_stack_prep.py --workflow interferogram- now regenerates the official stripmapStack command in
interferogrammode instead of hard-codingslc - regenerated run files now include:
run_08_igram
- now regenerates the official stripmapStack command in
run_08_igram- completed successfully in
Ubuntu-24.04 - generated 10 pair directories under
stack_work/Igrams/ - each pair now includes:
- wrapped interferogram
.int - amplitude
.amp - filtered interferogram
filt_*.int - coherence
filt_*.cor - unwrapped phase
filt_*_snaphu.unw - connected components
*.unw.conncomp referenceShelve/data.*
- wrapped interferogram
- completed successfully in
- MintPy runtime bootstrap
scripts/install_mintpy_runtime_ubuntu2404.shcreated a dedicated WSL env:mintpy
- verified commands:
smallbaselineApp.pyprep_isce.py
- installed MintPy version:
1.6.2
prep_isce.py- first run in the clean
mintpyenv failed becausemintpy.utils.isce_utilsimportsisce - experimental resolution:
scripts/run_mintpy_with_isce_ubuntu2404.shnow bridges only the top-leveliscepackage from the WSLisce2env into themintpyenv
- result:
prep_isce.pycompleted successfully over the LT-1stripmapStackoutputs- geometry
.rscfiles were written understack_work/geom_reference/ - observation
.rscfiles were written for all 10 unwrapped interferograms understack_work/Igrams/*/
- first run in the clean
Current Boundary
This smoke test confirms:
- LT-1 scenes can be materialized into
stripmapStackacquisition directories - the official stripmap stack driver can build the stack work plan over those LT-1 products
- the generated
run_01torun_07chain can complete offline inUbuntu-24.04over the sample LT-1 stack - local DEM plus local orbit data are sufficient for this stack-preparation stage
- Earthdata credentials are not a hard blocker for this experiment track because the wrapper can recover
run_01_referencewith a synthetic all-landwaterMask - the same LT-1 stack can be regenerated in
interferogramworkflow mode to produce 10 filtered and unwrapped pair products - MintPy metadata preparation is now viable through the dedicated
mintpyenv plus the explicit ISCE bridge wrapper
This smoke test does not yet confirm:
smallbaselineApp.pyexecution beyondprep_isce.py- final time-series or velocity products
Follow-up status:
- both of the above were later confirmed in:
notes/PHASE2_MINTPY_SBAS_SMOKETEST.md
Next Tasks
- Keep this note focused on stack-generation findings only.
- Use
notes/PHASE2_MINTPY_SBAS_SMOKETEST.mdfor MintPy SBAS runtime conclusions. - Promote the stable runtime and artifact contract into backend workflow code and
docs/.