Skip to content

Releases: insarlab/MintPy

Version 1.6.1

31 Jul 08:39
f7ac98f
Compare
Choose a tag to compare

Cut a release for the 2024 EarthScope InSAR short course (ISCE+).

Highlights

Maintenance - bugfixes

  • iono_split_spectrum: hardwire dset while inverting for iono TS by @yunjunz in #1239
  • prep_hyp3: skip relative_orbit, start/stopUTC for isce2_burst products by @yunjunz in #1200
  • readfile.read_snap_dim: more tolerant exaction on DATE12 by @ssharifi1994 in #1208

Maintenance - dependency, tests and documentation

What's Changed

New Contributors

Full Changelog: v1.6.0...v1.6.1

Version 1.6.0

09 May 12:29
feae339
Compare
Choose a tag to compare

Highlights

  • multiple GNSS sources support by @rzinke, @yunjunz in #1173
    • rename GPS to GNSS in all related code/comments/docs
    • support the following new GNSS solution sources (in addition to the default UNR), including data downloading and reading, via the view.py --gnss-source option
      • ESESES from JPL/SOPAC
      • JPL-SIDESHOW from JPL
      • GENERIC for other undefined source format
    • refactor the objects.gnss.py into parent/child classes
    • behavior changes include:
      • default local file dir changed from GNSS to GNSS-{SOURCE}
      • default CSV file changed from gnss_{COMPONENT}.csv to gnss_{COMPONENT}_{SOURCE}.csv
  • integrate ionospheric correction from isce2 stack processors into smallbaselineApp by @yunjunz in #1172
    • add iono_split_spectrum script to invert and correct for the ionosphere in time-series
    • add correct_ionosphere step in smallbaselineApp with the following new template options:
      • mintpy.ionosphericDelay.method
      • mintpy.ionosphericDelay.excludeDate
      • mintpy.ionosphericDelay.excludeDate12
  • view and tsview: support scatter plot style via --style option by @falkamelung, @yunjunz in #1146, #1157
  • improved UTM coordinate supports:
    • support GNSS-related options in view by @forrestfwilliams in #1153
    • add utils0.epsg_code2utm_zone() by @yunjunz in #1159
    • use metadata LAT/LON_REF1/2/3/4 in UTM by @yunjunz in #1161. Now all *lat/lon* style metadata represent lat/lon in degree for WGS84 coordinates and northing/easting in meters for UTM coordinates.
    • ensure a single output UTM zone in utils0.latlon2utm() by @yunjunz in #1177

What's Changed

  • modify_network: add --ex-date12 option by @yunjunz in #1151
  • add HDF-EOS5 metadata (beam_swath, relative_orbit, startUTC, stopUTC) for HyP3 products by @forrestfwilliams in #1180
  • prep_nisar: update for changes in NISAR GUNW products by @mirzaees in #1158
  • read/load support for isce2/alos2App dense offset by @yunjunz in #1143
  • autoPath for alosStack: supp custom multilook number + ionospheric phase/coherence by @yunjunz in #1150
  • utils0.incidence_angle: read from metadata directly if available for dimension==0 by @taliboliver in #1152
  • image_stitch: update REF_Y/X after mosaicking in the output file by @yunjunz in #1156
  • objects.sensor: add orbit_inclination and repeat_cycle for all sensors by @yunjunz in #1181

Maintenance

  • update HyP3 example dataset RidgecrestSenDT71 for the latest metadata from ASF HyP3 system at April 2024 by @forrestfwilliams in #1182
  • tropo_pyaps3: use local GAM files with larger SNWE if available to further avoid re-downloading @yunjunz in #1164
  • bugfix for coord.lalo2yx() when lat/lon have diff sizes by @yunjunz in #1160
  • bugfix for dem_error on the step func initiation by @yunjunz in #1186
  • bugfix for view.py numInvIfgram.py for hyp3 products by @yunjunz in #1187
  • objects.conncomp.plot_bridge: improved memory usage by @ehavazli in #1155
  • replace setup.py with pyproject.toml for code installation by @yunjunz in #1129
  • replace miniconda with miniforge for dev installation note and testing by @yunjunz in #1139, #1148
  • fix typo in generate_mask.py example usage by @mohseniaref in #1144
  • ignore contributions by bots in release notes by @yunjunz in #1148

Full Changelog: v1.5.3...v1.6.0

Version 1.5.3

23 Nov 12:47
c7c9ca4
Compare
Choose a tag to compare

Highlights

What’s Changed

  • view.prep_slice(): support quoted lists of characters as inputs by @yunjunz in #1077
  • view: add --scalebar-linewidth option by @yunjunz in #1111
  • view: allow unit change when viewing seasonal time functions by @bbuzz31 in #1084
  • plot_network: check nan values of coh/bperp in kept interferograms by @yunjunz in #1108
  • mintpy.geocode.laloStep: support single value input by @yunjunz in #1075
  • readfile.read_gdal: switch back to gdal kwargs to leverage its subsetting capability by @scottstanie in #1072
  • readfile: support GDAL int8 dtype by @yunjunz in #1083
  • subset: support hdf5 <--> binary by @yunjunz in #1076
  • utils0.utm2latlon(): allow coordinates outside of the normal range of a UTM zone by @swdmike in #1107

Maintenance - Bugfix

  • bugfix for mintpy.network.aoiYX/LALO options by @yunjunz in #1103
  • fix np.abs(dtype) bug due to numpy behavior change in simulation/fractal by @yunjunz in #1120

Maintenance - Documentation

  • Installation: use brew solution for the arg-complete setup on mac/bash by @yunjunz in #1069
  • CONTRIBUTING: update comments on pre-commit by @yunjunz in #1087
  • dir_structure: ppdate URL for HyP3 sample notebook by @hjkristenson in #1113

Maintenance - Dependency

New Contributors

Full Changelog: v1.5.2...v1.5.3

Version 1.5.2

09 Aug 14:14
29d901d
Compare
Choose a tag to compare

Cut a release for the 2023 EarthScope InSAR short course (ISCE+).

Highlights

  • UTM and lat/lon coordinates conversion support via the utm package by @yunjunz in #1052, #1053
  • timeseries2velocity: add --polyline option to estimate linear velocity changes by @yunjunz in #999
  • diff: support unw/offset - timeseries and timeseries - velocity by @yunjunz and @yuankailiu in #1011, #1018
  • euler_pole: add PMM plotting functions by @yuankailiu in #935
  • initial NO_DATA_VALUE support via readfile.auto_no_data_value() by @yunjunz in #962

What's Changed

Maintenance

  • circleci: replace miniconda3 with mambaforge with 2X speedup by @yunjunz in #996
  • mask: replace --threshold with --vmin/vmax by @yunjunz in #1009
  • numpy: replace expired numpy dtype deprecations (cont.) by @yjzhenglamarmota in #960
  • resample: refactor default output step size calculation by @yunjunz in #997
  • tsview/plot_tran*/plot_coh*_mat*: simplify object input args by @yunjunz in #982

Maintenance - Bugfixes

  • remove the extra half-pixel shift while converting Y/X_FIRST between gdal and mintpy by @sssangha in #1034
  • utils0.median_abs_deviation(): divide by scale instead of multiply by @yi-chingchen in #946
  • closure_phase_bias: bring back spatial referencing for ARIA while calc sequential closure phase by @yunjunz in #1063
  • cluster.split_box2sub_boxes: bugfix for tiny last step by @yunjunz in #1024
  • gamma: various bugfixes in readfile and geocode for gamma products by @yunjunz in #1044
  • hdfeos5: calc/write latitude/longitude if missing in geometry file by @yunjunz in #1050
  • utils.plot: fix _tkinter.TclError via plt.switch_backend('Agg') by @falkamelung in #947
  • view: fix referencing error while read unwrapPhase* in 2D w/ multilook by @yunjunz in #956
  • timeseries_rms: bugfix for run_or_skip and *RMS.deramp = no by @yunjunz in #970
  • isce_utils.get_processor(): use *.track.xml file to identify alosStack/2App by @yunjunz in #998
  • readfile.read_attribute: translate DATA_TYPE ci2 to float32 for roipac by @yunjunz in #1064
  • save_gdal: bugfix for boolean type by @yunjunz in #1024
  • spatial_filter: fix the pad_width integral type error for double_difference option by @yunjunz in #1015
  • unwrap_error_phase_closure: fix numpy.random.choice error and zero step size bug by @yunjunz in #989, #1067

Maintenance - Documentation

  • README/badge: flat-square style + docker status + conda download by @yunjunz in #948
  • add doc string description for defaults/objects/simulation/utils sub-modules by @yunjunz in #1005
  • installation: add tab completion sub-section by @yunjunz in #1065
  • typo fixes by @bjmarfito in #976, #978

Maintenance - Dependency

New Contributors

Full Changelog: v1.5.1...v1.5.2

Version 1.5.1

04 Jan 04:59
4e88f08
Compare
Choose a tag to compare

This is a maintenance release for bug fixes.

  • improved closure_phase_bias: 1) remove spatial referencing for better physical presentation and robustness; 2) use wrapPhase if available to remove the filtering effect (#922 by Yujie Zheng)
  • temporal_filter: add a median filter from scipy via -f / —filter option (#943)
  • I/O improvements:
    • image_math: support multiple input files and input file overwrite (#936)
    • save_gbis: support non-velocity dataset from the velocity file (#916 by Bryan Marfito)
  • dependency: drop defusedxml (#915)
  • improved documentation on the installation (#923, #939)
  • remove the unused legacy/los2enu.py (#943)
  • bug and style fixes: including updates for the expired deprecations of numpy-1.24 (#914, #934, #940, #942, #943)

Contributors

  • Zhang Yunjun
  • Yujie Zheng
  • Bryan Marfito
  • Yuan-Kai Liu

Full Changelog: v1.5.0...v1.5.1

Version 1.5.0 - responsive command line interface

19 Nov 01:17
93d769b
Compare
Choose a tag to compare

New Features

  • responsive command line interface (CLI) via lazy imports of the mintpy.cli sub-module (#828, #854 by A. Valentino & Z. Yunjun). The new mintpy.cli sub-module contains all the CLI-related functionality and provides a significant speedup for all command line interactions, e.g. the help message and arguments checking.
  • switch the source code structure to the standard src/mintpy layout (#903, by Z. Yunjun & S. Staniewicz)
  • plate_motion refactoring (#851, #858, #868, #906 by Y. K. Liu & Z. Yunjun):
    • add mintpy.objects.euler_pole for plate motion calculation and conversion.
    • drop the dependency on astropy and platemotion.
    • switch the default local coordinate translation from ECEF from sphere to spheroid.
    • support azimuth output
    • renamed from bulk_plate_motion to plate_motion
  • timeseries2velocity: save residue and intercept dataset (#835)
  • dem_error: bugfix on the phase velocity minimization (#875, #890, #902, #905, by Z. Yunjun & S. Mirzaee):
    • change cutoff cond from 1e-15 to 1e-8 in scipy.linalg.lstsq() to avoid occasionally abnormal high residue.
    • remove the all-zero column in the design matrix, to avoid occasionally high fitting residue.
  • IO & utility:
    • objects.timeseries.read: auto-switch between array / single indexing to speedup (#851)
    • load_data: support azimuth angle file for ASF HyP3 product (#865)
    • readfile.read_attribute: allow ENVI files created with SUFFIX=ADD (#841 by S. Staniewicz)
    • save_hdf5eos: calculate data_footprint for radar-coded dataset (#833 by A. Terrero)
    • save_roipac: support non-velocity dataset from the velocity file (#874 by B. Marfito)
    • geocode: copy dataset units, such as from velocity.h5 file (#910)
    • constants: move from mintpy.objects to the root mintpy level (#911)
  • dependency change:
  • bugs fix (#842, #843, #849, #851, #853, #860, #864, #871, #879, #883, #888, #901)

Technical Improvements

  • add pre-commit hook (#852, #856, #866, #881, #907)
  • add dependabot to auto-update GitHub Actions (#893, #894, #895, #896, #897, #898, #899)
  • enable building distributions for PRs by splitting it from upload to PyPI (#893)
  • more unit tests for dem_error, euler_pole
  • delete obsolete mintpy/legacy/gui folder (#846)

Contributors

  • Zhang Yunjun
  • Antonio Valentino
  • Yuan-Kai Liu
  • Sara Mirzaee
  • Scott Staniewicz
  • Bryan Marfito
  • Brett Buzzanga
  • Alfredo Terrero
  • Jiawei Li
  • Mohammad Mohseni Aref

Full Changelog: v1.4.1...v1.5.0

Version 1.4.1

16 Aug 07:03
36a0835
Compare
Choose a tag to compare

Cut a release to match with Stephenson et al. (2022).

Technical Improvements

  • automate the PyPI publishing with GitHub Actions (#827)
  • remove openmp from the dependency list (#825)
  • bugfixes (#825, #826, #829)

Contributors

  • Zhang Yunjun

Version 1.4.0

05 Aug 00:35
68cdbbe
Compare
Choose a tag to compare

Cut a release for the 2022 UNAVCO InSAR short course (ISCE+).

New Features

  • closure_phase_bias: add the phase non-closure induced bias estimation for small baseline approaches (Zheng et al., 2022) (#765 by Y. Zheng, Z. Yunjun).
  • add bulk_plate_motion to estimate the tectonic plate motion in ENU/LOS direction from plate motion models (Stephenson et al., 2022, under review) (#769, #808 by Y. K. Liu, Z. Yunjun).
  • smallbaselineApp: integrate complex time functions and uncertainty quantification into the routine workflow (#795) via:
    • mintpy.timeFunc.polynomial
    • mintpy.timeFunc.periodic
    • mintpy.timeFunc.stepDate
    • mintpy.timeFunc.exp/log
    • mintpy.timeFunc.uncertaintyQuantification
    • mintpy.timeFunc.timeSeriesCovFile
  • load_data: load ionosphere stack from isce2/topsStack into ionStack.h5 file with auto-resize (#780, #796 by Y. K. Liu, Z. Yunjun) via:
    • mintpy.load.ionUnwFile
    • mintpy.load.ionCorFile
    • mintpy.load.ionConnCompFile
  • load_data: support mean and median interpolation while loading stacks of observations (#797 by Y. K. Liu) via:
    • mintpy.multilook.x/ystep [renamed from mintpy.load.x/ystep]
    • mintpy.multilook.method
  • add the single entry point with sub-commands via mintpy.__main__ (#823 by A. Valentino)
  • add s1ab_range_bias.py for the S1A/B range bias correction for range offset (Yunjun et al., 2022) (#787).

Technical Improvements

  • auto build the latest and develop docker image and push to the GitHub container registry (#696 by J. Kennedy).
  • add mintpy to the Debian ecosystem with apt install support (#812 by A. Valentino).
  • add mintpy.objects.ionex for IONEX file download/read, to replace part of mintpy.simulation.iono (#794).
  • tsview: switch to a new narrower slider and to use fig.canvas.draw_idel/flush_events() (#764)
  • repo structure change:
    • move the requirements.txt file to the root level (#772)
    • move shell scripts to the root level as scripts (#785 by A. Valentino)
    • spin-off utils.map module from utils.plot for lat/lon labels and scalebar (#794)
  • reduced test data size for SanFranSenDT42 and WCapeSenAT29 (#799)
  • various bugs fix

Contributors

  • Zhang Yunjun
  • Yuan-Kai Liu
  • Yujie Zheng
  • Antonio Valentino
  • Joseph Kennedy
  • Brett Buzzanga
  • Scott Staniewicz
  • Falk Amelung
  • Kang Liang
  • Bryan Marfito

Version 1.3.3

14 Apr 21:25
edebebd
Compare
Choose a tag to compare

Cut a new release for Zheng et al. (2022), Yunjun et al. (2022) and Gregg et al. (2022).

New Features:

  • add closure_phase_bias.py to mask areas susceptible to the closure phase bias (Zheng et al., 2022), contributed by Yujie Zheng
  • add iono_tec.py and simulation/iono.py for GIM-based ionospheric correction for range offset (Yunjun et al., 2022)
  • [preliminary] add TS full covariance matrix calculation and propagation, with contributions from Sara Mirzaee
  • File I/O:
    • support 4D matrix IO in readfile/writefile/cluster.py
    • support SLC stack as FILE_TYPE==timeseries and DATA_TYPE==complex
    • initial NO_DATA_VALUE support as a new standard metadata
    • uavsar: support UAVSAR .ann/lkv/llh files reading and solid Earth tides correction
    • prep_fringe: add “connectComponent” to ifgramStack file if exists, contributed by Brett Buzzanga
  • Utilities:
    • add/diff/image_stitch: generic multi-dataset file support, with contributions from Yuan-Kai Liu and Ollie Stephenson
    • asc_desc2horz_vert.py: support decomposition with pixel-wised geometry via --geom-file option
    • geocode: change the default geocoding output lat/lon step from “same row/col number” to “same pixel area“, with contributions from Brett Buzzanga (#722, #737)
  • add mintpy.unwrapError.connCompMinArea option, contributed by Sara Mirzaee
  • visualization:
    • plot_network: color-code network based on temp/perp baseline, contributed by Yuan-Kai Liu
    • view: add --no-data-value option
    • tsview: support --coastline via carroty map projection
    • tsview: support very long TS files, e.g. TEC and GRACE datasets in h5 format.

Technical Improvements:

  • drop dependencies on pykdtree, xarray and zarr as they are now properly installed by condo install pyresample.
  • support h5py>=3 by fixing the bool array indexing bug, contributed by Brett Buzzanga
  • support python 3.9 and python 3.10 via documentation change only
  • fix argv/args bug for conda/pip installed version
  • use numpy values as the standard for the string/object conversion between different packages
  • add the first unit test in tests/test_asc_desc2horz_vert.py
  • refactor the following scripts:
    • legacy/load2hdf5.py
    • prep_snap.py
    • objects/gps.get_gps_los_obs()
  • other bugs fix

Contributors:

  • Zhang Yunjun
  • Yujie Zheng
  • Sara Mirzaee
  • Brett Buzzanga
  • Yuan-Kai Liu
  • Ollie Stephenson
  • Zel Hurewitz
  • Marin Govorcin
  • Andrew Johnston

Version 1.3.2 - conda installation

22 Nov 03:44
ca29361
Compare
Choose a tag to compare

New Features:

  • add mintpy to the conda-forge channel (https://anaconda.org/conda-forge/mintpy). Contributed by Joseph Kennedy.
  • simplify the installation:
    • setup.py: use entry_points/console_scripts for a fully functioning pip installed local version. Contributed by Joseph Kennedy.
    • update docker image. Contributed by Forrest Williams.
    • simplify the installation note and environment files to leverage 1) pip install and 2) pysolid and pyapse on conda-forge, with contributions from Joseph Kennedy, James Rine, Andrew Johnston and Panji Brotoisworo.
  • big-data friendly features:
    • improved memory handling for parallel plotting via mintpy.plot.maxMemory option
    • improved stability for Dask parallelization via better patch splitting and flexible num of workers in percentage
  • hyp3: routine workflow works end-to-end in UTM coordinates.
    • add RidgecrestSenDT71 example dataset. Contributed by Jiang Zhu
    • geometry and metadata bugs fixed.
  • more offset functionalities:
    • support cosicorr offset products via prep_cosicorr.py. Contributed by Forrest Williams
    • load_data: add offset STD from ampcor
    • ifgram_inversion: add masking based on offset STD
    • ifgram_inversion: add initial phase / offset STD time series calculation via --calc-std
  • gnss related:
    • check observation time overlap percentage (>=25%) between GNSS and InSAR, to better discard abnormal GNSS sites
    • add --ex-gps to manually exclude GNSS sites
    • add --mask-gps option to mask out GNSS sites based on the displayed data matrix. Contributed by Simran Sangha
    • support --gps-comp horz / vert --hz-az to plot horizontal and vertical components. Contributed Simran Sangha
  • add utils/s1_utils.py for Sentinel-1 specific utility functions
  • save_gdal.py: support UTM projection. Contributed by Panji Brotoisworo
  • improved visualization:
    • view.py: add --mask-dem option to mask out DEM pixels based on the displayed data matrix. Contributed by Simran Sangha
    • support American length unit, e.g. inch, foot, yard. Contributed by Simran Sangha.

Technical Improvements:

  • readfile / writefile: generic I/O logic for complex binary files to better handle ISCE-2 files directly
  • drop dependencies on sklearn by using numpy for bootstrap resampling. Contributed by Forrest Williams
  • stack: Speedup triplet design matrix. Contributed by Scott Staniewicz
  • add.py: handles time series with different dates and reference date/point, same as diff.py
  • timeseries2velocity.py: add --save-res to save the fitting residual files
  • new standard mintpy metadata keys: BANDS and INTERLEAVE for binary files
  • move time function related functions to utils/time_func.py
  • rename test directory to tests
  • bugs fix

Contributors:

  • Zhang Yunjun
  • Joseph Kennedy
  • Forrest Williams
  • Simran Sangha
  • Ollie Stephenson
  • Scott Staniewicz
  • Jiang Zhu
  • James Rine
  • Panji Brotoisworo
  • Yuan-Kai Liu
  • Andrew Johnston