Skip to content

DISP‐S1 CalVal Acceptance Testing Instructions

Scott Collins edited this page Oct 15, 2024 · 14 revisions

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

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/r5.5/calval/dockerimg_disp_s1_calval.tar. Sample inputs and outputs are also available under general/gov/nasa/jpl/opera/adt/disp_s1/r5.5/calval/delivery_data_small.tar.

Documentation for the current delivery is under general/gov/nasa/jpl/opera/adt/disp_s1/r5/calval/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_calval.tar

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

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/
  • dynamic_ancillary_files/
    • dem.tif
    • ionosphere_files/
    • static_layers/
    • troposphere_files/
    • water_mask.tif
    • water_mask.tif.aux.xml
  • golden_output/
    • historical/
      • compressed_slcs/
  • input_slcs/
  • static_ancillary_files/

Note there are no runconfigs or golden outputs for the "forward" case in this delivery.

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.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
  • Edit the copied versions of the runconfig_forward.yaml and runconfig_historical.yaml to change the `threads_per_worker' setting from 16 to 4:
    # Number of threads to use per worker. This sets the OMP_NUM_THREADS environment variable in
    #   each python process.
    #   Type: integer.
    threads_per_worker: 4
  • Also change the n_parallel_bursts setting from 4 to 2:
    # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-
    #   phase-estimation.
    #   Type: integer.
    n_parallel_bursts: 2

Executing the DISP-S1 container on the sample datasets

Running the Forward case (SKIP FOR DELIVERY 5.5)

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 CalVal 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.4.4 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.4.6 disp-s1 run runconfig/runconfig_historical.yaml

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

[INFO|displacement|L102] 2024-10-15T15:48:37+0000: Found SLC files from 2 bursts ...

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

NOTE: Due to the increased memory consumption used by DISP-S1 when running in historical mode, R-family instances (such as r6i.2xlarge) 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 intel-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:

-rw-r--r-- 1 collinss cloud-user 92274688 Oct 15 18:27 20170217_20170301.nc
-rw-r--r-- 1 collinss cloud-user   522445 Oct 15 18:26 20170217_20170301.short_wavelength_displacement.png
-rw-r--r-- 1 collinss cloud-user 92274688 Oct 15 18:27 20170217_20170313.nc
-rw-r--r-- 1 collinss cloud-user   516039 Oct 15 18:26 20170217_20170313.short_wavelength_displacement.png
-rw-r--r-- 1 collinss cloud-user 92274688 Oct 15 18:27 20170217_20170325.nc
-rw-r--r-- 1 collinss cloud-user   536928 Oct 15 18:26 20170217_20170325.short_wavelength_displacement.png
-rw-r--r-- 1 collinss cloud-user 92274688 Oct 15 18:28 20170217_20170406.nc
-rw-r--r-- 1 collinss cloud-user   553198 Oct 15 18:27 20170217_20170406.short_wavelength_displacement.png
-rw-r--r-- 1 collinss cloud-user 92274688 Oct 15 18:28 20170217_20170418.nc
-rw-r--r-- 1 collinss cloud-user   562113 Oct 15 18:27 20170217_20170418.short_wavelength_displacement.png
-rw-r--r-- 1 collinss cloud-user 92274688 Oct 15 18:28 20170418_20170430.nc
-rw-r--r-- 1 collinss cloud-user   574218 Oct 15 18:27 20170418_20170430.short_wavelength_displacement.png
drwxr-xr-x 2 collinss cloud-user      134 Oct 15 18:28 compressed_slcs

The compressed_slcs/ directory should contain the following:

-rw-r--r-- 1 collinss cloud-user 193774170 Oct 15 18:28 compressed_t027_056725_iw1_20170418_20170217_20170430.h5
-rw-r--r-- 1 collinss cloud-user 193550409 Oct 15 18:28 compressed_t027_056726_iw1_20170418_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 --volume $(pwd):/work \
    opera/disp-s1:0.4.6 \
    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 --volume $(pwd):/work \
    opera/disp-s1:0.4.6 \
    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 --volume $(pwd):/work opera/disp-s1:0.4.6 disp-s1 validate golden_output/historical/$f output/historical/$f; done

Sample output from comparison of Historical mode products:

[INFO|validate|L501] 2024-10-15T19:06:30+0000: Comparing HDF5 contents...
[INFO|validate|L193] 2024-10-15T19:06:30+0000: Checking connected component labels...
[INFO|validate|L224] 2024-10-15T19:06:31+0000: Test unwrapped area: 69022981/69037976 (99.978%)
[INFO|validate|L225] 2024-10-15T19:06:31+0000: Reference unwrapped area: 69022979/69037976 (99.978%)
[INFO|validate|L226] 2024-10-15T19:06:31+0000: Intersection/Reference: 69022973/69022979 (100.000%)
[INFO|validate|L227] 2024-10-15T19:06:31+0000: Intersection/Union: 69022973/69022987 (100.000%)
[INFO|validate|L284] 2024-10-15T19:06:42+0000: Checking displacement...
[INFO|validate|L335] 2024-10-15T19:06:45+0000: Test nan count: 23/3566946 (0.001%)
[INFO|validate|L336] 2024-10-15T19:06:45+0000: Reference nan count: 23/3566944 (0.001%)
[INFO|validate|L364] 2024-10-15T19:06:47+0000: Mean absolute re-wrapped phase error: 0.00000 rad
[INFO|validate|L365] 2024-10-15T19:06:47+0000: Max absolute re-wrapped phase error: 0.00173 rad
[INFO|validate|L369] 2024-10-15T19:06:47+0000: Non-congruent pixel count: 0/3566915 (0.000%)
[INFO|validate|L413] 2024-10-15T19:06:49+0000: /identification/product_version: b'0.4' vs. b'0.4'
[INFO|validate|L413] 2024-10-15T19:06:49+0000: /metadata/disp_s1_software_version: b'0.4.1.post1.dev48+gff11e8d.d20241014' vs. b'0.4.5.post1.dev0+g03835fc.d20241015'
[INFO|validate|L413] 2024-10-15T19:06:49+0000: /metadata/dolphin_software_version: b'0.29.0.post1.dev1+g4ae6918' vs. b'0.29.0.post1.dev2+g70b0a95'
[INFO|validate|L413] 2024-10-15T19:06:49+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_20170406T
132750Z_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_202406
26T015700Z_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\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: config_files/algorithm_parameter
s_historical.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  sta
tic_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-IW
1_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.tif\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: dynamic_ancillary_files/dem.tif\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: ar
ray | 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/jplg
0310.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 the mapping from frame_id to frame/burst information.\n  #   Type: string | null.\n  frame_to_burst_json: static_ancillary_files/opera-s1-disp-0.5.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: static_ancillary_files/opera-disp-s1-reference-dates-minimal-2024-09-19.json\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    static_ancillary_files/opera-disp-s1-algorithm-parameters-overrides-2024-10-14.json\nprimary_executable:\n  # Product type of the PGE.\n  #   Type: string.\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: '0.4'\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. Thi...skipping...
[INFO|validate|L413] 2024-10-15T19:06:49+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: 16\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation.\n  #   Type: integer.\n  n_parallel_bursts: 4\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# Time the config file was created.\n#   Type: string.\ncreation_time_utc: '2024-10-14T20:45:30.628514Z'\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  # Output (x, y) resolution (in units of input data).\n  #   Type: object | null.\n  output_resolution:\n  # Alternative to specifying output resolution: Specify the (x, y) strides (decimation\n  #   factor) to perform while processing input. For example, strides of [4, 2] would turn an\n  #   input resolution of [5, 10] into an output resolution of [20, 20].\n  #   Type: object.\n  strides:\n    x: 6\n    y: 3\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
...skipping...
[INFO|validate|L413] 2024-10-15T19:07:19+0000: /metadata/dolphin_software_version: b'0.29.0.post1.dev1+g4ae6918' vs. b'0.29.0.post1.dev2+g70b0a95'
[INFO|validate|L413] 2024-10-15T19:07:19+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\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: config_files/algorithm_parameters_historical.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.tif\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: dynamic_ancillary_files/dem.tif\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_f
...skipping...
[INFO|validate|L413] 2024-10-15T19:07:19+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: 16\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation.\n  #   Type: integer.\n  n_parallel_bursts: 4\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# Time the config file was created.\n#   Type: string.\ncreation_time_utc: '2024-10-14T20:45:30.628514Z'\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  # Output (x, y) resolution (in units of input data).\n  #   Type: object | null.\n  output_resolution:\n  # Alternative to specifying output resolution: Specify the (x, y) strides (decimation\n  #   factor) to perform while processing input. For example, strides of [4, 2] would turn an\n  #   input resolution of [5, 10] into an output resolution of [20, 20].\n  #   Type: object.\n  strides:\n    x: 6\n    y: 3\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
...skipping...
[INFO|validate|L413] 2024-10-15T19:07:48+0000: /metadata/dolphin_software_version: b'0.29.0.post1.dev1+g4ae6918' vs. b'0.29.0.post1.dev2+g70b0a95'
[INFO|validate|L413] 2024-10-15T19:07:48+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\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: config_files/algorithm_parameters_historical.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.tif\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: dynamic_ancillary_files/dem.tif\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_f
...skipping...
[INFO|validate|L413] 2024-10-15T19:07:48+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: 16\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation.\n  #   Type: integer.\n  n_parallel_bursts: 4\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# Time the config file was created.\n#   Type: string.\ncreation_time_utc: '2024-10-14T20:45:30.628514Z'\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  # Output (x, y) resolution (in units of input data).\n  #   Type: object | null.\n  output_resolution:\n  # Alternative to specifying output resolution: Specify the (x, y) strides (decimation\n  #   factor) to perform while processing input. For example, strides of [4, 2] would turn an\n  #   input resolution of [5, 10] into an output resolution of [20, 20].\n  #   Type: object.\n  strides:\n    x: 6\n    y: 3\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
...skipping...
[INFO|validate|L413] 2024-10-15T19:08:18+0000: /metadata/dolphin_software_version: b'0.29.0.post1.dev1+g4ae6918' vs. b'0.29.0.post1.dev2+g70b0a95'
[INFO|validate|L413] 2024-10-15T19:08:18+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\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: config_files/algorithm_parameters_historical.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.tif\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: dynamic_ancillary_files/dem.tif\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_f
...skipping...
[INFO|validate|L413] 2024-10-15T19:08:18+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: 16\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation.\n  #   Type: integer.\n  n_parallel_bursts: 4\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# Time the config file was created.\n#   Type: string.\ncreation_time_utc: '2024-10-14T20:45:30.628514Z'\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  # Output (x, y) resolution (in units of input data).\n  #   Type: object | null.\n  output_resolution:\n  # Alternative to specifying output resolution: Specify the (x, y) strides (decimation\n  #   factor) to perform while processing input. For example, strides of [4, 2] would turn an\n  #   input resolution of [5, 10] into an output resolution of [20, 20].\n  #   Type: object.\n  strides:\n    x: 6\n    y: 3\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
...skipping...
[INFO|validate|L413] 2024-10-15T19:08:48+0000: /metadata/dolphin_software_version: b'0.29.0.post1.dev1+g4ae6918' vs. b'0.29.0.post1.dev2+g70b0a95'
[INFO|validate|L413] 2024-10-15T19:08:48+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\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: config_files/algorithm_parameters_historical.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.tif\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: dynamic_ancillary_files/dem.tif\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_f
...skipping...
[INFO|validate|L413] 2024-10-15T19:08:48+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: 16\n  # If processing separate spatial bursts, number of bursts to run in parallel for wrapped-\n  #   phase-estimation.\n  #   Type: integer.\n  n_parallel_bursts: 4\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# Time the config file was created.\n#   Type: string.\ncreation_time_utc: '2024-10-14T20:45:30.628514Z'\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  # Output (x, y) resolution (in units of input data).\n  #   Type: object | null.\n  output_resolution:\n  # Alternative to specifying output resolution: Specify the (x, y) strides (decimation\n  #   factor) to perform while processing input. For example, strides of [4, 2] would turn an\n  #   input resolution of [5, 10] into an output resolution of [20, 20].\n  #   Type: object.\n  strides:\n    x: 6\n    y: 3\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
...skipping...
[INFO|validate|L413] 2024-10-15T19:09:17+0000: /metadata/dolphin_software_version: b'0.29.0.post1.dev1+g4ae6918' vs. b'0.29.0.post1.dev2+g70b0a95'
[INFO|validate|L413] 2024-10-15T19: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\ndynamic_ancillary_file_group:\n  # REQUIRED: Path to file containing SAS algorithm parameters.\n  #   Type: string.\n  algorithm_parameters_file: config_files/algorithm_parameters_historical.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.tif\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: dynamic_ancillary_files/dem.tif\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_f
...skipping...
osphere_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  # Line-of-sight geometry files for each burst/SLC stack area, for use in correction\n  #   computations.\n  #   Type: array.\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 for tropospheric/ topographic phase corrections.\n  #   Type: string | null.\n  dem_file: dynamic_ancillary_files/dem.tif\nspatial_wavelength_cutoff: 25000.0\n"
[INFO|validate|L505] 2024-10-15T19:09:26+0000: Checking geospatial metadata...
[INFO|validate|L511] 2024-10-15T19:09:26+0000: Files golden_output/historical/20170418_20170430.nc and output/historical/20170418_20170430.nc match.

For the current delivery, all comparisons between output and expected products should pass, as indicated by the following line at the end of the log from the comparison script:

[INFO|validate|L511] 2024-10-02T16:54:19+0000: Files golden_output/historical/<file> and output/historical/<file> match.

Clone this wiki locally