Exemplo n.º 1
0
def create_parser():
    parser = argparse.ArgumentParser(description='Inverse velocity from time-series.',
                                     formatter_class=argparse.RawTextHelpFormatter,
                                     epilog=TEMPLATE+'\n'+REFERENCE+'\n'+EXAMPLE)

    parser.add_argument('timeseries_file',
                        help='Time series file for velocity inversion.')
    parser.add_argument('--template', '-t', dest='template_file', help='template file with options')
    parser.add_argument('-o', '--output', dest='outfile', help='output file name')
    parser.add_argument('--update', dest='update_mode', action='store_true',
                        help='Enable update mode, and skip estimation if:\n'+
                             '1) output velocity file already exists, readable '+
                             'and newer than input file\n' +
                             '2) all configuration parameters are the same.')

    # reference in time and space
    # for input file without reference info, e.g. ERA5.h5
    parser.add_argument('--ref-yx', dest='ref_yx', metavar=('Y', 'X'), type=int, nargs=2,
                        help='Change referene point Y X for display')
    parser.add_argument('--ref-date', dest='ref_date', metavar='DATE',
                        help='Change reference date for display')

    # dates of interest
    date = parser.add_argument_group('dates of interest')
    date.add_argument('--start-date','-s', dest='startDate',
                      help='start date for velocity estimation')
    date.add_argument('--end-date','-e', dest='endDate',
                      help='end date for velocity estimation')
    date.add_argument('--exclude', '--ex', dest='excludeDate', nargs='+', default=[],
                      help='date(s) not included in velocity estimation, i.e.:\n' +
                           '--exclude 20040502 20060708 20090103\n' +
                           '--exclude exclude_date.txt\n'+DROP_DATE_TXT)

    # time functions
    model = parser.add_argument_group('deformation model', 'a suite of time functions')
    model.add_argument('--polynomial', '--poly', '--poly-order', dest='polynomial', type=int, default=1,
                      help='a polynomial function with the input degree (default: %(default)s). E.g.:\n' +
                           '--polynomial 1            # linear\n' +
                           '--polynomial 2            # quadratic\n' + 
                           '--polynomial 3            # cubic\n')
    model.add_argument('--periodic', '--peri', dest='periodic', type=float, nargs='+', default=[],
                      help='periodic function(s) with period in decimal years (default: %(default)s). E.g.:\n' +
                           '--periodic 1.0            # an annual cycle\n' +
                           '--periodic 1.0 0.5        # an annual cycle plus a semi-annual cycle\n')
    model.add_argument('--step', dest='step', type=str, nargs='+', default=[],
                      help='step function(s) at YYYYMMDD (default: %(default)s). E.g.:\n' +
                           '--step 20061014           # coseismic step  at 2006-10-14\n' +
                           '--step 20110311 20120928  # coseismic steps at 2011-03-11 and 2012-09-28\n')

    # bootstrap
    bootstrap = parser.add_argument_group('bootstrapping', 'estimating the mean / STD of the velocity estimator')
    bootstrap.add_argument('--bootstrap', '--bootstrapping', dest='bootstrap', action='store_true',
                           help='Enable bootstrapping to estimate the mean and STD of the velocity estimator.')
    bootstrap.add_argument('--bc', '--bootstrap-count', dest='bootstrapCount', type=int, default=400,
                           help='number of iterations for bootstrapping (default: %(default)s).')

    # computing
    parser = arg_group.add_memory_argument(parser)

    return parser
Exemplo n.º 2
0
def create_parser():
    parser = argparse.ArgumentParser(
        description='Change reference date of timeseries.',
        formatter_class=argparse.RawTextHelpFormatter,
        epilog=TEMPLATE + '\n' + EXAMPLE)

    parser.add_argument('timeseries_file',
                        nargs='+',
                        help='timeseries file(s)')
    parser.add_argument(
        '-r',
        '--ref-date',
        dest='refDate',
        default='minRMS',
        help='reference date or method, default: auto. e.g.\n' + '20101120\n' +
        'reference_date.txt - text file with date in YYYYMMDD format in it\n' +
        'minRMS             - choose date with min residual standard deviation'
    )
    parser.add_argument('-t',
                        '--template',
                        dest='template_file',
                        help='template file with options')
    parser.add_argument('-o', '--outfile', help='Output file name.')

    # computing
    parser = arg_group.add_memory_argument(parser)

    return parser
Exemplo n.º 3
0
def create_parser():
    parser = argparse.ArgumentParser(description='Interactive time-series viewer',
                                     formatter_class=argparse.RawTextHelpFormatter,
                                     epilog=EXAMPLE)
    parser.add_argument('file', nargs='+',
                        help='time-series file to display\n'
                             'i.e.: timeseries_ERA5_ramp_demErr.h5 (MintPy)\n'
                             '      LS-PARAMS.h5 (GIAnT)\n'
                             '      S1_IW12_128_0593_0597_20141213_20180619.he5 (HDF-EOS5)')
    parser.add_argument('--label', dest='file_label', nargs='*', help='labels to display for multiple input files')
    parser.add_argument('--ylim', dest='ylim', nargs=2, metavar=('YMIN', 'YMAX'), type=float, help='Y limits for point plotting.')
    parser.add_argument('--tick-right', dest='tick_right', action='store_true', help='set tick and tick label to the right')
    parser.add_argument('-l','--lookup', dest='lookup_file', type=str, help='lookup table file')

    parser.add_argument('-n', dest='idx', metavar='NUM', type=int, help='Epoch/slice number for initial display.')
    parser.add_argument('--error', dest='error_file', help='txt file with error for each date.')

    # time info
    parser.add_argument('--start-date', dest='start_date', type=str, help='start date of displacement to display')
    parser.add_argument('--end-date', dest='end_date', type=str, help='end date of displacement to display')
    parser.add_argument('--exclude', '--ex', dest='ex_date_list', nargs='*', default=['exclude_date.txt'], help='Exclude date shown as gray.')
    parser.add_argument('--zf', '--zero-first', dest='zero_first', action='store_true', help='Set displacement at first acquisition to zero.')
    parser.add_argument('--off','--offset', dest='offset', type=float, help='Offset for each timeseries file.')

    parser.add_argument('--noverbose', dest='print_msg', action='store_false', help='Disable the verbose message printing.')

    # temporal model fitting
    parser.add_argument('--nomodel', '--nofit', dest='plot_model', action='store_false',
                        help='Do not plot the prediction of the time function (deformation model) fitting.')
    parser.add_argument('--plot-model-conf-int', '--plot-fit-conf-int', dest='plot_model_conf_int', action='store_true',
                        help='Plot the time function prediction confidence intervals.\n'
                             '[!-- Preliminary feature alert! --!]\n'
                             '[!-- This feature is NOT throughly checked. Read the code before use. Interpret at your own risk! --!]')

    parser = arg_group.add_timefunc_argument(parser)

    # pixel of interest
    pixel = parser.add_argument_group('Pixel Input')
    pixel.add_argument('--yx', type=int, metavar=('Y', 'X'), nargs=2, help='initial pixel to plot in Y/X coord')
    pixel.add_argument('--lalo', type=float, metavar=('LAT', 'LON'), nargs=2, help='initial pixel to plot in lat/lon coord')

    pixel.add_argument('--marker', type=str, default='o', help='marker style (default: %(default)s).')
    pixel.add_argument('--ms', '--markersize', dest='marker_size', type=float, default=6.0, help='marker size (default: %(default)s).')
    pixel.add_argument('--lw', '--linewidth', dest='linewidth', type=float, default=0, help='line width (default: %(default)s).')
    pixel.add_argument('--ew', '--edgewidth', dest='edge_width', type=float, default=1.0, help='Edge width for the error bar (default: %(default)s)')

    # other groups
    parser = arg_group.add_data_disp_argument(parser)
    parser = arg_group.add_dem_argument(parser)
    parser = arg_group.add_figure_argument(parser)
    parser = arg_group.add_gps_argument(parser)
    parser = arg_group.add_mask_argument(parser)
    parser = arg_group.add_map_argument(parser)
    parser = arg_group.add_memory_argument(parser)
    parser = arg_group.add_reference_argument(parser)
    parser = arg_group.add_save_argument(parser)
    parser = arg_group.add_subset_argument(parser)

    return parser
Exemplo n.º 4
0
def create_parser():
    parser = argparse.ArgumentParser(description='Estimate velocity / time functions from time-series.',
                                     formatter_class=argparse.RawTextHelpFormatter,
                                     epilog=TEMPLATE+'\n'+REFERENCE+'\n'+EXAMPLE)

    parser.add_argument('timeseries_file',
                        help='Time series file for velocity inversion.')
    parser.add_argument('--template', '-t', dest='template_file', help='template file with options')
    parser.add_argument('-o', '--output', dest='outfile', help='output file name')
    parser.add_argument('--update', dest='update_mode', action='store_true',
                        help='Enable update mode, and skip estimation if:\n'+
                             '1) output velocity file already exists, readable '+
                             'and newer than input file\n' +
                             '2) all configuration parameters are the same.')

    parser.add_argument('--ts-std-file', dest='ts_std_file',
                        help='Time-series STD file for velocity STD calculation.')

    # reference in time and space
    # for input file without reference info, e.g. ERA5.h5
    parser.add_argument('--ref-yx', dest='ref_yx', metavar=('Y', 'X'), type=int, nargs=2,
                        help='Change referene point Y X for estimation.')
    parser.add_argument('--ref-date', dest='ref_date', metavar='DATE',
                        help='Change reference date for estimation.')

    # dates of interest
    date = parser.add_argument_group('dates of interest')
    date.add_argument('--start-date','-s', dest='startDate',
                      help='start date for velocity estimation')
    date.add_argument('--end-date','-e', dest='endDate',
                      help='end date for velocity estimation')
    date.add_argument('--exclude', '--ex', dest='excludeDate', nargs='+', default=[],
                      help='date(s) not included in velocity estimation, i.e.:\n' +
                           '--exclude 20040502 20060708 20090103\n' +
                           '--exclude exclude_date.txt\n'+DROP_DATE_TXT)

    # bootstrap
    bootstrap = parser.add_argument_group('bootstrapping', 'estimating the mean / STD of the velocity estimator')
    bootstrap.add_argument('--bootstrap', '--bootstrapping', dest='bootstrap', action='store_true',
                           help='Enable bootstrapping to estimate the mean and STD of the velocity estimator.')
    bootstrap.add_argument('--bc', '--bootstrap-count', dest='bootstrapCount', type=int, default=400,
                           help='number of iterations for bootstrapping (default: %(default)s).')

    # time functions
    parser = arg_group.add_timefunc_argument(parser)

    # computing
    parser = arg_group.add_memory_argument(parser)

    return parser
Exemplo n.º 5
0
def create_parser():
    parser = argparse.ArgumentParser(
        description=
        'Resample radar coded files into geo coordinates, or reverse',
        formatter_class=argparse.RawTextHelpFormatter,
        epilog=TEMPLATE + '\n' + EXAMPLE)

    parser.add_argument('file', nargs='+', help='File(s) to be geocoded')
    parser.add_argument(
        '-d',
        '--dset',
        help='dataset to be geocoded, for example:\n' +
        'height                        for geometryRadar.h5\n' +
        'unwrapPhase-20100114_20101017 for ifgramStack.h5')

    parser.add_argument(
        '-l',
        '--lookup',
        dest='lookupFile',
        help='Lookup table file generated by InSAR processors.')
    parser.add_argument('-t',
                        '--template',
                        dest='templateFile',
                        help="Template file with geocoding options.")

    parser.add_argument(
        '--geo2radar',
        '--geo2rdr',
        dest='radar2geo',
        action='store_false',
        help='resample geocoded files into radar coordinates.\n' +
        'ONLY for lookup table in radar-coord (ISCE, Doris).')

    # output grid / geometry
    out = parser.add_argument_group('grid in geo-coordinates')
    out.add_argument(
        '-b',
        '--bbox',
        dest='SNWE',
        type=float,
        nargs=4,
        metavar=('S', 'N', 'W', 'E'),
        help='Bounding box for the area of interest.\n'
        'using coordinates of the uppler left corner of the first pixel\n'
        '                 and the lower right corner of the last pixel\n'
        "for radar2geo, it's the output spatial extent\n"
        "for geo2radar, it's the input  spatial extent")
    out.add_argument(
        '--lalo',
        '--lalo-step',
        dest='laloStep',
        type=float,
        nargs=2,
        metavar=('LAT_STEP', 'LON_STEP'),
        help='output pixel size in degree in latitude / longitude.{}'.format(
            DEG2METER))

    # interpolation / resampling
    interp = parser.add_argument_group('interpolation')
    interp.add_argument(
        '-i',
        '--interp',
        dest='interpMethod',
        default='nearest',
        choices={'nearest', 'linear'},
        help='interpolation/resampling method (default: %(default)s).')
    interp.add_argument(
        '--fill',
        dest='fillValue',
        type=float,
        default=np.nan,
        help='Fill value for extrapolation (default: %(default)s).')
    interp.add_argument(
        '-n',
        '--nprocs',
        dest='nprocs',
        type=int,
        default=1,
        help=
        'number of processors to be used for calculation (default: %(default)s).\n'
        + 'Note: Do not use more processes than available processor cores.')
    interp.add_argument(
        '--software',
        dest='software',
        default='pyresample',
        choices={'pyresample', 'scipy'},
        help='software/module used for interpolation (default: %(default)s)\n'
        'Note: --bbox is not supported for -p scipy')

    parser.add_argument(
        '--update',
        dest='updateMode',
        action='store_true',
        help='skip resampling if output file exists and newer than input file')
    parser.add_argument('-o',
                        '--output',
                        dest='outfile',
                        help="output file name. Default: add prefix 'geo_'")
    parser.add_argument('--outdir',
                        '--output-dir',
                        dest='out_dir',
                        help='output directory.')

    # computing
    parser = arg_group.add_memory_argument(parser)

    return parser
Exemplo n.º 6
0
def create_parser():
    parser = argparse.ArgumentParser(
        description='DEM Error (Topographic Residual) Correction',
        formatter_class=argparse.RawTextHelpFormatter,
        epilog='{}\n{}\n{}'.format(REFERENCE, TEMPLATE, EXAMPLE))

    parser.add_argument('timeseries_file',
                        help='Timeseries file to be corrrected')
    parser.add_argument('-g',
                        '--geometry',
                        dest='geom_file',
                        help='geometry file including datasets:\n' +
                        'incidence angle\n' + 'slant range distance\n' +
                        'and/or 3D perpendicular baseline')
    parser.add_argument('-o',
                        '--outfile',
                        help='Output file name for corrected time-series')

    defo_model = parser.add_argument_group('temporal deformation model')
    defo_model.add_argument('-t',
                            '--template',
                            dest='template_file',
                            help='template file with the options')
    defo_model.add_argument(
        '--ex',
        '--exclude',
        dest='excludeDate',
        nargs='*',
        default=[],
        help='Exclude date(s) for DEM error estimation.\n' +
        'All dates will be corrected for DEM residual phase still.')
    defo_model.add_argument(
        '-p',
        '--poly-order',
        dest='polyOrder',
        type=int,
        default=2,
        help=
        'polynomial order number of temporal deformation model (default: %(default)s).'
    )
    defo_model.add_argument(
        '-s',
        '--step-date',
        dest='stepFuncDate',
        nargs='*',
        default=[],
        help=
        'Date of step jump for temporal deformation model (default: %(default)s).'
        + ' i.e. date of earthquake/volcanic eruption')
    defo_model.add_argument(
        '--periodic',
        '--period',
        '--peri',
        dest='periodic',
        type=float,
        nargs='+',
        default=[],
        help=
        'periodic functinos of temporal deformation model (default: %(default)s).'
    )

    parser.add_argument(
        '--phase-velocity',
        dest='phaseVelocity',
        action='store_true',
        help='Use phase velocity instead of phase for inversion constrain.')
    parser.add_argument('--update',
                        dest='update_mode',
                        action='store_true',
                        help='Enable update mode, and skip inversion if:\n' +
                        '1) output timeseries file already exists, readable ' +
                        'and newer than input interferograms file\n' +
                        '2) all configuration parameters are the same.')
    # computing
    parser = arg_group.add_memory_argument(parser)
    parser = arg_group.add_parallel_argument(parser)

    return parser