-
Notifications
You must be signed in to change notification settings - Fork 6
RTC‐S1 CalVal Acceptance Testing Instructions
This page contains instructions for performing Acceptance Testing for the RTC-S1 CalVal delivery from the OPERA-ADT team. These instructions pertain to the latest version of the CalVal release, currently v4.1. These instructions assume the user has access to the JPL FN-Artifactory, and has Docker installed on their local machine. Optionally, access to the opera-dev-pge AWS machine allows for significantly faster downloads from Artifactory.
The image is currently hosted on JPL FN-Artifactory, 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/rtc_s1/r4.1/calval/dockerimg_rtc_calval_0.4.1.tar
. Sample inputs are available under general/gov/nasa/jpl/opera/adt/rtc_s1/r4.1/calval/delivery_4.1_calval_0.4.1.zip
.
Download all images/archives to a location on your local machine. This location will be referred to throughout this instructions as <RTC_DIR>
The first step in running the RTC-S1 image is to load it into Docker via the following command:
docker load -i <RTC_DIR>/dockerimg_rtc_calval_0.4.1.tar
This should add the Docker image to your local repository with the name opera/rtc
and the tag calval_0.4.1
.
Once the delivery_4.1_calval_0.4.1.zip
file is downloaded to your local machine, unpack it to <RTC_DIR>
:
cd <RTC_DIR>; unzip delivery_4.1_calval_0.4.1.zip
This will create a delivery_4.1_calval_0.4.1
directory within <RTC_DIR>
containing the following files/directories:
- burst_db_20230713-bbox-only.sqlite
- dem.tif
- expected_rtc_s1_output_dir/
|_ t069_147169_iw3/
|_ OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1.h5
|_ OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_mask.tif
|_ OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1.png
|_ OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VH.tif
|_ OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VV.tif
|_ <additional subdirs for each burst from the input SLC>
- expected_rtc_s1_static_output_dir
|_ t069_147169_iw3/
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_incidence_angle.tif
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_local_incidence_angle.tif
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_mask.tif
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_number_of_looks.tif
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1.png
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif
|_ OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif
|_ <additional subdirs for each burst from the input SLC>
- rtc_s1_output_dir/
- rtc_s1_static_output_dir/
- rtc_s1_static.yaml
- rtc_s1.yaml
- S1B_IW_SLC__1SDV_20180504T104507_20180504T104535_010770_013AEE_919F.zip
- S1B_OPER_AUX_POEORB_OPOD_20180524T110543_V20180503T225942_20180505T005942.EOF
- scratch_dir/
In order to execute the SAS, the input file directory, runconfig, scratch and output locations will be mounted into the container instance as Docker Volumes. To help streamline this process, we recommend making the following changes within the delivery_4.1_calval_0.4.1
directory:
-
Create a directory named
runconfig
, and copy the existing runconfig YAML files into it:mkdir -p <RTC_DIR>/delivery_4.1_calval_0.4.1/runconfig
cp <RTC_DIR>/delivery_4.1_calval_0.4.1/rtc_s1*.yaml <RTC_DIR>/delivery_4.1_calval_0.4.1/runconfig/
-
Create a directory named
input_dir
, and move the input files into it:mkdir -p <RTC_DIR>/delivery_4.1_calval_0.4.1/input_dir
mv <RTC_DIR>/delivery_4.1_calval_0.4.1/{dem.tif,burst_db_20230713-bbox-only.sqlite,S1B*} <RTC_DIR>/delivery_4.1_calval_0.4.1/input_dir/
-
Modify the copied runconfigs to point the input products to the location we will be mounting to within the container (/home/rtc_user/input_dir). The sections of the
input_file_group
should be modified to match the following:
input_file_group:
safe_file_path: [/home/rtc_user/input_dir/S1B_IW_SLC__1SDV_20180504T104507_20180504T104535_010770_013AEE_919F.zip]
orbit_file_path: [/home/rtc_user/input_dir/S1B_OPER_AUX_POEORB_OPOD_20180524T110543_V20180503T225942_20180505T005942.EOF]
burst_id:
static_ancillary_file_group:
burst_database_file: /home/rtc_user/input_dir/burst_db_20230713-bbox-only.sqlite
dynamic_ancillary_file_group:
dem_file: /home/rtc_user/input_dir/dem.tif
- Modify the copied runconfigs to point the
product_path
value underproduct_group
to "rtc_s1_output_dir" (or "rtc_s1_static_output_dir" for rtc_s1_static.yaml). This is required since we will invoking the SAS image using a different working directory than its default. Theproduct_path
section of the RunConfig should be modified to match the following:
product_group:
product_path: rtc_s1_output_dir # <- update
scratch_path: scratch_dir
output_dir: rtc_s1_output_dir
product_id:
...
- Within the rtc_s1_static.yaml file, add the following setting within the
processing
section:
processing:
...
num_workers: <num CPUs * 3/4>
Where <num CPUs * 3/4>
is 3/4th the total number of available CPU's on the instance. For example, if running on a c6i.4xlarge with 16 CPU, num_workers
should be set to 12
. This is to avoid overwhelming the instance, causing it to lock up. The number of available cores on a linux machine can be found by running nproc
.
-
Make sure the output and scratch directories have write permissions set
chmod ga+w rtc_s1_output_dir/ rtc_s1_static_output_dir/ scratch_dir/
We're now ready to execute the RTC-S1 CalVal delivery. Run the following the command to kick off execution with the test assets:
docker run --rm -u $(id -u):$(id -g) \
-w /home/rtc_user \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/runconfig:/home/rtc_user/runconfig \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/input_dir:/home/rtc_user/input_dir:ro \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/rtc_s1_output_dir:/home/rtc_user/rtc_s1_output_dir \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/scratch_dir:/home/rtc_user/scratch_dir \
-i --tty opera/rtc:calval_0.4.1 rtc_s1.py /home/rtc_user/runconfig/rtc_s1.yaml 2>&1 | tee <RTC_DIR>/rtc_at.log
On a c6i.xlarge instance, execution should take about 100 minutes.
To run the container in static layer generation mode:
docker run --rm -u $(id -u):$(id -g) \
-w /home/rtc_user \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/runconfig:/home/rtc_user/runconfig \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/input_dir:/home/rtc_user/input_dir:ro \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir:/home/rtc_user/rtc_s1_static_output_dir \
-v <RTC_DIR>/delivery_4.1_calval_0.4.1/scratch_dir:/home/rtc_user/scratch_dir \
-i --tty opera/rtc:calval_0.4.1 rtc_s1.py /home/rtc_user/runconfig/rtc_s1_static.yaml 2>&1 | tee <RTC_DIR>/rtc_static_at.log
On a c6i.4xlarge instance, execution should take about 30 minutes.
Once both executions are complete, you should see a number of directories within the <RTC_DIR>/delivery_4.1_calval_0.4.1/<rtc_output_dir|rtc_static_output_dir>/
directories, one for each burst ID processed. There should be 28 sub-directories, each containing several output products:
OPERA_L2_RTC-S1_20180504T104507Z_<ProductionDatetime>Z_S1B_30_v0.4.1.h5
OPERA_L2_RTC-S1_20180504T104507Z_<ProductionDatetime>Z_S1B_30_v0.4.1.tif
OPERA_L2_RTC-S1_20180504T104507Z_<ProductionDatetime>Z_S1B_30_v0.4.1.tif
OPERA_L2_RTC-S1_20180504T104507Z_<ProductionDatetime>Z_S1B_30_v0.4.1_mask.tif
OPERA_L2_RTC-S1_20180504T104507Z_<ProductionDatetime>Z_S1B_30_v0.4.1.png
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_incidence_angle.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_layover_shadow_mask.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_local_incidence_angle.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_mask.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_number_of_looks.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif
OPERA_L2_RTC-S1-STATIC_20140403_<ProductionDatetime>Z_S1B_30_v0.4.1.png
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.
For the current CalVal delivery, the comparison script (rtc_compare.py) must be downloaded to <RTC_DIR>
, and then invoked with the following shell script to compare a single set of burst-based products at a time. rtc_compare.py
expects the paths to the expected and output HD5 metadata product, from which it can find the GeoTIFF layers to compare automatically.
The following shell script can be used to automated the comparisons across all burst-based products:
#!/bin/bash
declare -a burst_ids=("t069_147169_iw3"
"t069_147170_iw1"
"t069_147170_iw2"
"t069_147170_iw3"
"t069_147171_iw1"
"t069_147171_iw2"
"t069_147171_iw3"
"t069_147172_iw1"
"t069_147172_iw2"
"t069_147172_iw3"
"t069_147173_iw1"
"t069_147173_iw2"
"t069_147173_iw3"
"t069_147174_iw1"
"t069_147174_iw2"
"t069_147174_iw3"
"t069_147175_iw1"
"t069_147175_iw2"
"t069_147175_iw3"
"t069_147176_iw1"
"t069_147176_iw2"
"t069_147176_iw3"
"t069_147177_iw1"
"t069_147177_iw2"
"t069_147177_iw3"
"t069_147178_iw1"
"t069_147178_iw2"
"t069_147178_iw3")
for burst_id in "${burst_ids[@]}"; do
echo "-------------------------------------"
echo "Comparing results for ${burst_id}"
output_file=./delivery_4.1_calval_0.4.1/rtc_s1_output_dir/${burst_id}/
expected_file=./delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/${burst_id}/
python3 rtc_compare.py ${expected_file} ${output_file}
echo
echo "Comparing static layer results for ${burst_id}"
output_file=./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/${burst_id}/
expected_file=./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/${burst_id}/
python3 rtc_compare.py ${expected_file} ${output_file}
done
After saving a copy of the script to <RTC_DIR>
with a name such as rtc_compare_products_calval_0.4.1.sh
, and making it executable, you can compare all expected/actual products with the following command:
./rtc_compare_products_calval_0.4.1.sh
Note that the local Python environment needs GDAL, NumPy and h5py installed in order to run rtc_compare.py
.
The rtc_compare.py script performs a number of checks on both the image layers and metadata for each burst-based set of products. All tests should be marked as PASS
, or WARNING
for some instances of metadata where we expect a mismatch between input file paths, time stamps etc...
An example report for a single burst product is provided below.
-------------------------------------
Comparing results for t069_147169_iw3
file_list (directory 1): ['./delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_mask.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VV.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VH.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1.h5']
file_list (directory 2): ['./delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1_mask.tif', './delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1_VV.tif', './delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1_VH.tif', './delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1.h5']
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_mask.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1_mask.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - Mask Layer"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VV.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1_VV.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - RTC-S1 VV Backscatter"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VH.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1_VH.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - RTC-S1 VH Backscatter"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************ TESTING (HDF5 file) ************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1.h5
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1_20180504T104507Z_20230802T163957Z_S1B_30_v0.4.1.h5
-------------------------------------------------------
Checking the dataset.
[PASS] Dataset 1 of 93: //metadata/processingInformation/algorithms/demInterpolation
[PASS] Dataset 2 of 93: //metadata/sourceData/numberOfAzimuthLines
[PASS] Dataset 3 of 93: //metadata/sourceData/slantRangeSpacing
[PASS] Dataset 4 of 93: //metadata/sourceData/dataAccess
[PASS] Dataset 5 of 93: //metadata/sourceData/maxNoiseEquivalentSigmaZero
[PASS] Dataset 6 of 93: //metadata/processingInformation/parameters/geocoding/burstGeogridSnapY
[PASS] Dataset 7 of 93: //metadata/processingInformation/parameters/geocoding/burstGeogridSnapX
[PASS] Dataset 8 of 93: //metadata/sourceData/farRangeIncidenceAngle
[PASS] Dataset 9 of 93: //identification/platform
[PASS] Dataset 10 of 93: //metadata/processingInformation/algorithms/softwareVersion
[PASS] Dataset 12 of 93: //metadata/processingInformation/parameters/outputBackscatterDecibelConversionEquation
[PASS] Dataset 13 of 93: //identification/processingType
[PASS] Dataset 14 of 93: //identification/ceosAnalysisReadyDataDocumentIdentifier
[PASS] Dataset 15 of 93: //metadata/sourceData/azimuthResolutionInMeters
[PASS] Dataset 16 of 93: //identification/dataAccess
[PASS] Dataset 18 of 93: //metadata/sourceData/numberOfAcquisitions
[PASS] Dataset 19 of 93: //identification/orbitPassDirection
[PASS] Dataset 20 of 93: //metadata/processingInformation/algorithms/geocodingAlgorithmReference
[PASS] Dataset 21 of 93: //metadata/orbit/time
[PASS] Dataset 22 of 93: //metadata/sourceData/processingCenter
[PASS] Dataset 23 of 93: //metadata/processingInformation/parameters/wetTroposphericGeolocationCorrectionApplied
[PASS] Dataset 26 of 93: //data/projection
[PASS] Dataset 27 of 93: //metadata/sourceData/nearRangeIncidenceAngle
[PASS] Dataset 28 of 93: //identification/acquisitionMode
[PASS] Dataset 29 of 93: //metadata/processingInformation/parameters/outputBackscatterNormalizationConvention
[PASS] Dataset 30 of 93: //identification/beamID
[PASS] Dataset 31 of 93: //metadata/sourceData/zeroDopplerTimeSpacing
[PASS] Dataset 32 of 93: //metadata/sourceData/slantRangeLooks
[PASS] Dataset 33 of 93: //metadata/processingInformation/parameters/filteringApplied
[PASS] Dataset 34 of 93: //metadata/sourceData/centerFrequency
[PASS] Dataset 35 of 93: //metadata/processingInformation/inputs/l1SlcGranules
[PASS] Dataset 36 of 93: //identification/productLevel
[PASS] Dataset 37 of 93: //identification/diagnosticModeFlag
[PASS] Dataset 38 of 93: //data/xCoordinates
[PASS] Dataset 39 of 93: //metadata/sourceData/productLevel
[PASS] Dataset 40 of 93: //metadata/processingInformation/algorithms/geocoding
[PASS] Dataset 41 of 93: //metadata/processingInformation/parameters/bistaticDelayCorrectionApplied
[PASS] Dataset 43 of 93: //identification/isGeocoded
[PASS] Dataset 44 of 93: //identification/zeroDopplerStartTime
[PASS] Dataset 45 of 93: //data/yCoordinates
[PASS] Dataset 46 of 93: //identification/zeroDopplerEndTime
[PASS] Dataset 47 of 93: //metadata/sourceData/zeroDopplerStartTime
[PASS] Dataset 48 of 93: //metadata/processingInformation/parameters/geocoding/ceosAnalysisReadyDataPixelCoordinateConvention
[PASS] Dataset 49 of 93: //metadata/sourceData/numberOfRangeSamples
[PASS] Dataset 50 of 93: //data/listOfPolarizations
[PASS] Dataset 51 of 93: //identification/productSpecificationVersion
[PASS] Dataset 52 of 93: //identification/absoluteOrbitNumber
[PASS] Dataset 53 of 93: //identification/project
[PASS] Dataset 54 of 93: //identification/ceosAnalysisReadyDataProductType
[PASS] Dataset 55 of 93: //metadata/processingInformation/parameters/preprocessingMultilookingApplied
[PASS] Dataset 56 of 93: //metadata/sourceData/institution
[PASS] Dataset 57 of 93: //data/xCoordinateSpacing
[PASS] Dataset 58 of 93: //metadata/QA/rfiInformation/isRfiInfoAvailable
[PASS] Dataset 59 of 93: //metadata/sourceData/softwareVersion
[PASS] Dataset 60 of 93: //metadata/sourceData/azimuthLooks
[PASS] Dataset 61 of 93: //metadata/orbit/position
[PASS] Dataset 62 of 93: //identification/burstID
[PASS] Dataset 63 of 93: //metadata/processingInformation/algorithms/radiometricTerrainCorrection
[PASS] Dataset 64 of 93: //metadata/sourceData/rangeBandwidth
[PASS] Dataset 65 of 93: //identification/boundingPolygon
[PASS] Dataset 66 of 93: //metadata/orbit/referenceEpoch
[PASS] Dataset 67 of 93: //identification/institution
[PASS] Dataset 68 of 93: //metadata/orbit/orbitType
[PASS] Dataset 69 of 93: //identification/lookDirection
[PASS] Dataset 71 of 93: //identification/trackNumber
[PASS] Dataset 72 of 93: //identification/productVersion
[PASS] Dataset 73 of 93: //metadata/processingInformation/algorithms/radiometricTerrainCorrectionAlgorithmReference
[PASS] Dataset 74 of 93: //metadata/sourceData/slantRangeStart
[PASS] Dataset 75 of 93: //metadata/processingInformation/parameters/noiseCorrectionApplied
[PASS] Dataset 76 of 93: //metadata/sourceData/zeroDopplerEndTime
[PASS] Dataset 77 of 93: //metadata/processingInformation/parameters/outputBackscatterExpressionConvention
[PASS] Dataset 78 of 93: //metadata/sourceData/slantRangeResolutionInMeters
[PASS] Dataset 79 of 93: //metadata/sourceData/processingDateTime
[PASS] Dataset 80 of 93: //metadata/orbit/velocity
[PASS] Dataset 81 of 93: //identification/boundingBox
[PASS] Dataset 82 of 93: //metadata/processingInformation/algorithms/demEgmModel
[PASS] Dataset 84 of 93: //metadata/processingInformation/parameters/dryTroposphericGeolocationCorrectionApplied
[PASS] Dataset 86 of 93: //identification/productType
[PASS] Dataset 87 of 93: //metadata/processingInformation/parameters/radiometricTerrainCorrectionApplied
[PASS] Dataset 88 of 93: //metadata/processingInformation/algorithms/noiseCorrectionAlgorithmReference
[PASS] Dataset 89 of 93: //data/yCoordinateSpacing
[PASS] Dataset 90 of 93: //metadata/orbit/interpMethod
[PASS] Dataset 91 of 93: //identification/radarBand
[PASS] Dataset 92 of 93: //metadata/processingInformation/parameters/inputBackscatterNormalizationConvention
[PASS] Dataset 93 of 93: //identification/instrumentName
Checking the attributes.
HDF5 test summary:
[PASS] Same dataset structure confirmed.
[PASS] Same attributes structure confirmed.
[PASS] The datasets of the two HDF files are the same within the tolerance.
Relative tolerance = 0.001, Absolute tolerance = 0.0001
[PASS] The attributes of the two HDF files are the same within the tolerance
Relative tolerance = 0.001, Absolute tolerance = 0.0001
*******************************************************
************ Overall results ************
*******************************************************
[PASS] file: OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_mask.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VV.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1_VH.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1_20180504T104507Z_20230801T011059Z_S1B_30_v0.4.1.h5
*******************************************************
Comparing static layer results for t069_147169_iw3
file_list (directory 1): ['./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_mask.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_number_of_looks.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_local_incidence_angle.tif', './delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_incidence_angle.tif']
file_list (directory 2): ['./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_mask.tif', './delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_number_of_looks.tif', './delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif', './delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif', './delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_local_incidence_angle.tif', './delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_incidence_angle.tif']
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_mask.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_mask.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - Mask Layer"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_number_of_looks.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_number_of_looks.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - Number of Looks"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - RTC Area Normalization Factor Gamma0 to Beta0"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - RTC Area Normalization Factor Gamma0 to Sigma0"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_local_incidence_angle.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_local_incidence_angle.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - Local Incidence Angle"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************* TESTING (GeoTIFF file) **************
*******************************************************
*** file 1: ./delivery_4.1_calval_0.4.1/expected_rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_incidence_angle.tif
*** file 2: ./delivery_4.1_calval_0.4.1/rtc_s1_static_output_dir/t069_147169_iw3/OPERA_L2_RTC-S1-STATIC_20140403_20230802T201656Z_S1B_30_v0.4.1_incidence_angle.tif
-------------------------------------------------------
[PASS] Comparing number of bands
Comparing RTC-S1 bands...
[PASS] Band 1 - Incidence Angle"
[PASS] Comparing geotransform
[PASS] Comparing metadata
*******************************************************
************ Overall results ************
*******************************************************
[PASS] file: OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_mask.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_number_of_looks.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_beta0.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_rtc_anf_gamma0_to_sigma0.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_local_incidence_angle.tif
*******************************************************
[PASS] file: OPERA_L2_RTC-S1-STATIC_20140403_20230801T010007Z_S1B_30_v0.4.1_incidence_angle.tif
*******************************************************
For the Acceptance Test to pass, the "Overall results" section for each burst product (including static layers) should display PASS
for all test categories.