- Notifications
You must be signed in to change notification settings - Fork14
Level 2 subsetter with Harmony integration
License
podaac/l2ss-py
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 thecontribution document.
- Follow the instructions for installing
poetry
here. - 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 onharmony
.However, to additionally test the harmony adapter layer,extra dependencies can be installed withpoetry install -E harmony
.
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.Thetest_subset_harmony
tests, however, are explicitly for testing the harmony adapter layerand do require the harmony optional dependencies be installed,as described above with the-E harmony
argument.
You can run l2ss-py on a single granule without using Harmony. In orderto run this, the l2ss-py package must be installed in your currentPython 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_fileRun l2ss-pypositional arguments: input_file File to subset output_file Output fileoptional 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
In order to fully test l2ss-py with Harmony, you can run Harmony locally. This requires the data exists in UAT Earthdata Cloud.
- Set up local Harmony instance. Instructionshere
- Add concept ID for your data toservices.yml
- 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
Detailed instructions for integrating with EOSDIS can be foundhere.
About
Level 2 subsetter with Harmony integration