It would be nice if we could do the argparse such that we can reuse the same code in multiple scripts. Here a suggestion from Yunjun. I think we ideally have all options that are potentially refused in one script, import it, and have one-liners for each option. This would allow us to have easily the same/similar option in, e.g. process_rsmas.py, execute_runfiles.py and run_operations.py.
########################################### Parser utilities ##############################################
def cmd_line_parse(iargs=''):
parser = argparse.ArgumentParser(description='Ploting Parser')
parser = add_data_disp_argument(parser)
parser = add_dem_argument(parser)
parser = add_figure_argument(parser)
parser = add_gps_argument(parser)
parser = add_mask_argument(parser)
parser = add_map_argument(parser)
parser = add_point_argument(parser)
parser = add_reference_argument(parser)
parser = add_save_argument(parser)
parser = add_subset_argument(parser)
inps = parser.parse_args(args=iargs)
return inps
def add_data_disp_argument(parser):
# Data Display Option
data = parser.add_argument_group('Data Display Options', 'Options to adjust the dataset display')
data.add_argument('-v','--vlim', dest='vlim', nargs=2, metavar=('VMIN', 'VMAX'), type=float,
help='Display limits for matrix plotting.')
data.add_argument('-u', '--unit', dest='disp_unit', metavar='UNIT',
help='unit for display. Its priority > wrap')
data.add_argument('--wrap', action='store_true',
help='re-wrap data to display data in fringes.')
data.add_argument('--wrap-range', dest='wrap_range', type=float, nargs=2,
default=[-1.*np.pi, np.pi], metavar=('MIN', 'MAX'),
help='range of one cycle after wrapping, default: [-pi, pi]')
data.add_argument('--flip-lr', dest='flip_lr',
action='store_true', help='flip left-right')
data.add_argument('--flip-ud', dest='flip_ud',
action='store_true', help='flip up-down')
data.add_argument('--noflip', dest='auto_flip', action='store_false',
help='turn off auto flip for radar coordinate file')
data.add_argument('--multilook-num', dest='multilook_num', type=int, default=1, metavar='NUM',
help='multilook data in X and Y direction with a factor for display')
data.add_argument('--nomultilook', '--no-multilook', dest='multilook', action='store_false',
help='do not multilook, for high quality display. \n'
'If multilook and multilook_num=1, multilook_num will be estimated automatically.\n'
'Useful when displaying big datasets.')
data.add_argument('--alpha', dest='transparency', type=float,
help='Data transparency. \n'
'0.0 - fully transparent, 1.0 - no transparency.')
return parser
def add_dem_argument(parser):
# DEM
dem = parser.add_argument_group('DEM', 'display topography in the background')
dem.add_argument('-d', '--dem', dest='dem_file', metavar='DEM_FILE',
help='DEM file to show topography as background')
dem.add_argument('--dem-noshade', dest='disp_dem_shade', action='store_false',
help='do not show DEM shaded relief')
dem.add_argument('--dem-nocontour', dest='disp_dem_contour', action='store_false',
help='do not show DEM contour lines')
dem.add_argument('--contour-smooth', dest='dem_contour_smooth', type=float, default=3.0,
help='Background topography contour smooth factor - sigma of Gaussian filter. \n'
'Default is 3.0; set to 0.0 for no smoothing.')
dem.add_argument('--contour-step', dest='dem_contour_step', metavar='NUM', type=float, default=200.0,
help='Background topography contour step in meters. \n'
'Default is 200 meters.')
dem.add_argument('--shade-az', dest='shade_azdeg', type=float, default=315., metavar='DEG',
help='The azimuth (0-360, degrees clockwise from North) of the light source\n'
'Default is 315.')
dem.add_argument('--shade-alt', dest='shade_altdeg', type=float, default=45., metavar='DEG',
help='The altitude (0-90, degrees up from horizontal) of the light source.\n'
'Default is 45.')
dem.add_argument('--shade-min', dest='shade_min', type=float, default=-4000., metavar='MIN',
help='The min height in m of colormap of shaded relief topography\n'
'Default: -4000 m')
dem.add_argument('--shade-max', dest='shade_max', type=float, default=999., metavar='MAX',
help='The max height of colormap of shaded relief topography\n'
'Default: max(DEM) + 2000 m')
dem.add_argument('--shade-exag', dest='shade_exag', type=float, default=0.5,
help='Vertical exaggeration ratio, default: 0.5')
return parser
It would be nice if we could do the argparse such that we can reuse the same code in multiple scripts. Here a suggestion from Yunjun. I think we ideally have all options that are potentially refused in one script, import it, and have one-liners for each option. This would allow us to have easily the same/similar option in, e.g. process_rsmas.py, execute_runfiles.py and run_operations.py.
@mirzaees @Ovec8hkin @yunjunz : how do you think?
https://docs.python.org/3.6/library/argparse.html#argument-groups
https://github.com/insarlab/MintPy/blob/master/mintpy/utils/plot.py#L532