DISP‐S1‐STATIC CalVal Acceptance Testing Instructions - nasa/opera-sds-pge GitHub Wiki

This page contains instructions for performing Acceptance Testing for the DISP-S1-STATIC Final delivery from the OPERA-ADT team. These instructions pertain to the latest version of the CalVal release, currently delivery v6.6. 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-STATIC 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.6/final/dockerimg_disp_s1_final.tar. Sample inputs and outputs are also available under general/gov/nasa/jpl/opera/adt/disp_s1/r6.6/final/delivery_data.zip.

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.6.

Preparing the test data

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

unzip delivery_data.zip
mv delivery_data/* .
rm -rf delivery_data delivery_data.zip

This will create the following files & directories within <DISP_S1_DIR>:

  • cslc_static/
  • dem.vrt
  • dem_0.tif
  • golden_output/
    • dem_warped_utm.tif
    • layover_shadow_mask.tif
    • los_enu.browse.png
    • los_enu.tif
  • opera-s1-disp-0.9.0-frame-to-burst.json.zip
  • rtc_static/
  • runconfig_static.yaml

In order to execute the SAS, the input file directories, ancillaries, 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>/runconfig_static.yaml <DISP_S1_DIR>/runconfig/.

Executing the DISP-S1 container on the sample datasets

Change directory into the <DISP_S1_DIR> directory.

cd <DISP_S1_DIR>/

We're now ready to execute the DISP-S1-STATIC 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.5.6 disp-s1 run runconfig/runconfig_static.yaml

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

[INFO|main_static_layers|L55] 2025-03-20T17:16:14+0000: Creating geometry layers Workflow
[INFO|main_static_layers|L59] 2025-03-20T17:16:14+0000: Stitching RTC layover shadow mask files
[INFO|main_static_layers|L73] 2025-03-20T17:16:16+0000: Stitching CSLC line of sight geometry files

...

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

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

The output/ directory will contain the product files and a browse PNG:

output/
├── dem_warped_utm.tif
├── layover_shadow_mask.tif
├── los_enu.browse.png
└── los_enu.tif

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-static-layers" workflow that accepts two input directories: the golden dataset and the test dataset.

The docker command to run this is:

docker run --rm --volume $(pwd):/work \
    opera/disp-s1:0.5.6 \
    disp-s1 validate-static-layers <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.5.6 \
    disp-s1 validate-static-layers golden_output/ output/

Sample output from comparison for current delivery:

$ docker run --rm --volume $(pwd):/work opera/disp-s1:0.5.6 disp-s1 validate-static-layers golden_output/ output/
[INFO|validate|L519] 2025-03-20T17:21:15+0000: Comparing contents of output to golden_output...
[INFO|validate|L527] 2025-03-20T17:21:15+0000: Comparing output/dem_warped_utm.tif to golden_output/dem_warped_utm.tif...
[INFO|validate|L532] 2025-03-20T17:21:17+0000: Checking geospatial metadata...
[INFO|validate|L527] 2025-03-20T17:21:17+0000: Comparing output/layover_shadow_mask.tif to golden_output/layover_shadow_mask.tif...
[INFO|validate|L532] 2025-03-20T17:21:18+0000: Checking geospatial metadata...
[INFO|validate|L527] 2025-03-20T17:21:18+0000: Comparing output/los_enu.tif to golden_output/los_enu.tif...
[INFO|validate|L532] 2025-03-20T17:21:20+0000: Checking geospatial metadata...
[INFO|validate|L535] 2025-03-20T17:21:20+0000: All files match.

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