input_options:
  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .
  #   Type: string | null.
  subdataset:
  # Format of dates contained in CSLC filenames.
  #   Type: string.
  cslc_date_fmt: '%Y%m%d'
  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the
  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not
  #   recognized, outputs remain in radians.
  #   Type: number | null.
  wavelength:
# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no
#   data/invalid, and 1 for good data. Dtype must be uint8.
#   Type: string | null.
mask_file:
# Name of sub-directory to use for writing output files.
#   Type: string.
work_directory: .
# Don't resolve filepaths that are given as relative to be absolute.
#   Type: boolean.
keep_paths_relative: false
worker_settings:
  # Whether to use GPU for processing (if available).
  #   Type: boolean.
  gpu_enabled: false
  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in
  #   each python process.
  #   Type: integer.
  threads_per_worker: 1
  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-
  #   phase-estimation.
  #   Type: integer.
  n_parallel_bursts: 1
  # Size (rows, columns) of blocks of data to load at a time.
  #   Type: array.
  block_shape:
    - 512
    - 512
# Path to output log file (in addition to logging to `stderr`). Default logs to
#   `dolphin.log` within `work_directory`.
#   Type: string | null.
log_file:
# Time the config file was created.
#   Type: string.
# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.
#   Type: array.
cslc_file_list: []
output_options:
  # Output (x, y) resolution (in units of input data).
  #   Type: object | null.
  output_resolution:
  # Alternative to specifying output resolution: Specify the (x, y) strides (decimation
  #   factor) to perform while processing input. For example, strides of [4, 2] would turn an
  #   input resolution of [5, 10] into an output resolution of [20, 20].
  #   Type: object.
  strides:
    x: 1
    y: 1
  # Area of interest: [left, bottom, right, top] coordinates. e.g.
  #   `bbox=[-150.2,65.0,-150.1,65.5]`.
  #   Type: array | null.
  bounds:
  # EPSG code for the `bounds` coordinates, if specified.
  #   Type: integer.
  bounds_epsg: 4326
  # Options for `create_dataset` with h5py.
  #   Type: object.
  hdf5_creation_options:
    chunks:
      - 128
      - 128
    compression: gzip
    compression_opts: 4
    shuffle: true
  # GDAL creation options for GeoTIFF files.
  #   Type: array.
  gtiff_creation_options:
    - COMPRESS=lzw
    - ZLEVEL=4
    - BIGTIFF=yes
    - TILED=yes
    - INTERLEAVE=band
    - BLOCKXSIZE=128
    - BLOCKYSIZE=128
  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but
  #   can be useful for visualizing the data with web mapping tools. See
  #   https://gdal.org/programs/gdaladdo.html for more.
  #   Type: boolean.
  add_overviews: true
  # List of overview levels to create (if `add_overviews=True`).
  #   Type: array.
  overview_levels:
    - 4
    - 8
    - 16
    - 32
    - 64
  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two
  #   single reference networks; the later resets at the given date (e.g. for a large
  #   earthquake event). If passing strings, formats accepted are YYYY-MM-
  #   DD[T]HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM], or YYYY-MM-DD.
  #   Type: string | null.
  extra_reference_date:
ps_options:
  # Amplitude dispersion threshold to consider a pixel a PS.
  #   Type: number.
  amp_dispersion_threshold: 0.25
# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.
#   If none provided, computed using the input SLC stack.
#   Type: array.
amplitude_dispersion_files: []
# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If
#   none provided, computed using the input SLC stack.
#   Type: array.
amplitude_mean_files: []
phase_linking:
  # Size of the ministack for sequential estimator.
  #   Type: integer.
  ministack_size: 10
  # Maximum number of compressed images to use in sequential estimator. If there are more
  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .
  #   Type: integer.
  max_num_compressed: 100
  # Index of input SLC to use for making phase linked interferograms after EVD/EMI.
  #   Type: integer.
  output_reference_idx: 0
  half_window:
    # Half window size (in pixels) for x direction.
    #   Type: integer.
    x: 11
    # Half window size (in pixels) for y direction.
    #   Type: integer.
    y: 5
  # Use EVD on the coherence instead of using the EMI algorithm.
  #   Type: boolean.
  use_evd: false
  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.
  #   Type: number.
  beta: 0.0
  # Method for finding SHPs during phase linking.
  #   Type: string.
  #   Options: ['glrt', 'ks', 'rect', 'rect'].
  shp_method: glrt
  # Significance level (probability of false alarm) for SHP tests.
  #   Type: number.
  shp_alpha: 0.005
  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing
  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should
  #   be included, regardless of its PS label.
  #   Type: boolean.
  mask_input_ps: false
  # StBAS parameter to include only nearest-N interferograms forphase linking. A
  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`
  #   must be positive.
  #   Type: integer | null.
  baseline_lag:
interferogram_network:
  # For single-reference network: Index of the reference image in the network.
  #   Type: integer | null.
  reference_idx: 0
  # Max `n` to form the nearest-`n` interferograms by index.
  #   Type: integer | null.
  max_bandwidth:
  # Maximum temporal baseline of interferograms.
  #   Type: integer | null.
  max_temporal_baseline:
  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.
  #   Type: array | null.
  indexes:
unwrap_options:
  # Whether to run the unwrapping step after wrapped phase estimation.
  #   Type: boolean.
  run_unwrap: true
  # Whether to run Goldstein filtering step on wrapped interferogram.
  #   Type: boolean.
  run_goldstein: false
  # Whether to run interpolation step on wrapped interferogram.
  #   Type: boolean.
  run_interpolation: false
  # Phase unwrapping method.
  #   Type: string.
  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].
  unwrap_method: snaphu
  # Number of interferograms to unwrap in parallel.
  #   Type: integer.
  n_parallel_jobs: 1
  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .
  #   Type: boolean.
  zero_where_masked: false
  preprocess_options:
    # Adaptive phase (Goldstein) filter exponent parameter.
    #   Type: number.
    alpha: 0.5
    # (for interpolation) Maximum radius to find scatterers.
    #   Type: integer.
    max_radius: 51
    # Threshold on the correlation raster to use for interpolation. Pixels with less than this
    #   value are replaced by a weighted combination of neighboring pixels.
    #   Type: number.
    interpolation_cor_threshold: 0.5
  snaphu_options:
    # Number of tiles to split the inputs into using SNAPHU's internal tiling.
    #   Type: array.
    ntiles:
      - 1
      - 1
    # Amount of tile overlap (in pixels) along the (row, col) directions.
    #   Type: array.
    tile_overlap:
      - 0
      - 0
    # Number of tiles to unwrap in parallel for each interferogram.
    #   Type: integer.
    n_parallel_tiles: 1
    # Initialization method for SNAPHU.
    #   Type: string.
    #   Options: ['mcf', 'mst'].
    init_method: mcf
    # Statistical cost mode method for SNAPHU.
    #   Type: string.
    #   Options: ['defo', 'smooth'].
    cost: smooth
  tophu_options:
    # Number of tiles to split the inputs into.
    #   Type: array.
    ntiles:
      - 1
      - 1
    # Extra multilook factor to use for the coarse unwrap.
    #   Type: array.
    downsample_factor:
      - 1
      - 1
    # Initialization method for SNAPHU.
    #   Type: string.
    #   Options: ['mcf', 'mst'].
    init_method: mcf
    # Statistical cost mode method for SNAPHU.
    #   Type: string.
    #   Options: ['defo', 'smooth'].
    cost: smooth
  spurt_options:
    # Temporal coherence to pick pixels used on an irregular grid.
    #   Type: number.
    temporal_coherence_threshold: 0.6
    general_settings:
      # Tile up data spatially.
      #   Type: boolean.
      use_tiles: true
    tiler_settings:
      # Maximum number of tiles allowed.
      #   Type: integer.
      max_tiles: 16
      # Number of points used for determining tiles based on density.
      #   Type: integer.
      target_points_for_generation: 120000
      # Target points per tile when generating tiles.
      #   Type: integer.
      target_points_per_tile: 800000
      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the
      #   tile.
      #   Type: number.
      dilation_factor: 0.05
    solver_settings:
      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow
      #   use default workers (ncpus - 1).
      #   Type: integer.
      t_worker_count: 1
      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use
      #   (ncpus - 1).
      #   Type: integer.
      s_worker_count: 1
      # Temporal unwrapping operations over spatial links are performed in batches and each batch
      #   is solved in parallel.
      #   Type: integer.
      links_per_batch: 150000
      # Temporal unwrapping costs.
      #   Type: string.
      #   Options: ['constant', 'distance', 'centroid'].
      t_cost_type: constant
      # Scale factor used to compute edge costs for temporal unwrapping.
      #   Type: number.
      t_cost_scale: 100.0
      # Spatial unwrapping costs.
      #   Type: string.
      #   Options: ['constant', 'distance', 'centroid'].
      s_cost_type: constant
      # Scale factor used to compute edge costs for spatial unwrapping.
      #   Type: number.
      s_cost_scale: 100.0
      # Number of tiles to process in parallel. Set to 0 for all tiles.
      #   Type: integer.
      num_parallel_tiles: 1
    merger_settings:
      # Minimum number of overlap pixels to be considered valid.
      #   Type: integer.
      min_overlap_points: 25
      # Currently, only 'dirichlet' is supported.
      #   Type: dirichlet.
      #   Options: ['dirichlet'].
      method: dirichlet
      # Method used to estimate bulk offset between tiles.
      #   Type: string.
      #   Options: ['integer', 'L2'].
      bulk_method: L2
      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a
      #   single batch.
      #   Type: integer.
      num_parallel_ifgs: 3
timeseries_options:
  # Whether to run the inversion step after unwrapping, if more than  a single-reference
  #   network is used.
  #   Type: boolean.
  run_inversion: true
  # Norm to use during timeseries inversion.
  #   Type: string.
  #   Options: ['L1', 'L2'].
  method: L2
  # Reference point (row, col) used if performing a time series inversion. If not provided, a
  #   point will be selected from a consistent connected component with low amplitude
  #   dispersion.
  #   Type: array | null.
  reference_point:
  # Run the velocity estimation from the phase time series.
  #   Type: boolean.
  run_velocity: true
  # Pixels with correlation below this value will be masked out.
  #   Type: number.
  correlation_threshold: 0.2
  # Size (rows, columns) of blocks of data to load at a time. 3D dimsion is number of
  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).
  #   Type: array.
  block_shape:
    - 256
    - 256
  # Number of parallel blocks to process at once.
  #   Type: integer.
  num_parallel_blocks: 4
correction_options:
  # List of weather-model files (one per date) for tropospheric corrections.
  #   Type: array.
  troposphere_files: []
  # Format of dates contained in weather-model filenames.
  #   Type: string.
  tropo_date_fmt: '%Y%m%d'
  # Package for tropospheric correction. Choices: pyaps, raider.
  #   Type: string.
  tropo_package: pyaps
  # Enumeration representing different tropospheric models.
  #   Type: string.
  #   Options: ['ECMWF', 'ERA5', 'HRES', 'ERAINT', 'ERAI', 'MERRA', 'NARR', 'HRRR', 'GMAO'].
  tropo_model: ECMWF
  # Type of tropospheric delay.
  #   Type: string.
  #   Options: ['wet', 'dry', 'hydrostatic', 'comb'].
  tropo_delay_type: comb
  # List of GNSS-derived TEC maps for ionospheric corrections (one per date). Source is
  #   https://cddis.nasa.gov/archive/gnss/products/ionex/.
  #   Type: array.
  ionosphere_files: []
  # Line-of-sight geometry files for each burst/SLC stack area, for use in correction
  #   computations.
  #   Type: array.
  geometry_files: []
  # DEM file for tropospheric/ topographic phase corrections.
  #   Type: string | null.
  dem_file: