Dolphin

Dolphin: A Python package for large-scale InSAR PS/DS processing - Published in JOSS (2024)

https://github.com/isce-framework/dolphin

Science Score: 100.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    3 of 8 committers (37.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

deformation geoscience geospatial-processing insar phase-linking remote-sensing squeesar time-series

Keywords from Contributors

mesh hydrology energy-system exoplanet hydraulic-modelling polygon gravitational-lensing ode
Last synced: 4 months ago · JSON representation ·

Repository

InSAR phase linking library for creating surface displacement maps using persistent scatterer (PS) and distributed scatterer (DS) processing

Basic Info
Statistics
  • Stars: 101
  • Watchers: 10
  • Forks: 28
  • Open Issues: 26
  • Releases: 63
Topics
deformation geoscience geospatial-processing insar phase-linking remote-sensing squeesar time-series
Created over 3 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

dolphin

Pytest and build docker image pre-commit.ci status Documentation Status Conda-Forge PyPI platforms GitHub Discussion DOI

High resolution wrapped phase estimation for Interferometric Synthetic Aperture Radar (InSAR) using combined persistent scatterer (PS) and distributed scatterer (DS) processing.

Install

dolphin may be installed via conda-forge:

```bash

if mamba is not already installed, see here: https://mamba.readthedocs.io/en/latest/

mamba install -c conda-forge dolphin ```

It is also available via PyPI and may be pip-installed on some platforms, such as Google's Colab. However, certain dependencies (e.g. GDAL) are more easily set up through conda.

dolphin has the ability to unwrap interferograms using several options, which can be toggled using the unwrap_method configuration option:

  1. snaphu-py, a lightweight Python bindings to SNAPHU. Available on both pip and conda.
  2. isce3's python bindings to SNAPHU, PHASS, or ICU
  3. spurt, a 3D unwrapper, implementing the Extended Minimum Cost Flow (ECMF) algorithm
  4. tophu, a multi-scale unwrapper designed to unwrap large interferograms in parallel tiles at multiple resolution.

These may be installed via conda or (in the case of snaphu-py) pip.

To install locally:

  1. Download source code:

bash git clone https://github.com/isce-framework/dolphin.git && cd dolphin

  1. Install dependencies:

bash mamba env create --file conda-env.yml

or if you have an existing environment:

bash mamba env update --name my-existing-env --file conda-env.yml

  1. Install dolphin via pip:

bash conda activate dolphin-env python -m pip install .

Dolphin can also take advantage of CUDA-compatible GPUs for faster processing. See the docs for installation instructions and configuration.

Usage

The main entry point for configuring and running workflows the dolphin command line tool:

  1. dolphin config: create a workflow configuration file.
  2. dolphin run : run the workflow using this file.

Example usage:

```bash dolphin config --slc-files /path/to/slcs/*tif

OR: to make a coarser output 4x as quickly:

dolphin config --slc-files /path/to/slcs/*tif --strides 2 2

dolphin run dolphin_config.yaml ```

The config command creates a YAML file (by default dolphin_config.yaml in the current directory). If you'd like to see an empty YAML with all defaults filled in, you can run dolphin config --print-empty, which creates a sample file like the one here

The only required inputs for the workflow are the paths to the coregistered SLC files (in either geographic or radar coordinates). If the SLC files are spread over multiple files, you can either

  1. use the --slc-files option with a bash glob pattern, (e.g. dolphin config --slc-files merged/SLC/*/*.slc would match the ISCE2 stack processor output )

  2. Store all input SLC files in a text file delimited by newlines (e.g. my_slc_list.txt), and give the name of this text file prefixed by the @ character (e.g. dolphin config --slc-files @my_slc_list.txt)

The full set of options is written to the configuration file; you can edit this file, or you can see which commonly tuned options by are changeable running dolphin config --help.

Building and running via Docker

dolphin can also be run using Docker. You can use the one built on Github, or build it locally using the script

bash ./docker/build-docker-image.sh

Citation

If you use dolphin in your research, please cite:

Staniewicz et al., (2024). Dolphin: A Python package for large-scale InSAR PS/DS processing. Journal of Open Source Software, 9(103), 6997, https://doi.org/10.21105/joss.06997

Contributing

We welcome many forms of contributing, including testing, bug reports, and documentation fixes. If you think you've found a problem, please let us know! You can raise an issue on the repository, where there are templates for Bug Reports and Feature Requests. If you have a general question of idea, feel free to raise it in the Discussions page.

For more detailed guidance on setting up a development environment, including how make and test changes to the code, see Contributing to Dolphin.

For more general Q&A, please use the Discussions page.

License

This software is licensed under your choice of BSD-3-Clause or Apache-2.0 licenses. See the accompanying LICENSE file for further details.

SPDX-License-Identifier: BSD-3-Clause OR Apache-2.0

Owner

  • Name: isce-framework
  • Login: isce-framework
  • Kind: organization

JOSS Publication

Dolphin: A Python package for large-scale InSAR PS/DS processing
Published
November 13, 2024
Volume 9, Issue 103, Page 6997
Authors
Scott J. Staniewicz ORCID
Jet Propulsion Laboratory, California Institute of Technology
Sara Mirzaee ORCID
Jet Propulsion Laboratory, California Institute of Technology
Geoffrey M. Gunter ORCID
Jet Propulsion Laboratory, California Institute of Technology
Talib Oliver-Cabrera ORCID
Jet Propulsion Laboratory, California Institute of Technology
Emre Havazli ORCID
Jet Propulsion Laboratory, California Institute of Technology
Heresh Fattahi ORCID
Jet Propulsion Laboratory, California Institute of Technology
Editor
Michael Mahoney ORCID
Tags
InSAR remote sensing phase linking time series persistent scatterers distributed scatterers interferometry surface deformation earthquake

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Staniewicz"
  given-names: "Scott J."
  orcid: "https://orcid.org/0000-0002-3055-5731"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Mirzaee"
  given-names: "Sara"
  orcid: "https://orcid.org/0000-0001-8194-5951"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Gunter"
  given-names: "Geoffrey M."
  orcid: "https://orcid.org/0000-0003-4612-0887"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Oliver-Cabrera"
  given-names: "Talib"
  orcid: "https://orcid.org/0000-0002-2315-4710"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Havazli"
  given-names: "Emre"
  orcid: "https://orcid.org/0000-0002-1236-7067"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Fattahi"
  given-names: "Heresh"
  orcid: "https://orcid.org/0000-0001-6926-4387"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Sangha"
  orcid: "https://orcid.org/0000-0002-7458-9992"
  given-names: "Simran S."
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Burns"
  given-names: "Ryan"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
- family-names: "Jeon"
  given-names: "Seyeon"
  affiliation: Jet Propulsion Laboratory, California Institute of Technology
license: BSD-3-Clause OR Apache-2.0
doi: 10.5281/zenodo.14041319
repository-code: "https://github.com/isce-framework/dolphin"
preferred-citation:
  type: article
  authors:
  - family-names: "Staniewicz"
    given-names: "Scott J."
    orcid: "https://orcid.org/0000-0002-3055-5731"
    affiliation: Jet Propulsion Laboratory, California Institute of Technology
  - family-names: "Mirzaee"
    given-names: "Sara"
    orcid: "https://orcid.org/0000-0001-8194-5951"
    affiliation: Jet Propulsion Laboratory, California Institute of Technology
  - family-names: "Gunter"
    given-names: "Geoffrey M."
    orcid: "https://orcid.org/0000-0003-4612-0887"
    affiliation: Jet Propulsion Laboratory, California Institute of Technology
  - family-names: "Oliver-Cabrera"
    given-names: "Talib"
    orcid: "https://orcid.org/0000-0002-2315-4710"
    affiliation: Jet Propulsion Laboratory, California Institute of Technology
  - family-names: "Havazli"
    given-names: "Emre"
    orcid: "https://orcid.org/0000-0002-1236-7067"
    affiliation: Jet Propulsion Laboratory, California Institute of Technology
  - family-names: "Fattahi"
    given-names: "Heresh"
    orcid: "https://orcid.org/0000-0001-6926-4387"
    affiliation: Jet Propulsion Laboratory, California Institute of Technology
  date-published: 2024-11-13
  doi: 10.21105/joss.06997
  issn: 2475-9066
  issue: 103
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 6997
  title: "Dolphin: A Python package for large-scale InSAR PS/DS processing"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.06997"
  volume: 9
title: "Dolphin: A Python package for large-scale InSAR PS/DS processing"

GitHub Events

Total
  • Create event: 53
  • Release event: 16
  • Issues event: 35
  • Watch event: 29
  • Delete event: 51
  • Issue comment event: 51
  • Push event: 150
  • Pull request review event: 8
  • Pull request review comment event: 7
  • Pull request event: 243
  • Fork event: 6
Last Year
  • Create event: 53
  • Release event: 16
  • Issues event: 35
  • Watch event: 29
  • Delete event: 51
  • Issue comment event: 51
  • Push event: 150
  • Pull request review event: 8
  • Pull request review comment event: 7
  • Pull request event: 243
  • Fork event: 6

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 844
  • Total Committers: 8
  • Avg Commits per committer: 105.5
  • Development Distribution Score (DDS): 0.161
Past Year
  • Commits: 206
  • Committers: 7
  • Avg Commits per committer: 29.429
  • Development Distribution Score (DDS): 0.257
Top Committers
Name Email Commits
Scott Staniewicz s****z@j****v 708
pre-commit-ci[bot] 6****] 97
Sara Mirzaee 3****s 17
Geoffrey Gunter 1****r 9
dependabot[bot] 4****] 4
Simran S Sangha s****a@u****u 4
Ryan Burns r****s@j****v 3
seyeonjeon 1****n 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 104
  • Total pull requests: 722
  • Average time to close issues: 4 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 16
  • Total pull request authors: 8
  • Average comments per issue: 0.93
  • Average comments per pull request: 0.16
  • Merged pull requests: 629
  • Bot issues: 0
  • Bot pull requests: 154
Past Year
  • Issues: 22
  • Pull requests: 280
  • Average time to close issues: 12 days
  • Average time to close pull requests: 5 days
  • Issue authors: 8
  • Pull request authors: 5
  • Average comments per issue: 0.59
  • Average comments per pull request: 0.06
  • Merged pull requests: 226
  • Bot issues: 0
  • Bot pull requests: 75
Top Authors
Issue Authors
  • scottstanie (77)
  • mirzaees (5)
  • Shima-shoki (4)
  • suatcoskun (3)
  • ZGHHGZ (2)
  • McWhity (2)
  • sssangha (2)
  • taliboliver (1)
  • songzwgithub (1)
  • sheyu921 (1)
  • rk-napoli (1)
  • sergeikharchenko (1)
  • amrit-thapa-2044 (1)
  • rtburns-jpl (1)
  • wangshuaicumt (1)
Pull Request Authors
  • scottstanie (499)
  • pre-commit-ci[bot] (150)
  • mirzaees (33)
  • gmgunter (13)
  • seyeonjeon (10)
  • sssangha (7)
  • rtburns-jpl (7)
  • dependabot[bot] (7)
Top Labels
Issue Labels
enhancement (36) bug (16) refactor (7) documentation (5) good first issue (5) run time (5) testing (3) ux (3) research (3) quality metrics (2) runtime (1) chore (1) visualization (1)
Pull Request Labels
dependencies (7) work in progress (5) enhancement (2) run-benchmark (1) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 673 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 3
  • Total versions: 30
  • Total maintainers: 3
pypi.org: dolphin

Workflows for generating surface displacement maps using InSAR

  • Versions: 30
  • Dependent Packages: 0
  • Dependent Repositories: 3
  • Downloads: 673 Last month
Rankings
Dependent repos count: 9.0%
Average: 9.5%
Dependent packages count: 10.1%
Maintainers (3)
Last synced: 4 months ago

Dependencies

requirements.txt pypi
  • gdal >=3
  • numpy *
  • python >=3.9
  • ruamel.yaml *
  • yamale *
docker/Dockerfile docker
  • mambaorg/micromamba 1.1.0@sha256 build
  • oraclelinux 8-slim@sha256 build
docs/requirements.txt pypi
  • mkdocs *
  • mkdocs-gen-files *
  • mkdocs-literate-nav *
  • mkdocs-material *
  • mkdocs-section-index *
  • mkdocstrings *
  • pymdown-extensions *
tests/requirements.txt pypi
  • black * test
  • flake8 * test
  • pre-commit * test
  • pytest * test
  • pytest-cov * test
.github/workflows/test-build-push.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • akhilerm/tag-push-action v2.1.0 composite
  • docker/build-push-action v4 composite
  • docker/login-action v2 composite
  • mamba-org/setup-micromamba v1 composite
pyproject.toml pypi
.github/workflows/benchmark.yml actions
  • actions/cache v3 composite
  • actions/checkout v4 composite
  • actions/upload-artifact v3 composite
  • mamba-org/setup-micromamba v1 composite