Skip to content

DISP‐S1 Final Acceptance Testing Instructions

Riley Kuttruff edited this page Sep 17, 2025 · 16 revisions

This page contains instructions for performing Acceptance Testing for the DISP-S1 Final delivery from the OPERA-ADT team. These instructions pertain to the latest version of the Final release, currently delivery v6.10. These instructions assume the user has access to the JPL Artifactory-FN, and has Docker installed on their local machine.

NOTE: For the current delivery, all checks are expected pass when the AT has been run on an AMD-family instance type.

Acquiring the DISP-S1 CalVal Docker Image

The image is currently hosted on JPL Artifactory-FN, which requires JPL VPN access and JPL credentials. You may also need to be added to the gov.nasa.jpl.opera.adt organization.

Once you have access, the container tarball delivery is available under general/gov/nasa/jpl/opera/adt/disp_s1/r6.10/final/dockerimg_disp_s1_final.tar. Sample inputs and outputs are also available under general/gov/nasa/jpl/opera/adt/disp_s1/r6.10/final/delivery_data_small.tar.

Documentation for the current delivery is at general/gov/nasa/jpl/opera/adt/disp_s1/r6.6/final/documents/.

Download both images to a location on your local machine. This location will be referred to throughout this instructions as <DISP_S1_DIR>

Loading the image into Docker

The first step in running the DISP-S1 image is to load it into Docker via the following command:

docker load -i <DISP_S1_DIR>/dockerimg_disp_s1_final.tar

This should add the Docker image to your local repository with the name opera/disp-s1 and the tag 0.5.10.

Preparing the test data

Once the delivery_data_small.tar file is downloaded to your local machine, unpack it to <DISP_S1_DIR>:

tar -xvf delivery_data_small.tar
mv delivery_data_small/* .
rm -rf delivery_data_small

This will create the following directories within <DISP_S1_DIR>:

  • config_files/
    • algorithm_parameters_historical_20250701.yaml
    • runconfig_historical.yaml
  • dynamic_ancillary_files/
    • ionosphere_files/
    • static_layers/
    • water_mask_0.tif
    • water_mask_0.tif.aux.xml (unused by acceptance test)
    • water_mask.vrt
  • golden_output/
    • historical/
      • <expected .nc and .png products>
      • compressed_slcs/
  • input_slcs/
    • <expected input .h5 products>
  • opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json
  • static_ancillary_files/
    • opera-disp-s1-reference-dates-2025-02-13.json
    • opera-s1-disp-0.9.0-frame-to-burst.json.zip

Note there are no runconfigs or golden outputs for the "forward" case in this delivery. There are also no troposphere files or DEM to be used with this release.

In order to execute the SAS, the input file directory, runconfig and an output location will be mounted into the container instance as Docker Volumes. To help streamline this process, we recommend making the following changes within the <DISP_S1_DIR> directory:

  • Create a directory named runconfig just under <DISP_S1_DIR>, and copy the existing runconfig YAML files into it:

    mkdir -p <DISP_S1_DIR>/runconfig

    cp <DISP_S1_DIR>/config_files/*.yaml <DISP_S1_DIR>/runconfig/

NOTE: There will be 2 sets of runconfig files one historical and one forward. These will be used as input for separate runs of the container.

  • Update the algorithm_parameters_file setting in <DISP_S1_DIR>/runconfig/runconfig_historical.yaml to point at the version we just copied:
     # REQUIRED: Path to file containing SAS algorithm parameters.
     #   Type: string.
     algorithm_parameters_file: runconfig/algorithm_parameters_historical_20250701.yaml
  • Update the algorithm_parameters_file setting in runconfig_forward.yaml to point at the version we just copied:
    # REQUIRED: Path to file containing SAS algorithm parameters.
    #   Type: string.
    algorithm_parameters_file: runconfig/algorithm_parameters_forward.yaml

Executing the DISP-S1 container on the sample datasets

Running the Forward case (SKIP FOR DELIVERY 6.9)

Change directory into the <DISP_S1_DIR> directory.

cd <DISP_S1_DIR>/

We're now ready to execute the 'forward' configuration of the DISP-S1 Final delivery. Run the following the command to kick off execution with the test assets:

NOTE: the relative path to the runconfig file must be specified in the docker run command. Assuming you are running from within <DISP_S1_DIR>, the $(pwd) command can be utilized as a shortcut.

docker run --rm --user $(id -u):$(id -g) \
   --volume $(pwd):/work \
   opera/disp-s1:0.5.10 disp-s1 run runconfig/runconfig_forward.yaml

The docker container will output progress messages as it runs, e.g.:

[INFO|displacement|L100] 2024-10-01T16:05:32+0000: Found SLC files from 2 bursts ...

Execution time for the small test case on opera-dev-pge (r6i.2xlarge at time of writing) was about 15 minutes.

When the docker run is finished, scratch/forward/ and output/forward/ directories will be created.

The output/forward directory will contain the product file:

-rw-r--r-- 1 collinss cloud-user 83886080 Oct 1 16:19 20170217_20170430.nc

There will also be a several .png files and a compressed_slcs/ directory:

-rw-r--r-- 1 collinss cloud-user   252733 Oct  1 16:18 20170217_20170430.displacement.png
-rw-r--r-- 1 collinss cloud-user   247842 Oct  1 16:18 20170217_20170430.short_wavelength_displacement.png
drwxr-xr-x 2 collinss cloud-user      134 Oct  1 16:19 compressed_slcs

The compressed_slcs/ directory contains compressed .h5 files:

-rw-r--r-- 1 collinss cloud-user 193776645 Oct  1 16:19 compressed_t027_056725_iw1_20170217_20170217_20170430.h5
-rw-r--r-- 1 collinss cloud-user 193550640 Oct  1 16:19 compressed_t027_056726_iw1_20170217_20170217_20170430.h5

Running the Historical case

Change directory into the DISP_S1_DIR directory.

cd <DISP_S1_DIR>/

We're now ready to execute the 'historical' DISP-S1 Interface.

Note: the relative path to the runconfig file must be specified in the docker run command

docker run --rm --user $(id -u):$(id -g) \
   --volume $(pwd):/work \
   opera/disp-s1:0.5.10 disp-s1 run runconfig/runconfig_historical.yaml

The docker container will output progress messages as it runs, e.g.:

mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-xizcdnig because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|_masking|L157] 2025-09-17T17:00:02+0000: Extracting layover shadow mask from dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5 to /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif
[INFO|_masking|L157] 2025-09-17T17:00:03+0000: Extracting layover shadow mask from dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5 to /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif
[INFO|displacement|L117] 2025-09-17T17:00:04+0000: Found SLC files from 2 bursts

(do not worry about the errors in the first lines)

...

Execution time for the small test case on opera-dev-pge (r6a.4xlarge at time of writing) was about 55 minutes.

NOTE: Due to the increased memory consumption used by DISP-S1 when running in historical mode, R-family instances (such as r6[a|i].4xlarge) are recommended when running this portion of the Acceptance Test. If the test instance needs to be converted to an R-family instance, contact an OPERA PGE developer. Also note that for the purpose of the Quality Assurance test, an AMD-based instance type should be utilized.

When the docker run is finished, scratch/historical/ and output/historical/ directories will be created.

The output/historical directory will contain the following product files:

output/historical/
├── 20170217_20170301.nc
├── 20170217_20170301.short_wavelength_displacement.png
├── 20170217_20170313.nc
├── 20170217_20170313.short_wavelength_displacement.png
├── 20170217_20170325.nc
├── 20170217_20170325.short_wavelength_displacement.png
├── 20170217_20170406.nc
├── 20170217_20170406.short_wavelength_displacement.png
├── 20170217_20170418.nc
├── 20170217_20170418.short_wavelength_displacement.png
├── 20170217_20170430.nc
├── 20170217_20170430.short_wavelength_displacement.png
└── compressed_slcs
    ├── compressed_t027_056725_iw1_20170430_20170217_20170430.h5
    └── compressed_t027_056726_iw1_20170430_20170217_20170430.h5

Running the Quality Assurance test

Now that we've successfully executed the SAS container and generated outputs, the last step is to perform a QA check against the expected outputs.

A Python program to compare DISP-S1 products generated by DISP-S1-SAS with expected outputs “golden datasets” is included in the Docker image. The disp-s1 application can run a "validate" workflow that accepts two input files: the golden dataset and the test dataset.

The docker command to run this is:

docker run --rm --user $(id -u):$(id -g) --volume $(pwd):/work \
    opera/disp-s1:0.5.10 \
    disp-s1 validate <path to golden dataset> <path to output dataset>

For example, if the SAS was run using the example command above and the result is in the output/ directory, the validation program can be run as as follows:

docker run --rm --user $(id -u):$(id -g) --volume $(pwd):/work \
    opera/disp-s1:0.5.10 \
    disp-s1 validate golden_output/forward/20170217_20170430.nc output/forward/20170217_20170430.nc

for f in `find golden_output/historical/ -type f -iname '*.nc' | sed 's|^.*/||'`; do docker run --rm --user $(id -u):$(id -g) --volume $(pwd):/work opera/disp-s1:0.5.10 disp-s1 validate golden_output/historical/$f output/historical/$f; done
Sample output from comparison of Historical mode products
$ for f in `find golden_output/historical/ -type f -iname '*.nc' | sed 's|^.*/||'`; do docker run --rm --user $(id -u):$(id -g) --volume $(pwd):/work opera/disp-s1:0.5.10 disp-s1 validate golden_output/historical/$f output/historical/$f; done
mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-_eut3w61 because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|validate|L503] 2025-09-17T18:08:16+0000: Comparing HDF5 contents...
[INFO|validate|L286] 2025-09-17T18:08:16+0000: Checking displacement...
[INFO|validate|L337] 2025-09-17T18:08:21+0000: Test nan count: 0/3624850 (0.000%)
[INFO|validate|L338] 2025-09-17T18:08:21+0000: Reference nan count: 0/3624850 (0.000%)
[INFO|validate|L366] 2025-09-17T18:08:24+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L367] 2025-09-17T18:08:24+0000: Max absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L371] 2025-09-17T18:08:24+0000: Non-congruent pixel count: 0/3624850 (0.000%)
[INFO|validate|L195] 2025-09-17T18:08:27+0000: Checking connected component labels...
[INFO|validate|L226] 2025-09-17T18:08:28+0000: Test unwrapped area: 3624850/69037976 (5.251%)
[INFO|validate|L227] 2025-09-17T18:08:28+0000: Reference unwrapped area: 3624850/69037976 (5.251%)
[INFO|validate|L228] 2025-09-17T18:08:28+0000: Intersection/Reference: 3624850/3624850 (100.000%)
[INFO|validate|L229] 2025-09-17T18:08:28+0000: Intersection/Union: 3624850/3624850 (100.000%)
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /identification/product_version: b'1.1' vs. b'1.1'
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /identification/processing_start_datetime: b'2025-09-16 18:12:58' vs. b'2025-09-17 17:00:01'
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/disp_s1_software_version: b'0.5.10' vs. b'0.5.10'
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/dolphin_software_version: b'0.42.2' vs. b'0.42.2'
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/pge_runconfig: b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    config_files/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n" vs. b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    runconfig/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n"
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/dolphin_workflow_config: b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n" vs. b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n"
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/source_data_software_COMPASS_version: b'0.5.5' vs. b'0.5.5'
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/source_data_software_ISCE3_version: b'0.15.1' vs. b'0.15.1'
[INFO|validate|L415] 2025-09-17T18:08:45+0000: /metadata/source_data_software_s1_reader_version: b'0.2.4' vs. b'0.2.4'
[INFO|validate|L507] 2025-09-17T18:08:45+0000: Checking geospatial metadata...
[INFO|validate|L513] 2025-09-17T18:08:45+0000: Files golden_output/historical/20170217_20170301.nc and output/historical/20170217_20170301.nc match.
mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-vy0_piw7 because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|validate|L503] 2025-09-17T18:08:48+0000: Comparing HDF5 contents...
[INFO|validate|L286] 2025-09-17T18:08:48+0000: Checking displacement...
[INFO|validate|L337] 2025-09-17T18:08:53+0000: Test nan count: 0/3623132 (0.000%)
[INFO|validate|L338] 2025-09-17T18:08:53+0000: Reference nan count: 0/3623132 (0.000%)
[INFO|validate|L366] 2025-09-17T18:08:56+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L367] 2025-09-17T18:08:56+0000: Max absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L371] 2025-09-17T18:08:56+0000: Non-congruent pixel count: 0/3623132 (0.000%)
[INFO|validate|L195] 2025-09-17T18:08:59+0000: Checking connected component labels...
[INFO|validate|L226] 2025-09-17T18:09:00+0000: Test unwrapped area: 3623132/69037976 (5.248%)
[INFO|validate|L227] 2025-09-17T18:09:00+0000: Reference unwrapped area: 3623132/69037976 (5.248%)
[INFO|validate|L228] 2025-09-17T18:09:00+0000: Intersection/Reference: 3623132/3623132 (100.000%)
[INFO|validate|L229] 2025-09-17T18:09:00+0000: Intersection/Union: 3623132/3623132 (100.000%)
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /identification/product_version: b'1.1' vs. b'1.1'
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /identification/processing_start_datetime: b'2025-09-16 18:12:58' vs. b'2025-09-17 17:00:01'
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/disp_s1_software_version: b'0.5.10' vs. b'0.5.10'
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/dolphin_software_version: b'0.42.2' vs. b'0.42.2'
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/pge_runconfig: b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    config_files/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n" vs. b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    runconfig/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n"
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/dolphin_workflow_config: b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n" vs. b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n"
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/source_data_software_COMPASS_version: b'0.5.5' vs. b'0.5.5'
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/source_data_software_ISCE3_version: b'0.15.1' vs. b'0.15.1'
[INFO|validate|L415] 2025-09-17T18:09:17+0000: /metadata/source_data_software_s1_reader_version: b'0.2.4' vs. b'0.2.4'
[INFO|validate|L507] 2025-09-17T18:09:17+0000: Checking geospatial metadata...
[INFO|validate|L513] 2025-09-17T18:09:17+0000: Files golden_output/historical/20170217_20170313.nc and output/historical/20170217_20170313.nc match.
mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-icyta9m_ because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|validate|L503] 2025-09-17T18:09:21+0000: Comparing HDF5 contents...
[INFO|validate|L286] 2025-09-17T18:09:21+0000: Checking displacement...
[INFO|validate|L337] 2025-09-17T18:09:25+0000: Test nan count: 0/3622708 (0.000%)
[INFO|validate|L338] 2025-09-17T18:09:25+0000: Reference nan count: 0/3622708 (0.000%)
[INFO|validate|L366] 2025-09-17T18:09:29+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L367] 2025-09-17T18:09:29+0000: Max absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L371] 2025-09-17T18:09:29+0000: Non-congruent pixel count: 0/3622708 (0.000%)
[INFO|validate|L195] 2025-09-17T18:09:31+0000: Checking connected component labels...
[INFO|validate|L226] 2025-09-17T18:09:32+0000: Test unwrapped area: 3622708/69037976 (5.247%)
[INFO|validate|L227] 2025-09-17T18:09:32+0000: Reference unwrapped area: 3622708/69037976 (5.247%)
[INFO|validate|L228] 2025-09-17T18:09:32+0000: Intersection/Reference: 3622708/3622708 (100.000%)
[INFO|validate|L229] 2025-09-17T18:09:32+0000: Intersection/Union: 3622708/3622708 (100.000%)
[INFO|validate|L415] 2025-09-17T18:09:49+0000: /identification/product_version: b'1.1' vs. b'1.1'
[INFO|validate|L415] 2025-09-17T18:09:49+0000: /identification/processing_start_datetime: b'2025-09-16 18:12:58' vs. b'2025-09-17 17:00:01'
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/disp_s1_software_version: b'0.5.10' vs. b'0.5.10'
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/dolphin_software_version: b'0.42.2' vs. b'0.42.2'
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/pge_runconfig: b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    config_files/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n" vs. b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    runconfig/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n"
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/dolphin_workflow_config: b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n" vs. b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n"
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/source_data_software_COMPASS_version: b'0.5.5' vs. b'0.5.5'
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/source_data_software_ISCE3_version: b'0.15.1' vs. b'0.15.1'
[INFO|validate|L415] 2025-09-17T18:09:50+0000: /metadata/source_data_software_s1_reader_version: b'0.2.4' vs. b'0.2.4'
[INFO|validate|L507] 2025-09-17T18:09:50+0000: Checking geospatial metadata...
[INFO|validate|L513] 2025-09-17T18:09:50+0000: Files golden_output/historical/20170217_20170325.nc and output/historical/20170217_20170325.nc match.
mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-sovba4t8 because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|validate|L503] 2025-09-17T18:09:53+0000: Comparing HDF5 contents...
[INFO|validate|L286] 2025-09-17T18:09:53+0000: Checking displacement...
[INFO|validate|L337] 2025-09-17T18:09:57+0000: Test nan count: 0/3616822 (0.000%)
[INFO|validate|L338] 2025-09-17T18:09:57+0000: Reference nan count: 0/3616822 (0.000%)
[INFO|validate|L366] 2025-09-17T18:10:01+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L367] 2025-09-17T18:10:01+0000: Max absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L371] 2025-09-17T18:10:01+0000: Non-congruent pixel count: 0/3616822 (0.000%)
[INFO|validate|L195] 2025-09-17T18:10:04+0000: Checking connected component labels...
[INFO|validate|L226] 2025-09-17T18:10:04+0000: Test unwrapped area: 3616822/69037976 (5.239%)
[INFO|validate|L227] 2025-09-17T18:10:04+0000: Reference unwrapped area: 3616822/69037976 (5.239%)
[INFO|validate|L228] 2025-09-17T18:10:04+0000: Intersection/Reference: 3616822/3616822 (100.000%)
[INFO|validate|L229] 2025-09-17T18:10:04+0000: Intersection/Union: 3616822/3616822 (100.000%)
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /identification/product_version: b'1.1' vs. b'1.1'
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /identification/processing_start_datetime: b'2025-09-16 18:12:58' vs. b'2025-09-17 17:00:01'
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/disp_s1_software_version: b'0.5.10' vs. b'0.5.10'
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/dolphin_software_version: b'0.42.2' vs. b'0.42.2'
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/pge_runconfig: b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    config_files/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n" vs. b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    runconfig/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n"
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/dolphin_workflow_config: b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n" vs. b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n"
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/source_data_software_COMPASS_version: b'0.5.5' vs. b'0.5.5'
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/source_data_software_ISCE3_version: b'0.15.1' vs. b'0.15.1'
[INFO|validate|L415] 2025-09-17T18:10:22+0000: /metadata/source_data_software_s1_reader_version: b'0.2.4' vs. b'0.2.4'
[INFO|validate|L507] 2025-09-17T18:10:22+0000: Checking geospatial metadata...
[INFO|validate|L513] 2025-09-17T18:10:22+0000: Files golden_output/historical/20170217_20170406.nc and output/historical/20170217_20170406.nc match.
mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-ubwi1c6j because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|validate|L503] 2025-09-17T18:10:25+0000: Comparing HDF5 contents...
[INFO|validate|L286] 2025-09-17T18:10:25+0000: Checking displacement...
[INFO|validate|L337] 2025-09-17T18:10:29+0000: Test nan count: 0/3609322 (0.000%)
[INFO|validate|L338] 2025-09-17T18:10:29+0000: Reference nan count: 0/3609322 (0.000%)
[INFO|validate|L366] 2025-09-17T18:10:33+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L367] 2025-09-17T18:10:33+0000: Max absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L371] 2025-09-17T18:10:33+0000: Non-congruent pixel count: 0/3609322 (0.000%)
[INFO|validate|L195] 2025-09-17T18:10:36+0000: Checking connected component labels...
[INFO|validate|L226] 2025-09-17T18:10:37+0000: Test unwrapped area: 3609322/69037976 (5.228%)
[INFO|validate|L227] 2025-09-17T18:10:37+0000: Reference unwrapped area: 3609322/69037976 (5.228%)
[INFO|validate|L228] 2025-09-17T18:10:37+0000: Intersection/Reference: 3609322/3609322 (100.000%)
[INFO|validate|L229] 2025-09-17T18:10:37+0000: Intersection/Union: 3609322/3609322 (100.000%)
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /identification/product_version: b'1.1' vs. b'1.1'
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /identification/processing_start_datetime: b'2025-09-16 18:12:58' vs. b'2025-09-17 17:00:01'
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/disp_s1_software_version: b'0.5.10' vs. b'0.5.10'
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/dolphin_software_version: b'0.42.2' vs. b'0.42.2'
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/pge_runconfig: b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    config_files/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n" vs. b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    runconfig/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n"
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/dolphin_workflow_config: b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n" vs. b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n"
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/source_data_software_COMPASS_version: b'0.5.5' vs. b'0.5.5'
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/source_data_software_ISCE3_version: b'0.15.1' vs. b'0.15.1'
[INFO|validate|L415] 2025-09-17T18:10:54+0000: /metadata/source_data_software_s1_reader_version: b'0.2.4' vs. b'0.2.4'
[INFO|validate|L507] 2025-09-17T18:10:54+0000: Checking geospatial metadata...
[INFO|validate|L513] 2025-09-17T18:10:54+0000: Files golden_output/historical/20170217_20170430.nc and output/historical/20170217_20170430.nc match.
mkdir -p failed for path /home/mamba/.cache/matplotlib: [Errno 13] Permission denied: '/home/mamba/.cache/matplotlib'
Matplotlib created a temporary cache directory at /tmp/matplotlib-qbwfho1v because there was an issue with the default path (/home/mamba/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
[INFO|validate|L503] 2025-09-17T18:10:57+0000: Comparing HDF5 contents...
[INFO|validate|L286] 2025-09-17T18:10:57+0000: Checking displacement...
[INFO|validate|L337] 2025-09-17T18:11:02+0000: Test nan count: 0/3614475 (0.000%)
[INFO|validate|L338] 2025-09-17T18:11:02+0000: Reference nan count: 0/3614475 (0.000%)
[INFO|validate|L366] 2025-09-17T18:11:05+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L367] 2025-09-17T18:11:05+0000: Max absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L371] 2025-09-17T18:11:05+0000: Non-congruent pixel count: 0/3614475 (0.000%)
[INFO|validate|L195] 2025-09-17T18:11:08+0000: Checking connected component labels...
[INFO|validate|L226] 2025-09-17T18:11:09+0000: Test unwrapped area: 3614475/69037976 (5.235%)
[INFO|validate|L227] 2025-09-17T18:11:09+0000: Reference unwrapped area: 3614475/69037976 (5.235%)
[INFO|validate|L228] 2025-09-17T18:11:09+0000: Intersection/Reference: 3614475/3614475 (100.000%)
[INFO|validate|L229] 2025-09-17T18:11:09+0000: Intersection/Union: 3614475/3614475 (100.000%)
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /identification/product_version: b'1.1' vs. b'1.1'
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /identification/processing_start_datetime: b'2025-09-16 18:12:58' vs. b'2025-09-17 17:00:01'
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/disp_s1_software_version: b'0.5.10' vs. b'0.5.10'
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/dolphin_software_version: b'0.42.2' vs. b'0.42.2'
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/pge_runconfig: b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    config_files/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n" vs. b"input_file_group:\n  # REQUIRED: list of paths to CSLC files.\n  #   Type: array.\n  cslc_file_list:\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n    - input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\n  # REQUIRED: Frame ID of the bursts contained in `cslc_file_list`.\n  #   Type: integer.\n  frame_id: 7091\n  # (For FORWARD/'Catch up' HISTORICAL processing mode) last processed date for the frame. If\n  #   provided, the SAS will only output products whose secondary datetime is *after*\n  #   `last_processed`. Otherwise, the SAS will output all products.\n  #   Type: string | null.\n  last_processed:\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: \n    runconfig/algorithm_parameters_historical_20250701.yaml\n  # Paths to the CSLC static_layer files (1 per burst) with line-of-sight unit vectors. If\n  #   none provided, corrections using CSLC static_layer are skipped.\n  #   Type: array.\n  static_layers_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  # Optional Byte mask file used to ignore low correlation/bad data (e.g water mask).\n  #   Convention is 0 for no data/invalid, and 1 for good data. Dtype must be uint8.\n  #   Type: string | null.\n  mask_file: dynamic_ancillary_files/water_mask.vrt\n  # Path to the DEM file covering full frame. If none provided, corrections using DEM are\n  #   skipped.\n  #   Type: string | null.\n  dem_file:\n  # List of paths to TEC files (1 per date) in IONEX format for ionosphere correction. If none\n  #   provided, ionosphere corrections are skipped.\n  #   Type: array | null.\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  # List of paths to troposphere weather model files (1 per date). If none provided,\n  #   troposphere corrections are skipped.\n  #   Type: array | null.\n  troposphere_files:\nstatic_ancillary_file_group:\n  # JSON file containing frame-specific algorithm parameters to override the defaults passed\n  #   in the `algorithm_parameters.yaml`.\n  #   Type: string | null.\n  algorithm_parameters_overrides_json: \n    opera-disp-s1-algorithm-parameters-overrides-2025-06-17.json\n  # JSON file containing the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: \n    static_ancillary_files/opera-s1-disp-0.9.0-frame-to-burst.json.zip\n  # JSON file containing list of reference date changes for each frame.\n  #   Type: string | null.\n  reference_date_database_json: \n    static_ancillary_files/opera-disp-s1-reference-dates-2025-02-13.json\nprimary_executable:\n  # REQUIRED: Product type of the PGE.\n  #   Type: string.\n  #   Options: ['DISP_S1_FORWARD', 'DISP_S1_HISTORICAL', 'DISP_S1_STATIC'].\n  product_type: DISP_S1_HISTORICAL\nproduct_path_group:\n  # REQUIRED: Directory where PGE will place results.\n  #   Type: string.\n  product_path: output/historical\n  # Path to the scratch directory.\n  #   Type: string.\n  scratch_path: scratch/historical\n  # Path to the SAS output directory.\n  #   Type: string.\n  sas_output_path: output/historical\n  # Version of the product, in <major>.<minor> format.\n  #   Type: string.\n  product_version: '1.1'\n  # Whether the SAS should output and save the Compressed SLCs in addition to the standard\n  #   product output.\n  #   Type: boolean.\n  save_compressed_slc: true\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to the output log file in addition to logging to stderr.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n"
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/dolphin_workflow_config: b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n" vs. b"input_options:\n  # If passing HDF5/NetCDF files, subdataset to use from CSLC files. .\n  #   Type: string | null.\n  subdataset: /data/VV\n  # Format of dates contained in CSLC filenames.\n  #   Type: string.\n  cslc_date_fmt: '%Y%m%d'\n  # Radar wavelength (in meters) of the transmitted data. used to convert the units in the\n  #   rasters in `timeseries/` to from radians to meters. If None and sensor is not\n  #   recognized, outputs remain in radians.\n  #   Type: number | null.\n  wavelength: 0.055465764662349676\n# Mask file used to ignore low correlation/bad data (e.g water mask). Convention is 0 for no\n#   data/invalid, and 1 for good data. Dtype must be uint8.\n#   Type: string | null.\nmask_file: /work/scratch/historical/water_binary_mask.tif\n# Name of sub-directory to use for writing output files.\n#   Type: string.\nwork_directory: /work/scratch/historical\n# Don't resolve filepaths that are given as relative to be absolute.\n#   Type: boolean.\nkeep_paths_relative: false\nworker_settings:\n  # Whether to use GPU for processing (if available).\n  #   Type: boolean.\n  gpu_enabled: false\n  # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in\n  #   each python process.\n  #   Type: integer.\n  threads_per_worker: 2\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation. For large, single-swath SLC stacks (e.g. UAVSAR, NISAR), this sets the\n  #   number of chunks processed in parallel during phase linking.\n  #   Type: integer.\n  n_parallel_bursts: 9\n  # Size (rows, columns) of blocks of data to load at a time.\n  #   Type: array.\n  block_shape:\n    - 512\n    - 512\n# Path to output log file (in addition to logging to `stderr`). Default logs to\n#   `dolphin.log` within `work_directory`.\n#   Type: string | null.\nlog_file: scratch/historical/log_sas.log\n# REQUIRED: list of CSLC files, or newline-delimited file containing list of CSLC files.\n#   Type: array.\ncslc_file_list:\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170217T132750Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170217T132752Z_20240625T060850Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170301T132749Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170301T132752Z_20240625T090210Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170313T132750Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170313T132753Z_20240625T121542Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170325T132750Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170325T132753Z_20240625T163704Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170406T132750Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170406T132753Z_20240625T225442Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170418T132751Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170418T132754Z_20240626T003055Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056725-IW1_20170430T132752Z_20240626T015700Z_S1A_VV_v1.1.h5\n  - /work/input_slcs/OPERA_L2_CSLC-S1_T027-056726-IW1_20170430T132754Z_20240626T015700Z_S1A_VV_v1.1.h5\noutput_options:\n  strides:\n    # Decimation factor (stride) in the y/row direction.\n    #   Type: integer.\n    y: 3\n    # Decimation factor (stride) in the x/column direction.\n    #   Type: integer.\n    x: 6\n  # EPSG code of desired output products (for geocoded SLCs only). If None, uses the most\n  #   common projection of the input data.\n  #   Type: integer | null.\n  epsg: 32612\n  # Area of interest: [left, bottom, right, top] coordinates. e.g.\n  #   `bbox=[-150.2,65.0,-150.1,65.5]`.\n  #   Type: array | null.\n  bounds:\n    - 280230.0\n    - 3555240.0\n    - 572310.0\n    - 3767970.0\n  # EPSG code for the `bounds` or `bounds_wkt` coordinates, if specified.\n  #   Type: integer | null.\n  bounds_epsg: 32612\n  # Area of interest as a simple Polygon in well-known-text (WKT) format. Can pass a string,\n  #   or a `.wkt` filename containing the Polygon text.\n  #   Type: string | null.\n  bounds_wkt:\n  # Options for `create_dataset` with h5py.\n  #   Type: object.\n  hdf5_creation_options:\n    chunks:\n      - 128\n      - 128\n    compression: gzip\n    compression_opts: 4\n    shuffle: true\n  # GDAL creation options for GeoTIFF files.\n  #   Type: array.\n  gtiff_creation_options:\n    - COMPRESS=lzw\n    - ZLEVEL=4\n    - BIGTIFF=yes\n    - TILED=yes\n    - INTERLEAVE=band\n    - BLOCKXSIZE=128\n    - BLOCKYSIZE=128\n  # Whether to add overviews to the output GeoTIFF files. This will increase file size, but\n  #   can be useful for visualizing the data with web mapping tools. See\n  #   https://gdal.org/programs/gdaladdo.html for more.\n  #   Type: boolean.\n  add_overviews: false\n  # List of overview levels to create (if `add_overviews=True`).\n  #   Type: array.\n  overview_levels:\n    - 4\n    - 8\n    - 16\n    - 32\n    - 64\n  # Specify an extra reference datetime in UTC. Adding this lets you to create and unwrap two\n  #   single reference networks; the later resets at the given date (e.g. for a large\n  #   earthquake event). If passing strings, formats accepted are YYYY-MM-\n  #   DD[T]HH:MM[:SS[.ffffff]][Z or []HH[:]MM], or YYYY-MM-DD.\n  #   Type: string | null.\n  extra_reference_date:\nps_options:\n  # Amplitude dispersion threshold to consider a pixel a PS.\n  #   Type: number.\n  amp_dispersion_threshold: 0.15\n# Paths to existing Amplitude Dispersion file (1 per SLC region) for PS update calculation.\n#   If none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_dispersion_files: []\n# Paths to an existing Amplitude Mean files (1 per SLC region) for PS update calculation. If\n#   none provided, computed using the input SLC stack.\n#   Type: array.\namplitude_mean_files: []\n# Paths to layover/shadow binary masks, where 0 indicates a pixel in layover/shadow, 1 is a\n#   good pixel. If none provided, no masking is performed for layover/shadow.\n#   Type: array.\nlayover_shadow_mask_files:\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056725_iw1.tif\n  - /work/scratch/historical/layover_shadow_masks/layover_shadow_t027_056726_iw1.tif\nphase_linking:\n  # Size of the ministack for sequential estimator.\n  #   Type: integer.\n  ministack_size: 100\n  # Maximum number of compressed images to use in sequential estimator. If there are more\n  #   ministacks than this, the earliest CCSLCs will be left out of the later stacks. .\n  #   Type: integer.\n  max_num_compressed: 100\n  # Index of the SLC to use as interferogram reference after phase linking. If not set, uses\n  #   the CompressedSlcPlan default.\n  #   Type: integer | null.\n  output_reference_idx: 0\n  half_window:\n    # Half window size (in pixels) for y direction.\n    #   Type: integer.\n    y: 5\n    # Half window size (in pixels) for x direction.\n    #   Type: integer.\n    x: 11\n  # Use EVD on the coherence instead of using the EMI algorithm.\n  #   Type: boolean.\n  use_evd: false\n  # Beta regularization parameter for correlation matrix inversion. 0 is no regularization.\n  #   Type: number.\n  beta: 0.0\n  # Snap correlation values in the coherence matrix below this value to 0.\n  #   Type: number.\n  zero_correlation_threshold: 0.0\n  # Method for finding SHPs during phase linking.\n  #   Type: string.\n  #   Options: ['glrt', 'ks', 'rect', 'rect'].\n  shp_method: glrt\n  # Significance level (probability of false alarm) for SHP tests. Lower numbers include more\n  #   pixels within the multilook window during covariance estimation.\n  #   Type: number.\n  shp_alpha: 0.001\n  # If True, pixels labeled as PS will get set to NaN during phase linking to avoid summing\n  #   their phase. Default of False means that the SHP algorithm will decide if a pixel should\n  #   be included, regardless of its PS label.\n  #   Type: boolean.\n  mask_input_ps: false\n  # StBAS parameter to include only nearest-N interferograms forphase linking. A\n  #   `baseline_lag` of `n` will only include the closest`n` interferograms. `baseline_line`\n  #   must be positive.\n  #   Type: integer | null.\n  baseline_lag:\n  # Plan for creating Compressed SLCs during phase linking.\n  #   Type: string.\n  #   Options: ['always_first', 'first_per_ministack', 'last_per_ministack'].\n  compressed_slc_plan: last_per_ministack\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   Cramer-Rao Lower Bound (CRLB) estimates.\n  #   Type: boolean.\n  write_crlb: false\n  # Write out (and stitch, if processing multiple geocoded bursts) rasters containing the\n  #   sequential closure phase from the nearest-3 triplets in the coherence matrix.\n  #   Type: boolean.\n  write_closure_phase: false\ninterferogram_network:\n  # For single-reference network: Index of the reference image in the network.\n  #   Type: integer | null.\n  reference_idx:\n  # Max `n` to form the nearest-`n` interferograms by index.\n  #   Type: integer | null.\n  max_bandwidth: 3\n  # Maximum temporal baseline of interferograms.\n  #   Type: integer | null.\n  max_temporal_baseline:\n  # For manual-index network: list of (ref_idx, sec_idx) defining the interferograms to form.\n  #   Type: array | null.\n  indexes:\nunwrap_options:\n  # Whether to run the unwrapping step after wrapped phase estimation.\n  #   Type: boolean.\n  run_unwrap: true\n  # Whether to run Goldstein filtering step on wrapped interferogram.\n  #   Type: boolean.\n  run_goldstein: false\n  # Whether to run interpolation step on wrapped interferogram.\n  #   Type: boolean.\n  run_interpolation: true\n  # Phase unwrapping method.\n  #   Type: string.\n  #   Options: ['snaphu', 'icu', 'phass', 'spurt', 'whirlwind'].\n  unwrap_method: snaphu\n  # Number of interferograms to unwrap in parallel.\n  #   Type: integer.\n  n_parallel_jobs: 4\n  # Set wrapped phase/correlation to 0 where mask is 0 before unwrapping. .\n  #   Type: boolean.\n  zero_where_masked: false\n  preprocess_options:\n    # Adaptive phase (Goldstein) filter exponent parameter.\n    #   Type: number.\n    alpha: 0.5\n    # (for interpolation) Maximum radius to find scatterers.\n    #   Type: integer.\n    max_radius: 71\n    # Threshold on the sliding-window correlation to use for masking+interpolation.Pixels with\n    #   less than this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_cor_threshold: 0.2\n    # Threshold on the phase similarity to use for masking+interpolation. Pixels with less than\n    #   this value are replaced by a weighted combination of neighboring pixels.\n    #   Type: number.\n    interpolation_similarity_threshold: 0.4\n    # (for interpolation) Set the pixels where we have masked + interpolated data to have 0\n    #   correlation for the unwrapper. If False, the interpolated pixels keep their old\n    #   correlation. If True, the behavior can be unwrapper dependent (the unwrapper may choose\n    #   to skip over these pixels when solving).\n    #   Type: boolean.\n    zero_correlation_where_interpolating: false\n  snaphu_options:\n    # Number of tiles to split the inputs into using SNAPHU's internal tiling.\n    #   Type: array.\n    ntiles:\n      - 5\n      - 5\n    # Amount of tile overlap (in pixels) along the (row, col) directions.\n    #   Type: array.\n    tile_overlap:\n      - 400\n      - 400\n    # Number of tiles to unwrap in parallel for each interferogram.\n    #   Type: integer.\n    n_parallel_tiles: 7\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n    # If True, after unwrapping with multiple tiles, an additional post-processing unwrapping\n    #   step is performed to re-optimize the unwrapped phase using a single tile.\n    #   Type: boolean.\n    single_tile_reoptimize: true\n  tophu_options:\n    # Number of tiles to split the inputs into.\n    #   Type: array.\n    ntiles:\n      - 1\n      - 1\n    # Extra multilook factor to use for the coarse unwrap.\n    #   Type: array.\n    downsample_factor:\n      - 1\n      - 1\n    # Initialization method for SNAPHU.\n    #   Type: string.\n    #   Options: ['mcf', 'mst'].\n    init_method: mcf\n    # Statistical cost mode method for SNAPHU.\n    #   Type: string.\n    #   Options: ['defo', 'smooth'].\n    cost: smooth\n  spurt_options:\n    # Temporal coherence to pick pixels used on an irregular grid.\n    #   Type: number.\n    temporal_coherence_threshold: 0.6\n    # Similarity to pick pixels used on an irregular grid. Any pixel with similarity above\n    #   `similarity_threshold` *or* above the temporal coherence threshold is chosen.\n    #   Type: number.\n    similarity_threshold: 0.5\n    # After running spurt, interpolate the values that were masked during unwrapping (which are\n    #   otherwise left as nan).\n    #   Type: boolean.\n    run_ambiguity_interpolation: true\n    general_settings:\n      # Tile up data spatially.\n      #   Type: boolean.\n      use_tiles: true\n    tiler_settings:\n      # Maximum number of tiles allowed.\n      #   Type: integer.\n      max_tiles: 25\n      # Number of points used for determining tiles based on density.\n      #   Type: integer.\n      target_points_for_generation: 120000\n      # Target points per tile when generating tiles.\n      #   Type: integer.\n      target_points_per_tile: 1400000\n      # Dilation factor of non-overlapping tiles. 0.05 would lead to 5 percent dilation of the\n      #   tile.\n      #   Type: number.\n      dilation_factor: 0.04\n    solver_settings:\n      # Number of workers for temporal unwrapping in parallel. Set value to <=0 to let workflow\n      #   use default workers (ncpus - 1).\n      #   Type: integer.\n      t_worker_count: 16\n      # Number of workers for spatial unwrapping in parallel. Set value to <=0 to let workflow use\n      #   (ncpus - 1).\n      #   Type: integer.\n      s_worker_count: 3\n      # Temporal unwrapping operations over spatial links are performed in batches and each batch\n      #   is solved in parallel.\n      #   Type: integer.\n      links_per_batch: 150000\n      # Temporal unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      t_cost_type: distance\n      # Scale factor used to compute edge costs for temporal unwrapping.\n      #   Type: number.\n      t_cost_scale: 100.0\n      # Spatial unwrapping costs.\n      #   Type: string.\n      #   Options: ['constant', 'distance', 'centroid'].\n      s_cost_type: constant\n      # Scale factor used to compute edge costs for spatial unwrapping.\n      #   Type: number.\n      s_cost_scale: 100.0\n      # Number of tiles to process in parallel. Set to 0 for all tiles.\n      #   Type: integer.\n      num_parallel_tiles: 1\n    merger_settings:\n      # Minimum number of overlap pixels to be considered valid.\n      #   Type: integer.\n      min_overlap_points: 25\n      # Currently, only 'dirichlet' is supported.\n      #   Type: dirichlet.\n      method: dirichlet\n      # Method used to estimate bulk offset between tiles.\n      #   Type: string.\n      #   Options: ['integer', 'L2'].\n      bulk_method: L2\n      # Number of interferograms to merge in one batch. Use zero to merge all interferograms in a\n      #   single batch.\n      #   Type: integer.\n      num_parallel_ifgs: 21\ntimeseries_options:\n  # Whether to run the inversion step after unwrapping, if more than  a single-reference\n  #   network is used.\n  #   Type: boolean.\n  run_inversion: true\n  # Norm to use during timeseries inversion.\n  #   Type: string.\n  #   Options: ['L1', 'L2'].\n  method: L1\n  # Reference point (row, col) used if performing a time series inversion. If not provided, a\n  #   point will be selected from a consistent connected component with low amplitude\n  #   dispersion.\n  #   Type: array | null.\n  reference_point:\n  # Run the velocity estimation from the phase time series.\n  #   Type: boolean.\n  run_velocity: false\n  # If providing a mask file, whether to apply the mask to the timeseries. If True, the time\n  #   series rasters will zero out pixels labeled as 0 in the mask file.\n  #   Type: boolean.\n  apply_mask_to_timeseries: false\n  # Pixels with correlation below this value will be masked out.\n  #   Type: number.\n  correlation_threshold: 0.0\n  # Size (rows, columns) of blocks of data to load at a time. 3D dimension is number of\n  #   interferograms (during inversion) and number of SLC dates (during velocity fitting).\n  #   Type: array.\n  block_shape:\n    - 256\n    - 256\n  # Number of parallel blocks to process at once.\n  #   Type: integer.\n  num_parallel_blocks: 4\ncorrection_options:\n  ionosphere_files:\n    - dynamic_ancillary_files/ionosphere_files/jplg0070.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0310.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0430.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0550.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0600.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0670.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0720.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0790.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0840.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg0910.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg0960.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1030.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1080.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1150.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1200.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1270.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1320.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1390.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1440.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1510.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1560.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1630.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1750.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1800.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1870.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg1920.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg1990.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2040.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2110.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg2160.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2280.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2400.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2520.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2640.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2760.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg2880.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3000.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3120.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3190.18i\n    - dynamic_ancillary_files/ionosphere_files/jplg3240.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3360.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3480.17i\n    - dynamic_ancillary_files/ionosphere_files/jplg3600.17i\n  geometry_files:\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056725-IW1_20140403_S1A_v1.0.h5\n    - dynamic_ancillary_files/static_layers/OPERA_L2_CSLC-S1-STATIC_T027-056726-IW1_20140403_S1A_v1.0.h5\n  dem_file:\nforward_mode_network_size: 3\nrecommended_temporal_coherence_threshold: 0.6\nrecommended_similarity_threshold: 0.4\nrecommended_use_conncomp: false\nspatial_wavelength_cutoff: 30000.0\nbrowse_image_vmin_vmax:\n  - -0.05\n  - 0.05\nnum_parallel_products: 4\n"
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/source_data_software_COMPASS_version: b'0.5.5' vs. b'0.5.5'
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/source_data_software_ISCE3_version: b'0.15.1' vs. b'0.15.1'
[INFO|validate|L415] 2025-09-17T18:11:26+0000: /metadata/source_data_software_s1_reader_version: b'0.2.4' vs. b'0.2.4'
[INFO|validate|L507] 2025-09-17T18:11:26+0000: Checking geospatial metadata...
[INFO|validate|L513] 2025-09-17T18:11:26+0000: Files golden_output/historical/20170217_20170418.nc and output/historical/20170217_20170418.nc match.

For the current delivery, all checks are expected pass when the AT has been run on an AMD-family instance type.

Clone this wiki locally