https://github.com/insarlab/mintpy

Miami InSAR time-series software in Python

https://github.com/insarlab/mintpy

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 10 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    16 of 71 committers (22.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Keywords

deformation earthquake geodesy geophysics geoscience insar nisar radar remote-sensing sar sentinel-1 tectonics time-series volcano

Keywords from Contributors

geospatial-data parallel resampling closember charts distribution energy-system-model hydrology kd-tree mesh
Last synced: 5 months ago · JSON representation

Repository

Miami InSAR time-series software in Python

Basic Info
Statistics
  • Stars: 693
  • Watchers: 55
  • Forks: 288
  • Open Issues: 53
  • Releases: 27
Topics
deformation earthquake geodesy geophysics geoscience insar nisar radar remote-sensing sar sentinel-1 tectonics time-series volcano
Created over 11 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct

docs/README.md

Language Docs Status CircleCI Docker Status Conda Download Version Forum License Citation

MintPy

The Miami INsar Time-series software in PYthon (MintPy as /mɪnt paɪ/) is an open-source package for Interferometric Synthetic Aperture Radar (InSAR) time series analysis. It reads the stack of interferograms (coregistered and unwrapped) in ISCE, ARIA, FRInGE, HyP3, GMTSAR, SNAP, GAMMA or ROI_PAC format, and produces three dimensional (2D in space and 1D in time) ground surface displacement in line-of-sight direction. It includes a routine time series analysis (smallbaselineApp.py) and some independent toolbox.

This package was called PySAR before version 1.1.1. For version 1.1.2 and onward, we use MintPy instead.

This is research code provided to you "as is" with NO WARRANTIES OF CORRECTNESS. Use at your own risk.

1. Installation

2. Running MintPy

2.1 Routine workflow smallbaselineApp.py

MintPy reads a stack of interferograms (unwrapped interferograms, coherence and connected components from SNAPHU if available) and the geometry files (DEM, lookup table, incidence angle, etc.). You need to give the path to where the files are and MintPy takes care of the rest!

```bash smallbaselineApp.py # run with default template 'smallbaselineApp.cfg' smallbaselineApp.py # run with default and custom templates smallbaselineApp.py -h / --help # help smallbaselineApp.py -H # print default template options smallbaselineApp.py -g # generate default template if it does not exist smallbaselineApp.py -g # generate/update default template based on custom template

Run with --start/stop/dostep options

smallbaselineApp.py GalapagosSenDT128.txt --dostep velocity # run step 'velocity' only smallbaselineApp.py GalapagosSenDT128.txt --end loaddata # end run after step 'loaddata' ```

Inside smallbaselineApp.py, it reads the unwrapped interferograms, references all of them to the same coherent pixel (reference point), calculates the phase closure and estimates the unwrapping errors (if it has been asked for), inverts the network of interferograms into time-series, calculates the temporal coherence to evaluate the quality of inversion, corrects local oscillator drift (for Envisat only), corrects stratified tropospheric delay (using global atmospheric models or phase-elevation-ratio approach), removes phase ramps (if it has been asked for), corrects DEM error,... and finally estimates the velocity.

Configuration parameters for each step are initiated with default values in a customizable text file smallbaselineApp.cfg.

Example on Fernandina volcano, Galápagos with Sentinel-1 data

bash wget https://zenodo.org/record/3952953/files/FernandinaSenDT128.tar.xz tar -xvJf FernandinaSenDT128.tar.xz cd FernandinaSenDT128/mintpy smallbaselineApp.py ${MINTPY_HOME}/docs/templates/FernandinaSenDT128.txt

Results are plotted in ./pic folder. To explore more data information and visualization, try the following scripts:

bash info.py # check HDF5 file structure and metadata view.py # 2D map view tsview.py # 1D point time-series (interactive) plot_coherence_matrix.py # plot coherence matrix for one pixel (interactive) plot_network.py # plot network configuration of the dataset plot_transection.py # plot 1D profile along a line of a 2D matrix (interactive) save_kmz.py # generate Google Earth KMZ file in points or raster image save_kmz_timeseries.py # generate Google Earth KMZ file in points for time-series (interactive)

2.2 Customized processing recipe

MintPy is a toolbox with individual utility scripts. Simply run the script with -h / --help to see its usage, you could build your own customized processing recipe! Here is an example to compare the velocities estimated from displacement time-series with different tropospheric delay corrections.

2.3 Build on top of mintpy module

MintPy is modulized in Python with utilities classes and functions and well commented in the code level. Users who are familiar with Python could build their own functions and modules on top of mintpy.objects and mintpy.utils. However, we don't have a complete API document website yet (maybe you can contribute this!). Below is an example of reading the 3D matrix of displacement time-series from an HDF5 file.

python from mintpy.utils import readfile ts_data, meta = readfile.read('timeseries_ERA5_ramp_demErr.h5')

3. Documentation

Algorithms implemented in the software are described in details at Yunjun et al. (2019).

4. Contact us

5. Contributing

Imposter syndrome disclaimer: We want your help. No, really.

There may be a little voice inside your head that is telling you that you're not ready to be an open source contributor; that your skills aren't nearly good enough to contribute. What could you possibly offer?

We assure you - the little voice in your head is wrong. If you can write code at all, you can contribute code to open source. Contributing to open source projects is a fantastic way to advance one's coding skills. Writing perfect code isn't the measure of a good developer (that would disqualify all of us!); it's trying to create something, making mistakes, and learning from those mistakes. That's how we all improve, and we are happy to help others learn.

Being an open source contributor doesn't just mean writing code. You can help out by writing or proofreading documentation, suggesting or implementing tests, or even giving feedback about the project (and yes - that includes giving feedback about the contribution process). Some of these contributions may be the most valuable to the project as a whole, because you're coming to the project with fresh eyes, so you can see the errors and assumptions that seasoned contributors have glossed over.

For more information, please read our contributing guide.

This disclaimer was adapted from the MetPy project.

6. Citing this work

Yunjun, Z., Fattahi, H., and Amelung, F. (2019), Small baseline InSAR time series analysis: Unwrapping error correction and noise reduction, Computers & Geosciences, 133, 104331. [ doi | arxiv | data | notebook ]

In addition to the above, we recommend that you cite the original publications that describe the algorithms used in your specific analysis. They are noted briefly in the default template file and listed in the reference file.

Owner

  • Name: insarlab
  • Login: insarlab
  • Kind: organization

Tools for synthetic aperture radar (SAR), interferometric SAR (InSAR) and their time series analysis.

GitHub Events

Total
  • Create event: 19
  • Release event: 1
  • Issues event: 53
  • Watch event: 89
  • Delete event: 11
  • Issue comment event: 198
  • Push event: 39
  • Gollum event: 6
  • Pull request review comment event: 42
  • Pull request review event: 56
  • Pull request event: 74
  • Fork event: 31
Last Year
  • Create event: 19
  • Release event: 1
  • Issues event: 53
  • Watch event: 89
  • Delete event: 11
  • Issue comment event: 198
  • Push event: 39
  • Gollum event: 6
  • Pull request review comment event: 42
  • Pull request review event: 56
  • Pull request event: 74
  • Fork event: 31

Committers

Last synced: over 1 year ago

All Time
  • Total Commits: 2,563
  • Total Committers: 71
  • Avg Commits per committer: 36.099
  • Development Distribution Score (DDS): 0.613
Past Year
  • Commits: 85
  • Committers: 17
  • Avg Commits per committer: 5.0
  • Development Distribution Score (DDS): 0.412
Top Committers
Name Email Commits
Zhang Yunjun y****z 993
Zhang Yunjun y****o@g****m 941
Joshua Zahner j****r@g****m 157
Zhang Yunjun y****z@o****m 86
insaradmin r****3@g****m 76
pre-commit-ci[bot] 6****] 28
Yuan-Kai Liu 5****u 20
hfattahi h****i@r****u 18
dependabot[bot] 4****] 17
ehavazli e****i@j****v 15
Forrest Williams 3****s 15
BB b****8@i****m 13
Falk Amelung f****g 13
David W Grossman 2****n@g****m 12
Bryan Marfito b****o@y****m 12
falkamelung f****g@r****u 11
Sara Mirzaee 3****s 10
Oliver Stephenson o****n@o****m 10
hfattahi h****i@g****m 8
ehavazli e****i@g****m 8
Antonio Valentino a****o@t****t 7
Scott Staniewicz s****z@j****v 6
Panji Brotoisworo 3****o 5
Yujie Zheng z****u@g****m 4
sssangha s****a@u****u 4
Simran S Sangha s****a@j****v 3
Yunmeng Cao y****s@g****m 3
Scott Staniewicz s****e@g****m 3
Yuan-Kai Liu 5****i 3
cirrusasf 6****f 3
and 41 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 154
  • Total pull requests: 277
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 9 days
  • Total issue authors: 93
  • Total pull request authors: 40
  • Average comments per issue: 3.17
  • Average comments per pull request: 1.16
  • Merged pull requests: 238
  • Bot issues: 1
  • Bot pull requests: 58
Past Year
  • Issues: 45
  • Pull requests: 73
  • Average time to close issues: 11 days
  • Average time to close pull requests: 10 days
  • Issue authors: 35
  • Pull request authors: 24
  • Average comments per issue: 1.67
  • Average comments per pull request: 1.75
  • Merged pull requests: 49
  • Bot issues: 1
  • Bot pull requests: 17
Top Authors
Issue Authors
  • falkamelung (13)
  • yunjunz (10)
  • ditafaith (4)
  • bjmarfito (4)
  • Alex-Lewandowski (4)
  • fukun364202818 (3)
  • Akashpsas555 (3)
  • forrestfwilliams (3)
  • EJFielding (3)
  • keepfighting666 (3)
  • songzwgithub (3)
  • ClementGold (3)
  • marcontk (3)
  • bbuzz31 (3)
  • venjiehu (2)
Pull Request Authors
  • yunjunz (162)
  • pre-commit-ci[bot] (41)
  • dependabot[bot] (20)
  • falkamelung (9)
  • scottstanie (8)
  • rzinke (8)
  • codeautopilot[bot] (8)
  • yuankailiu (7)
  • bjmarfito (7)
  • forrestfwilliams (6)
  • mirzaees (6)
  • mohseniaref (5)
  • sssangha (4)
  • Alex-Lewandowski (4)
  • ritwika21 (4)
Top Labels
Issue Labels
bug (14) pull-request-welcome (10) closing-soon-if-no-response (9) good-first-issue (6) enhancement (5) to-do list (4) discussion (2) wontfix (1) installation (1)
Pull Request Labels
dependencies (20) bug (2) github_actions (1)

Dependencies

.github/workflows/build-docker.yml actions
  • actions/checkout v3 composite
  • akhilerm/tag-push-action v2.1.0 composite
  • docker/build-push-action v3 composite
  • docker/login-action v2 composite
  • docker/setup-buildx-action v2 composite
.github/workflows/build-n-publish-to-pypi.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite
Dockerfile docker
  • mambaorg/micromamba 0.24.0 build
requirements.txt pypi
  • cartopy *
  • cvxopt *
  • dask >=1.0
  • dask-jobqueue >=0.3
  • h5py *
  • joblib *
  • lxml *
  • matplotlib *
  • numpy *
  • pip *
  • pre-commit *
  • pyaps3 >=0.3
  • pykml >=0.2
  • pyproj *
  • pyresample *
  • pysolid *
  • python >=3.6
  • rich *
  • scikit-image *
  • scipy *
setup.py pypi
  • cartopy *
  • cvxopt *
  • dask >=1.0
  • dask-jobqueue >=0.3
  • h5py *
  • joblib *
  • lxml *
  • matplotlib *
  • numpy *
  • pre-commit *
  • pyaps3 >=0.3
  • pykml >=0.2
  • pyproj *
  • pyresample *
  • pysolid *
  • rich *
  • scikit-image *
  • scipy *
  • setuptools *
pyproject.toml pypi