Skip to main content

Miscellaneous utilities for working with OPERA data products

Project description

opera-utils

Actions Status PyPI version

Conda-Forge GitHub Discussion

Install

The opera_utils package is available on PyPI and conda-forge:

# if mamba is not already installed: conda install -n base mamba
mamba install -c conda-forge opera-utils

(Note: using mamba is recommended for conda-forge packages, but miniconda can also be used.)

pip install opera-utils

The pip dependency list for the base package is smaller; the optional depencies may be added with

pip install opera-utils[geopandas] # for just geopandas data frame support
pip install opera-utils[disp] # For remote access to DISP files
pip install opera-utils[all]  # all optional dependencies

DISP-S1 Usage examples

Try it out!

We have set up Github Actions so that users can download and format subsets of DISP-S1 data with no coding required!

  1. Fork this repository
  2. Set up your EARTHDATA_USERNAME and EARTHDATA_PASSWORD in the Github Actions secrets settings (e.g. for my fork, I use https://github.com/scottstanie/opera-utils/settings/secrets/actions )
  3. Under the Actions tab, click on the disp_download_reformat workflow.
  4. Select the Run workflow dropdown and supply the required information, then click the green Run workflow button
  5. The resulting reformatted Zarr will be preserved as Github Artifacts, which can be downloaded.

You can also run the notebooks in the docs/notebooks directory:

Usage examples

Parsing Sentinel-1 Burst IDs

import opera_utils
print(opera_utils.get_burst_id("OPERA_L2_CSLC-S1_T087-185683-IW2_20230322T161649Z_20240504T185235Z_S1A_VV_v1.1.h5"))
't087_185683_iw2'

Get DISP-S1 Frame metadata

In [4]: opera_utils.get_frame_to_burst_mapping(11114)
Out[4]:
{'epsg': 32610,
 'is_land': True,
 'is_north_america': True,
 'xmin': 546450,
 'ymin': 4204110,
 'xmax': 833790,
 'ymax': 4409070,
 'burst_ids': ['t042_088905_iw1',
  ...
 ]

To just get the burst IDs for a Frame:

In [3]: opera_utils.get_burst_ids_for_frame(11114)
Out[3]:
['t042_088905_iw1',
 't042_088905_iw2',
 ...
 't042_088913_iw2',
 't042_088913_iw3']

DISP-S1 access

Download a subset from the command lind

opera-utils disp-s1-download \
    --bbox -102.71 31.35 -102.6 31.45 \
    --frame-id 20697 \
    --output-dir subsets-west-texas \
    --end-datetime 2018-01-01 \\
    --num-workers 4

Search for products and create a stack

from opera_utils.disp import search, reader, DispProductStack

# Search for DISP-S1 products on CMR
products = search.get_products(frame_id=9154)

# Create the product stack for parsing frame metadata
stack = DispProductStack(products)

Setup for Developers

To contribute to the development of opera-utils, you can fork the repository and install the package in development mode. We encourage new features to be developed on a new branch of your fork, and then submitted as a pull request to the main repository.

To install locally,

  1. Download source code:
git clone https://github.com/opera-adt/opera-utils.git && cd opera-utils
  1. Install dependencies:
mamba env create --name my-opera-env --file environment.yml
  1. Install the source in editable mode:
mamba activate my-opera-env
python -m pip install -e ".[all]"

We use pre-commit to automatically run linting and formatting:

# Get pre-commit hooks so that linting/formatting is done automatically
pre-commit install

This will set up the linters and formatters to run on any staged files before you commit them.

After making functional changes, you can rerun the existing tests and any new ones you have added using:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opera_utils-0.25.4.tar.gz (390.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opera_utils-0.25.4-py3-none-any.whl (103.6 kB view details)

Uploaded Python 3

File details

Details for the file opera_utils-0.25.4.tar.gz.

File metadata

  • Download URL: opera_utils-0.25.4.tar.gz
  • Upload date:
  • Size: 390.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opera_utils-0.25.4.tar.gz
Algorithm Hash digest
SHA256 9416d8d78aeb051154ca56a6409cf5af5b88f74bb7c9ece9a0551c0569eb2750
MD5 f90dff9374b686670bb39a0d2cc3051a
BLAKE2b-256 bda9f7cdd0670dc64064564a4acc081d9464f1bd590a89137019fd8ca11505c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for opera_utils-0.25.4.tar.gz:

Publisher: cd.yml on opera-adt/opera-utils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opera_utils-0.25.4-py3-none-any.whl.

File metadata

  • Download URL: opera_utils-0.25.4-py3-none-any.whl
  • Upload date:
  • Size: 103.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for opera_utils-0.25.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7bae2e4c2de1bce45428a7d09ca40a412ea40f23c4dfcf4c7a106521ad529d3d
MD5 fff66b9f093749eeabf4a4a1819c58fc
BLAKE2b-256 60722b7b0c6272739f47984714003a78d0bbb41ff75034f9d7d0f064e5c6cbfe

See more details on using hashes here.

Provenance

The following attestation bundles were made for opera_utils-0.25.4-py3-none-any.whl:

Publisher: cd.yml on opera-adt/opera-utils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page