https://github.com/asfhyp3/hyp3-isce2

HyP3 plugin for ISCE2 processing

https://github.com/asfhyp3/hyp3-isce2

Science Score: 57.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 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
    Organization asfhyp3 has institutional domain (hyp3-docs.asf.alaska.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.0%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

HyP3 plugin for ISCE2 processing

Basic Info
  • Host: GitHub
  • Owner: ASFHyP3
  • License: apache-2.0
  • Language: Python
  • Default Branch: develop
  • Size: 71.5 MB
Statistics
  • Stars: 18
  • Watchers: 6
  • Forks: 9
  • Open Issues: 27
  • Releases: 42
Created almost 3 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog License Codeowners

README.md

DOI Coverage

HyP3 ISCE2 Plugin

The HyP3-ISCE2 plugin provides a set of workflows to process SAR satellite data using the InSAR Scientific Computing Environment 2 (ISCE2) software package. This plugin is part of the Alaska Satellite Facility's larger HyP3 (Hybrid Plugin Processing Pipeline) system, which is a batch processing pipeline designed for on-demand processing of SAR data.

Usage

The HyP3-ISCE2 plugin provides a set of workflows (accessible directly in Python or via a CLI) that can be used to process SAR data using ISCE2. The workflows currently included in this plugin are:

  • insar_stripmap: A workflow for creating ALOS-1 geocoded unwrapped interferogram using ISCE2's Stripmap processing workflow
  • insar_tops: A workflow for creating full-SLC Sentinel-1 geocoded unwrapped interferogram using ISCE2's TOPS processing workflow

- insar_tops_burst: A workflow for creating burst-based Sentinel-1 geocoded unwrapped interferogram using ISCE2's TOPS processing workflow

To run a workflow, simply run python -m hyp3_isce2 ++process [WORKFLOW_NAME] [WORKFLOW_ARGS]. For example, to run the insar_tops_burst workflow:

python -m hyp3_isce2 ++process insar_tops_burst \ --reference S1_136231_IW2_20200604T022312_VV_7C85-BURST \ --secondary S1_136231_IW2_20200616T022313_VV_5D11-BURST \ --looks 20x4 \ --apply-water-mask True

and, for multiple burst pairs:

python -m hyp3_isce2 ++process insar_tops_burst \ --reference S1_136231_IW2_20200604T022312_VV_7C85-BURST S1_136232_IW2_20200604T022315_VV_7C85-BURST \ --secondary S1_136231_IW2_20200616T022313_VV_5D11-BURST S1_136232_IW2_20200616T022316_VV_5D11-BURST \ --looks 20x4 \ --apply-water-mask True

These commands will both create a Sentinel-1 interferogram that contains a deformation signal related to a 2020 Iranian earthquake.

Product Merging Utility Usage

This feature is under active development and is subject to change!

Burst InSAR products created using the insar_tops_burst workflow can be merged together using the merge_tops_burst workflow. This can be useful when the deformation signal you'd like to observe spans multiple bursts. It can be called using the following syntax: python -m hyp3_isce2 ++process merge_tops_bursts \ PATH_TO_UNZIPPED_PRODUCTS \ --apply-water-mask True Where PATH_TO_UNZIPPED_PRODUCTS is the path to a directory containing unzipped burst InSAR products. For example: bash PATH_TO_UNZIPPED_PRODUCTS/ ├─ S1_136232_IW2_20200604_20200616_VV_INT80_663F/ ├─ S1_136231_IW2_20200604_20200616_VV_INT80_529D/ In order to be merging eligible, all burst products must: 1. Have the same reference and secondary dates 1. Have the same polarization 1. Have the same multilooking 1. Be from the same relative orbit 1. Be contiguous

The workflow should through an error if any of these conditions are not met.

Merging burst InSAR products requires extra data that is not contained in the production HyP3 Burst InSAR products. For the time being, to be merging eligible burst products must be created locally using your own installation of hyp3-isce2 from the merge_bursts branch of this repository!

As mentioned above this feature is under active development, so we welcome any feedback you have!

Options

To learn about the arguments for each workflow, look at the help documentation (python -m hyp3_isce2 ++process [WORKFLOW_NAME] --help).

Looks Option

When ordering Sentinel-1 Burst InSAR On Demand products, users can choose the number of looks (--looks) to use in processing, which drives the resolution and pixel spacing of the output products. The available options are 20x4, 10x2, or 5x1. The first number indicates the number of looks in range, the second is the number of looks in azimuth.

The output product pixel spacing depends on the number of looks in azimuth: pixel spacing = 20 * azimuth looks

Products with 20x4 looks have a pixel spacing of 80 m, those with 10x2 looks have a pixel spacing of 40 m, and those with 5x1 looks have a pixel spacing of 20 m.

Water Mask Option

There is always a water mask geotiff file included in the product package, but setting the apply-water-mask (--apply-water-mask) option to True will apply the mask to the wrapped interferogram prior to phase unwrapping.

Earthdata Login Credentials

For all workflows, the user must provide their Earthdata Login credentials in order to download input data. If you do not already have an Earthdata account, you can sign up here. Your credentials can be passed to the workflows via environment variables (EARTHDATA_USERNAME, EARTHDATA_PASSWORD) or via your .netrc file. If you haven't set up a .netrc file before, check out this guide to get started.

Docker Container

The ultimate goal of this project is to create a docker container that can run ISCE2 workflows within a HyP3 deployment. To run the current version of the project's container, use this command: docker run -it --rm \ -e EARTHDATA_USERNAME=[YOUR_USERNAME_HERE] \ -e EARTHDATA_PASSWORD=[YOUR_PASSWORD_HERE] \ ghcr.io/asfhyp3/hyp3-isce2:latest \ ++process [WORKFLOW_NAME] \ [WORKFLOW_ARGS]

NOTE Each workflow can also be accessed via an alternative CLI with the format ([WORKFLOW_NAME] [WORKFLOW_ARGS])

Docker Outputs

To retain hyp3_isce2 output files running via Docker there are two recommended approaches:

  1. Use a volume mount

Add the -w /tmp -v [localdir]:/tmp flags after docker run. -w changes the working directory of the container to /tmp and -v will mount whichever local directory you choose so that such that hyp3_isce3 outputs are preserved locally.

  1. Copy outputs to remote object storage

Append the --bucket and --bucket-prefix to [WORKFLOW_ARGS]. Only the final output files and zipped archive of those files is uploaded. This also requires that AWS credentials to write to the bucket are available to the running container. For example, to write outputs to a hypothetical bucket s3://hypothetical-bucket/test-run/:

docker run -it --rm \ -e AWS_ACCESS_KEY_ID=[YOUR_KEY] \ -e AWS_SECRET_ACCESS_KEY=[YOUR_SECRET] \ -e AWS_SESSION_TOKEN=[YOUR_TOKEN] \ -e EARTHDATA_USERNAME=[YOUR_USERNAME_HERE] \ -e EARTHDATA_PASSWORD=[YOUR_PASSWORD_HERE] \ ghcr.io/asfhyp3/hyp3-isce2:latest \ ++process [WORKFLOW_NAME] \ [WORKFLOW_ARGS] \ --bucket "hypothetical-bucket" \ --bucket-prefix "test-run"

Tip: you can use docker run --env-file to capture all the necessary environment variables in a single file.

Developer Setup

  1. Ensure that conda is installed on your system (we recommend using mambaforge to reduce setup times).
  2. Download a local version of the hyp3-isce2 repository (git clone https://github.com/ASFHyP3/hyp3-isce2.git)
  3. In the base directory for this project call mamba env create -f environment.yml to create your Python environment, then activate it (mamba activate hyp3-isce2)
  4. Finally, install a development version of the package (python -m pip install -e .)

To run all commands in sequence use: bash git clone https://github.com/ASFHyP3/hyp3-isce2.git cd hyp3-isce2 mamba env create -f environment.yml mamba activate hyp3-isce2 python -m pip install -e .

Background

HyP3 is broken into two components: the cloud architecture/API that manage processing of HyP3 workflows, and Docker container plugins that contain scientific workflows which produce new science products from a variety of data sources (see figure below for the full HyP3 architecture).

Cloud Architecture

The cloud infratstructure-as-code for HyP3 can be found in the main HyP3 repository. This repository contains a plugin that can be used to process ISCE2-based processing of SAR data.

This project was heavily influenced by the DockerizedTopsApp project, which contains a similar workflow that is designed to produce ARIA Sentinel-1 Geocoded Unwrapped Interferogram standard products via HyP3.

License

The HyP3-ISCE2 plugin is licensed under the Apache License, Version 2 license. See the LICENSE file for more details.

Code of conduct

We strive to create a welcoming and inclusive community for all contributors to HyP3-ISCE2. As such, all contributors to this project are expected to adhere to our code of conduct.

Please see CODE_OF_CONDUCT.md for the full code of conduct text.

Contributing

Contributions to the HyP3-ISCE2 plugin are welcome! If you would like to contribute, please submit a pull request on the GitHub repository.

Contact Us

Want to talk about HyP3-ISCE2? We would love to hear from you!

Found a bug? Want to request a feature? open an issue

General questions? Suggestions? Or just want to talk to the team? chat with us on gitter

Owner

  • Name: HyP3
  • Login: ASFHyP3
  • Kind: organization
  • Location: Fairbanks, AK

Alaska Satellite Facility's Hybrid Pluggable Processing Pipeline

GitHub Events

Total
  • Create event: 78
  • Issues event: 15
  • Release event: 11
  • Watch event: 4
  • Delete event: 67
  • Issue comment event: 121
  • Push event: 214
  • Pull request review comment event: 86
  • Pull request review event: 161
  • Pull request event: 176
Last Year
  • Create event: 78
  • Issues event: 15
  • Release event: 11
  • Watch event: 4
  • Delete event: 67
  • Issue comment event: 121
  • Push event: 214
  • Pull request review comment event: 86
  • Pull request review event: 161
  • Pull request event: 176

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 50
  • Total pull requests: 241
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 4 days
  • Total issue authors: 10
  • Total pull request authors: 13
  • Average comments per issue: 2.06
  • Average comments per pull request: 1.13
  • Merged pull requests: 201
  • Bot issues: 0
  • Bot pull requests: 42
Past Year
  • Issues: 9
  • Pull requests: 86
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 2 days
  • Issue authors: 6
  • Pull request authors: 10
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.87
  • Merged pull requests: 61
  • Bot issues: 0
  • Bot pull requests: 33
Top Authors
Issue Authors
  • jtherrmann (18)
  • scottyhq (9)
  • asjohnston-asf (8)
  • forrestfwilliams (6)
  • ZGHHGZ (4)
  • jhkennedy (4)
  • cirrusasf (3)
  • hjkristenson (2)
  • alexmitchell (1)
  • gbrencher (1)
  • lidar-nevermore (1)
Pull Request Authors
  • forrestfwilliams (50)
  • jtherrmann (50)
  • dependabot[bot] (48)
  • AndrewPlayer3 (46)
  • asjohnston-asf (27)
  • cirrusasf (18)
  • jhkennedy (15)
  • mfangaritav (12)
  • hjkristenson (11)
  • scottyhq (4)
  • jacquelynsmale (3)
  • tools-bot (2)
  • williamh890 (1)
  • LiChiehLin (1)
Top Labels
Issue Labels
bug (28) Jira Bug (10) enhancement (9) refactor (2) CI/CD (1) Jira Story (1)
Pull Request Labels
bumpless (119) patch (63) minor (40) enhancement (6) major (6) bug (5) CI/CD (1) documentation (1) tools-bot (1)

Dependencies

environment.yml conda
  • asf_search >=6.4.0
  • dem_stitcher >=2.4.0
  • flake8
  • flake8-blind-except
  • flake8-builtins
  • flake8-import-order
  • gdal
  • geopandas
  • hyp3lib >=1.6,<2
  • isce2 >=2.6.3
  • jinja2
  • numpy
  • opencv
  • pip
  • pytest
  • pytest-console-scripts
  • pytest-cov
  • pytest-mock
  • python >=3.9
  • rasterio
  • setuptools
  • setuptools_scm
  • shapely
  • wheel
.github/workflows/changelog.yml actions
.github/workflows/coverage-report.yml actions
  • EndBug/add-and-commit v9 composite
  • MishaKav/pytest-coverage-comment main composite
  • actions/checkout v4 composite
  • mamba-org/setup-micromamba v1 composite
.github/workflows/create-jira-issue.yml actions
.github/workflows/labeled-pr.yml actions
.github/workflows/release-checklist-comment.yml actions
.github/workflows/release.yml actions
.github/workflows/static-analysis.yml actions
.github/workflows/tag-version.yml actions
.github/workflows/test-and-build.yml actions
Dockerfile docker
  • condaforge/mambaforge latest build
pyproject.toml pypi