Source code for podaac.subsetter.run_subsetter

"""
run_subsetter.py

This script runs L2SS-Py on the given granule.
"""

import argparse
import logging
import os
import sys

import numpy as np

from podaac.subsetter import subset


[docs] def parse_args(args: list) -> tuple: """ Parse args for this script. Returns ------- tuple input_file, output_file, bbox, variables, min_time, max_time """ parser = argparse.ArgumentParser(description="Run l2ss-py") parser.add_argument("input_file", type=str, help="File to subset") parser.add_argument("output_file", type=str, help="Output file") parser.add_argument( "--bbox", type=float, default=[-180, -90, 180, 90], nargs=4, action="store", help="Bounding box in the form min_lon min_lat max_lon max_lat", ) parser.add_argument( "--variables", type=str, default=None, nargs="+", help="Variables, only include if variable subset is desired. " "Should be a space separated list of variable names e.g. " "sst wind_dir sst_error ...", ) parser.add_argument( "--min-time", type=str, default=None, help="Min time. Should be ISO-8601 format. Only include if " "temporal subset is desired.", ) parser.add_argument( "--max-time", type=str, default=None, help="Max time. Should be ISO-8601 format. Only include if " "temporal subset is desired.", ) parser.add_argument("--cut", default=False, action="store_true", help="If provided, scanline will be cut") parser.add_argument( "--shapefile", type=str, default=None, help="Path to either shapefile or geojson file used to subset " "the provided input granule", ) parser.add_argument( "--pixel_subset", default=False, action="store_true", help="To pixel cut based the lon lat on the bounding box" ) parser.add_argument( "--vertical-var", type=str, default=None, help="Name of the vertical variable to subset by (e.g., depth, altitude)", ) parser.add_argument( "--vertical-min", type=float, default=None, help="Minimum value for vertical subsetting (inclusive)" ) parser.add_argument( "--vertical-max", type=float, default=None, help="Maximum value for vertical subsetting (inclusive)" ) args = parser.parse_args(args=args) bbox = np.array([[args.bbox[0], args.bbox[2]], [args.bbox[1], args.bbox[3]]]) return ( args.input_file, args.output_file, bbox, args.variables, args.min_time, args.max_time, args.cut, args.shapefile, args.pixel_subset, args.vertical_var, args.vertical_min, args.vertical_max, )
[docs] def run_subsetter(args: list) -> None: """ Parse arguments and run subsetter on the specified input file """ ( input_file, output_file, bbox, variables, min_time, max_time, cut, shapefile, pixel_subset, vertical_var, vertical_min, vertical_max, ) = parse_args(args) logging.info("Executing subset on %s...", input_file) subset.subset( file_to_subset=input_file, bbox=bbox, output_file=output_file, variables=variables, cut=cut, min_time=min_time, max_time=max_time, origin_source=os.path.basename(input_file), shapefile=shapefile, pixel_subset=pixel_subset, vertical_var=vertical_var, vertical_min=vertical_min, vertical_max=vertical_max, ) logging.info("Subset complete. Result in %s", output_file)
[docs] def main() -> None: """Entry point to the script""" logging.basicConfig( stream=sys.stdout, format="[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s", level=logging.DEBUG, ) run_subsetter(sys.argv[1:])
if __name__ == "__main__": main()