Releases: insarlab/MintPy
Releases · insarlab/MintPy
Version 1.6.1
Cut a release for the 2024 EarthScope InSAR short course (ISCE+).
Highlights
- update GMTSAR support with new interferogram stack structure and demo dataset by @yunjunz, @Xiaohua-Eric-Xu in #1226, #1227, #1229
- support numpy-2.0 by @Liuqi2002519 and @yunjunz in #1225
- support scipy-1.4 by @yunjunz in #1223
Maintenance - bugfixes
iono_split_spectrum
: hardwire dset while inverting for iono TS by @yunjunz in #1239prep_hyp3
: skip relative_orbit, start/stopUTC for isce2_burst products by @yunjunz in #1200readfile.read_snap_dim
: more tolerant exaction onDATE12
by @ssharifi1994 in #1208
Maintenance - dependency, tests and documentation
simulation.fractal.py
: optionalpyfftw
import by @avalentino in #1191pyproject.toml
: addreadme
to the dynamic metadata list by @yunjunz in #1197 and #1201tests/smallbaselineApp
refactoring by @yunjunz in #1230tests/requirements.txt
: pin gdal"<=3.8" for circle ci by @yunjunz in #1235version
: addget_version_info_v2()
by @yunjunz in #1231- docs: switch fig links from Yunjun's WordPress to
insarlab/figs
GitHub page by @yunjunz in #1234, #1237, #1241
What's Changed
save_kmz
: support data in UTM by @Alex-Lewandowski in #1210isce_utils
: addcrop_slc()
andform_ifgram()
by @yunjunz in #1221prep_gamma
: support geocoded Gamma products by @yunjunz in #1222readfile
: supportGamma
SLC in complex32 format by @yunjunz in #1216- gnss: rename
JPL-SIDESHOW
toSIDESHOW
by @yunjunz in #1240
New Contributors
- @Alex-Lewandowski made their first contribution in #1210
- @Liuqi2002519 made their first contribution in #1225
- @ssharifi1994 made their first contribution in #1208
Full Changelog: v1.6.0...v1.6.1
Version 1.6.0
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
optionESESES
from JPL/SOPACJPL-SIDESHOW
from JPLGENERIC
for other undefined source format
- refactor the
objects.gnss.py
into parent/child classes - behavior changes include:
- default local file dir changed from
GNSS
toGNSS-{SOURCE}
- default CSV file changed from
gnss_{COMPONENT}.csv
tognss_{COMPONENT}_{SOURCE}.csv
- default local file dir changed from
- 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 insmallbaselineApp
with the following new template options:mintpy.ionosphericDelay.method
mintpy.ionosphericDelay.excludeDate
mintpy.ionosphericDelay.excludeDate12
- add
view
andtsview
: 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
- support GNSS-related options in
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
foralosStack
: supp custom multilook number + ionospheric phase/coherence by @yunjunz in #1150utils0.incidence_angle
: read from metadata directly if available fordimension==0
by @taliboliver in #1152image_stitch
: updateREF_Y/X
after mosaicking in the output file by @yunjunz in #1156objects.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
forhyp3
products by @yunjunz in #1187 objects.conncomp.plot_bridge
: improved memory usage by @ehavazli in #1155- replace
setup.py
withpyproject.toml
for code installation by @yunjunz in #1129 - replace
miniconda
withminiforge
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
Highlights
- add
prep_nisar
to load NISAR GUNW products by @mirzaees in #1035 prep_hyp3
: support burst-wide interferograms from hyp3-isce2 by @cirrusasf in #1074- GMT-like shaded relief illumination via
view.py --dem-blend
by @yuankailiu, @yunjunz in #1089, #1102 - add
fix_typos.sh
modified fromGDAL
repo to catch spelling errors by @scottstanie, @yunjunz in #1082, #1120 - support
mintpy.load.autoPath
forisce2/alosStack
products by @yunjunz in #1119 sensor
: add LuTan-1 info by @yunjunz in #1097
What’s Changed
view.prep_slice()
: support quoted lists of characters as inputs by @yunjunz in #1077view
: add--scalebar-linewidth
option by @yunjunz in #1111view
: allow unit change when viewing seasonal time functions by @bbuzz31 in #1084plot_network
: check nan values of coh/bperp in kept interferograms by @yunjunz in #1108mintpy.geocode.laloStep
: support single value input by @yunjunz in #1075readfile.read_gdal
: switch back togdal
kwargs to leverage its subsetting capability by @scottstanie in #1072readfile
: support GDALint8
dtype by @yunjunz in #1083subset
: support hdf5 <--> binary by @yunjunz in #1076utils0.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 tonumpy
behavior change insimulation/fractal
by @yunjunz in #1120
Maintenance - Documentation
Installation
: usebrew
solution for the arg-complete setup on mac/bash by @yunjunz in #1069CONTRIBUTING
: update comments onpre-commit
by @yunjunz in #1087dir_structure
: ppdate URL for HyP3 sample notebook by @hjkristenson in #1113
Maintenance - Dependency
- add
shapely
by @yunjunz in #1069 - del obsolete
docs/requirements4rtd.txt
file by @yunjunz in #1090 - docker/build: update to new versions by @dependabot in #1088, #1091, #1092, #1090
- pre-commit: update to new versions by @pre-commit-ci in #1093, #1094, #1099, #1104
New Contributors
- @swdmike made their first contribution in #1107
- @hjkristenson made their first contribution in #1113
Full Changelog: v1.5.2...v1.5.3
Version 1.5.2
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 #999diff
: supportunw/offset - timeseries
andtimeseries - velocity
by @yunjunz and @yuankailiu in #1011, #1018euler_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
geocode
: support complex wrapped interferogram by @comma-never-coma in #957image_stitch
: support non-hdf5 files by @yunjunz in #1021isce_utils
: addunwrap_icu()
andfilter_goldstein()
by @yunjunz in #993 and #1058- main CLI: add logging control args by @yunjunz in #1020
multilook
: support GDAL VRT file as input by @yunjunz in #959multilook
: generate multilooked geometry files for CPU/GPUampcor
products by @yunjunz in #963prep_fringe
: load water mask into geometry file via--water-mask
by @bbuzz31 in #983read/write/resample
: improved support for GDAL complex file by @yunjunz in #1000save_qgis
: add--zero-first
option by @yunjunz in #1007sensor
: add ICEYE parameters by @yunjunz in #974spatial_filter
: use nan-ignoring filter forlowpass/highpass_gaussian
by @yuankailiu and @scottstanie in #935 and #1030tsview
: add--figsize-img
by @yunjunz in #1059view
: add--faultline
and--interpolation
options by @yunjunz and @scottstanie in #964, #1062, #1029
Maintenance
circleci
: replace miniconda3 with mambaforge with 2X speedup by @yunjunz in #996mask
: replace--threshold
with--vmin/vmax
by @yunjunz in #1009numpy
: replace expired numpy dtype deprecations (cont.) by @yjzhenglamarmota in #960resample
: refactor default output step size calculation by @yunjunz in #997tsview/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 byscale
instead of multiply by @yi-chingchen in #946closure_phase_bias
: bring back spatial referencing for ARIA while calc sequential closure phase by @yunjunz in #1063cluster.split_box2sub_boxes
: bugfix for tiny last step by @yunjunz in #1024gamma
: various bugfixes inreadfile
andgeocode
forgamma
products by @yunjunz in #1044hdfeos5
: calc/write latitude/longitude if missing in geometry file by @yunjunz in #1050utils.plot
: fix_tkinter.TclError
viaplt.switch_backend('Agg')
by @falkamelung in #947view
: fix referencing error while read unwrapPhase* in 2D w/ multilook by @yunjunz in #956timeseries_rms
: bugfix forrun_or_skip
and*RMS.deramp = no
by @yunjunz in #970isce_utils.get_processor()
: use*.track.xml
file to identifyalosStack/2App
by @yunjunz in #998readfile.read_attribute
: translate DATA_TYPE ci2 to float32 for roipac by @yunjunz in #1064save_gdal
: bugfix for boolean type by @yunjunz in #1024spatial_filter
: fix thepad_width
integral type error fordouble_difference
option by @yunjunz in #1015unwrap_error_phase_closure
: fixnumpy.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
- add
argcomplete
- add
utm
- delete
environment.yml
file by @yunjunz in #958 - unpin scipy<1.10 by @yunjunz in #968
- build(deps): bump docker/build-push-action from 3 to 4 by @dependabot in #954
- pre-commit(deps): bump isort (from 5.11 to 5.12) and pyupgrade (from 3.3 to 3.10) by @pre-commit-ci in #951, #995, #1001, #1022, #1028, #1039, #1043, #1051
New Contributors
- @yi-chingchen made their first contribution in #946
- @comma-never-coma made their first contribution in #957
Full Changelog: v1.5.1...v1.5.2
Version 1.5.1
This is a maintenance release for bug fixes.
- improved
closure_phase_bias
: 1) remove spatial referencing for better physical presentation and robustness; 2) usewrapPhase
if available to remove the filtering effect (#922 by Yujie Zheng) temporal_filter
: add a median filter fromscipy
via-f / —filter
option (#943)- I/O improvements:
- 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
New Features
- responsive command line interface (CLI) via lazy imports of the
mintpy.cli
sub-module (#828, #854 by A. Valentino & Z. Yunjun). The newmintpy.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
andplatemotion
. - switch the default local coordinate translation from ECEF from sphere to spheroid.
- support azimuth output
- renamed from
bulk_plate_motion
toplate_motion
- add
timeseries2velocity
: saveresidue
andintercept
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 inscipy.linalg.lstsq()
to avoid occasionally abnormal high residue. - remove the all-zero column in the design matrix, to avoid occasionally high fitting residue.
- change cutoff
- 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
: calculatedata_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 frommintpy.objects
to the rootmintpy
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
Version 1.4.0
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 fromisce2/topsStack
intoionStack.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
: supportmean
andmedian
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
anddevelop
docker image and push to the GitHub container registry (#696 by J. Kennedy). - add
mintpy
to the Debian ecosystem withapt install
support (#812 by A. Valentino). - add
mintpy.objects.ionex
for IONEX file download/read, to replace part ofmintpy.simulation.iono
(#794). tsview
: switch to a new narrower slider and to usefig.canvas.draw_idel/flush_events()
(#764)- repo structure change:
- reduced test data size for
SanFranSenDT42
andWCapeSenAT29
(#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
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
andsimulation/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 correctionprep_fringe
: add “connectComponent” to ifgramStack file if exists, contributed by Brett Buzzanga
- support 4D matrix IO in
- Utilities:
add/diff/image_stitch
: generic multi-dataset file support, with contributions from Yuan-Kai Liu and Ollie Stephensonasc_desc2horz_vert.py
: support decomposition with pixel-wised geometry via--geom-file
optiongeocode
: 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
andzarr
as they are now properly installed bycondo install pyresample
. - support
h5py>=3
by fixing the bool array indexing bug, contributed by Brett Buzzanga - support
python 3.9
andpython 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
New Features:
- add
mintpy
to theconda-forge
channel (https://anaconda.org/conda-forge/mintpy). Contributed by Joseph Kennedy. - simplify the installation:
setup.py
: useentry_points/console_scripts
for a fully functioningpip
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
- improved memory handling for parallel plotting via
hyp3
: routine workflow works end-to-end in UTM coordinates.- add
RidgecrestSenDT71
example dataset. Contributed by Jiang Zhu - geometry and metadata bugs fixed.
- add
- more
offset
functionalities:- support
cosicorr
offset products viaprep_cosicorr.py
. Contributed by Forrest Williams load_data
: add offset STD fromampcor
ifgram_inversion
: add masking based on offset STDifgram_inversion
: add initial phase / offset STD time series calculation via--calc-std
- support
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 Staniewiczadd.py
: handles time series with different dates and reference date/point, same asdiff.py
timeseries2velocity.py
: add--save-res
to save the fitting residual files- new standard mintpy metadata keys:
BANDS
andINTERLEAVE
for binary files - move time function related functions to
utils/time_func.py
- rename
test
directory totests
- 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