Skip to main content

L2 Subsetter Service

Project description

l2ss-py

Coverage
develop: Develop Build
main: Main Build

Harmony service for subsetting L2 data. l2ss-py supports:

  • Spatial subsetting
    • Bounding box
    • Shapefile subsetting
    • GeoJSON subsetting
  • Temporal subsetting
  • Variable subsetting

If you would like to contribute to l2ss-py, refer to the contribution document.

Initial setup, with poetry

  1. Follow the instructions for installing poetry here.
  2. Install l2ss-py, with its dependencies, by running the following from the repository directory:
poetry install

Note: l2ss-py can be installed as above and run without any dependency on harmony. However, to additionally test the harmony adapter layer, extra dependencies can be installed with poetry install -E harmony.

How to test l2ss-py locally

Unit tests

There are comprehensive unit tests for l2ss-py. The tests can be run as follows:

poetry run pytest -m "not aws and not integration" tests/

You can generate coverage reports as follows:

poetry run pytest --junitxml=build/reports/pytest.xml --cov=podaac/ --cov-report=html -m "not aws and not integration" tests/

Note: The majority of the tests execute core functionality of l2ss-py without ever interacting with the harmony python modules. The test_subset_harmony tests, however, are explicitly for testing the harmony adapter layer and do require the harmony optional dependencies be installed, as described above with the -E harmony argument.

l2ss-py script

You can run l2ss-py on a single granule without using Harmony. In order to run this, the l2ss-py package must be installed in your current Python interpreter

$ l2ss-py --help                                                                                                                    
usage: run_subsetter.py [-h] [--bbox BBOX BBOX BBOX BBOX]
                        [--variables VARIABLES [VARIABLES ...]]
                        [--min-time MIN_TIME] [--max-time MAX_TIME] [--cut]
                        input_file output_file

Run l2ss-py

positional arguments:
  input_file            File to subset
  output_file           Output file

optional arguments:
  -h, --help            show this help message and exit
  --bbox BBOX BBOX BBOX BBOX
                        Bounding box in the form min_lon min_lat max_lon
                        max_lat
  --variables VARIABLES [VARIABLES ...]
                        Variables, only include if variable subset is desired.
                        Should be a space separated list of variable names
                        e.g. sst wind_dir sst_error ...
  --min-time MIN_TIME   Min time. Should be ISO-8601 format. Only include if
                        temporal subset is desired.
  --max-time MAX_TIME   Max time. Should be ISO-8601 format. Only include if
                        temporal subset is desired.
  --cut                 If provided, scanline will be cut
  --shapefile SHAPEFILE
                        Path to either shapefile or geojson file used to subset the provided input granule

For example:

l2ss-py /path/to/input.nc /path/to/output.nc --bbox -50 -10 50 10 --variables wind_speed wind_dir ice_age time --min-time '2015-07-02T09:00:00' --max-time '2015-07-02T10:00:00' --cut

An addition to providing a bounding box, spatial subsetting can be achieved by passing in a shapefile or a geojson file.

poetry run l2ss-py /path/to/input.nc /path/to/output.nc --shapefile /path/to/test.shp

or

poetry run l2ss-py /path/to/input.nc /path/to/output.nc --shapefile /path/to/test.geojson

Running Harmony locally

In order to fully test l2ss-py with Harmony, you can run Harmony locally. This requires the data exists in UAT Earthdata Cloud.

  1. Set up local Harmony instance. Instructions here
  2. Add concept ID for your data to services.yml
  3. Execute a local Harmony l2ss-py request. For example:
    localhost:3000/YOUR_COLLECTION_ID/ogc-api-coverages/1.0.0/collections/all/coverage/rangeset?format=application%2Fx-netcdf4&subset=lat(-10%3A10)&subset=lon(-10%3A10)&maxResults=2
    

NASA EOSDIS Integration

Detailed instructions for integrating with EOSDIS can be found here.

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

l2ss_py-3.3.0.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

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

l2ss_py-3.3.0-py3-none-any.whl (50.6 kB view details)

Uploaded Python 3

File details

Details for the file l2ss_py-3.3.0.tar.gz.

File metadata

  • Download URL: l2ss_py-3.3.0.tar.gz
  • Upload date:
  • Size: 44.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.14.0-1017-azure

File hashes

Hashes for l2ss_py-3.3.0.tar.gz
Algorithm Hash digest
SHA256 e066b41ad32073058ef09e460f627cdf231d925e46012aa112d63f3ec622b342
MD5 86abf58276611707f2823287b14909b1
BLAKE2b-256 c926704e6d88e3af63911ed779e53e2a107d118e550b3aa81840a911ad7b06f8

See more details on using hashes here.

File details

Details for the file l2ss_py-3.3.0-py3-none-any.whl.

File metadata

  • Download URL: l2ss_py-3.3.0-py3-none-any.whl
  • Upload date:
  • Size: 50.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.14.0-1017-azure

File hashes

Hashes for l2ss_py-3.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa15e76902e27639293eb6077b3892196a327b3cbc2e5f362496af536350b1ca
MD5 a844ac143a0ec43738cd371846ca2037
BLAKE2b-256 b27286f1e3615a1765c0ce325e98b29d2dc5233d229e81e3e3be4c2956b08671

See more details on using hashes here.

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