DSWx‐S1 Gamma Acceptance Test Instructions - nasa/opera-sds-pge GitHub Wiki

This page contains instructions for performing Acceptance Testing for the DSWx-S1 Gamma delivery from the OPERA-ADT team. These instructions assume the user has access to the JPL FN-Artifactory, and Docker is installed on their local machine. Optionally, access to the opera-dev-pge AWS machine allows for significantly faster downloads from Artifactory.

Acquiring the DSWx-S1 Interface Docker Image

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/dswx_s1/r3/gamma/dockerimg_dswx_s1_gamma_0.3.tar. Sample inputs and outputs are available under general/gov/nasa/jpl/opera/adt/dswx_s1/r3/gamma/sample_data.zip. Useful background documentation is also available under general/gov/nasa/jpl/opera/adt/dswx_s1/r3/gamma/sample_data.zip.

Download both images to a location on your local machine. This location will be referred to throughout this instructions as <DSWX-S1_DIR> Note that the sample data is quite large, so the download from Artifactory can take some time.

Loading the image into Docker

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

    docker load -i <DSWX-S1_DIR>/dockerimg_dswx_s1_gamma_0.3.tar

Use the following command to verify the Docker image with the name opera/dswx-s1 and the tag gamma_0.3 has been added to your Docker repository:

    docker image ls 

Preparing the test data

Once the sample_data.zip file is downloaded to your local machine, unpack it to <DSWX-S1_DIR>:

    cd <DSWX-S1_DIR>; unzip sample_data.zip

This will create a sample_data directory within <DSWX-S1_DIR> containing the following files/directories:

    expected_output/
    input_dir/
    output_dir/
    scratch_dir/
    dswx_s1.yaml

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 sample_data directory:

  • Create a directory named runconfig, and copy the existing runconfig YAML file into it:

      `mkdir -p <DSWX-S1_DIR>/sample_data/runconfig`
    
      `cp <DSWX-S1_DIR>/sample/dswx_s1.yaml <DSWX-S1_DIR>/sample_data/runconfig/dswx_s1.yaml`
    
  • Make sure the output and scratch directories have write permissions set

      `chmod ga+w output_dir/ scratch_dir/`
    

Executing the DSWx-S1 container on the sample datasets

We're now ready to execute the DSWX-S1 Interface. Run the following the command to kick off execution with the test assets:

    docker run --rm -u $(id -u):$(id -g) \
      -w /home/dswx_user \
      -v <DSWX-S1_DIR>/sample_data/runconfig:/home/dswx_user/runconfig:ro \
      -v <DSWX-S1_DIR>/sample_data/input_dir:/home/dswx_user/input_dir:ro \
      -v <DSWX-S1_DIR>/sample_data/output_dir:/home/dswx_user/output_dir \
      -v <DSWX-S1_DIR>/sample_data/input_dir:/home/dswx_user/scratch/input_dir \
      -v <DSWX-S1_DIR>/sample_data/scratch_dir:/home/dswx_user/scratch_dir \
      -i --tty opera/dswx-s1:gamma_0.3 sh -ci "dswx_s1.py /home/dswx_user/runconfig/dswx_s1.yaml \
         --log /home/dswx_user/output_dir/dswx_s1_0.3.log"

Execution should complete in about 30 minutes. Once complete, you should see ~45 files in <DSWX-S1_DIR>/sample_data/output_dir. Files can be categorized into sets of four GeoTIFF files sharing the same time stamps, plus a .png "browse" image (for more information see OPERA_DSWX_S1_SAS_Design_Doc_IF.docx in the 'documents' directory, optionally downloaded from Artifactory):

      OPERA_L3_DSWx-S1_T44UNA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
      OPERA_L3_DSWx-S1_T44UNA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
      OPERA_L3_DSWx-S1_T44UNA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
      OPERA_L3_DSWx-S1_T44UNA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_BROWSE.png

With this version a log file (dswx_s1.0.3.log) is also written to the output_dir.

Running the Quality Assurance Test

There is a comparison script available. It is located inside the docker image, opera/dswx-s1, in the directory /home/dswx_user/OPERA/DSWX-SAR/src/dswx_sar/dswx_comparison.py.

If you are running on opera-dev-pge you can fetch it into your local file system. In order to accomplish that you must do the following using two separate terminal sessions on opera-dev-pge.

In the first terminal session you do the following steps: (The outputs are representative)

         %  docker container ls -a
         CONTAINER ID          IMAGE                   COMMAND               CREATED       STATUS                    PORTS     NAMES
        6a57f0d95eaf   opera/dswx-s1:beta_0.2.1   "conda run --no-capt…"   3 weeks ago   Exited (130) 3 weeks ago           52e0f6615238
         $ docker run -it --name=6a57f0d95eaf  opera/dswx-s1:beta_0.2.1  /bin/bash% 
         (DSWX-SAR) [dswx_user@afaccc0f30ae scratch]$ ls OPERA/DSWX-SAR/src/dswx_sar/
         ...
         dswx_comparison.py

In the second terminal session you do the following steps:

         $ cd /data/<user>
         $ mkdir from_docker
         $ cd from_docker
         $ docker cp 6a57f0d95eaf:/home/dswx_user/OPERA/DSWX-SAR/src/dswx_sar/dswx_comparison.py .
                                           Successfully copied 9.73kB to /data/rjb/from_docker/.
         $ ls -l
         total 8
          -rw-r--r-- 1 rjb 7750 Oct  5 22:01 dswx_comparison.py

Now the comparison script is on your local file system. Copy it to the directory you want do the validation test on sample_data, say/data/<user>/dswx_s1_0.3.

Within the OPERA PGE repo, we maintain a script that utilizes dswx_comparision.py to compare all files within an expected and output directory. A copy of the script can be found here: https://github.com/nasa/opera-sds-pge/blob/c5910009157d16d5b5451d9313df0e6296716a7e/.ci/scripts/diff_dswx_files.py

Either make a copy of diff_dswx_files.py that is co-located with dswx_comparison.py, or invoke it directly from an existing clone of the OPERA PGE repository.

You can now perform the test by executing:

         $ python3 diff_dswx_files.py sample_data/expected_output  sample_data/output_dir

Or if you want a text file log called result.log: $ python3 diff_dswx_files.py sample_data/expected_output sample_data/output_dir 2>&1 results.log

The QA output should look similar to the following, but for each pair of output products compared:

 Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UNA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UNA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[OK]        Band 1 - Water classification (WTR)"
[OK]   Comparing geotransform
[OK]   Comparing projection
[OK]   Comparing metadata
...

Known Issues with this version

On running the above tests on opera-dev-pge (c6i.2xlarge), the following FAILs were observed:

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "0" in position (x: 474, y: 734) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "0" in position (x: 474, y: 734) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "0" in position (x: 474, y: 734) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "23" in position (x: 3506, y: 378) whereas input 2 has value "24" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "1" in position (x: 3000, y: 32) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "1" in position (x: 3000, y: 32) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "1" in position (x: 3000, y: 32) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UPV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "7" in position (x: 987, y: 0) whereas input 2 has value "6" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "0" in position (x: 2485, y: 407) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "0" in position (x: 2485, y: 407) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "0" in position (x: 2646, y: 8) whereas input 2 has value "6" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQA_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "38" in position (x: 2666, y: 0) whereas input 2 has value "39" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "0" in position (x: 3082, y: 270) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "0" in position (x: 3082, y: 270) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "6" in position (x: 518, y: 155) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T44UQV_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "20" in position (x: 817, y: 0) whereas input 2 has value "19" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "0" in position (x: 2634, y: 449) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "0" in position (x: 2634, y: 449) whereas input 2 has value "1" in the same position.


Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "0" in position (x: 2776, y: 368) whereas input 2 has value "5" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "2" in position (x: 1, y: 0) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "0" in position (x: 1598, y: 572) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "0" in position (x: 1598, y: 572) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "6" in position (x: 1912, y: 34) whereas input 2 has value "5" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UUR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
        * input 1 has value "16" in position (x: 1680, y: 0) whereas input 2 has value "17" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "1" in position (x: 1887, y: 2721) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "1" in position (x: 1887, y: 2721) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "0" in position (x: 528, y: 493) whereas input 2 has value "6" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVQ_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "23" in position (x: 1064, y: 0) whereas input 2 has value "22" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B01_WTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B01_WTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Water classification (WTR)"
            * input 1 has value "0" in position (x: 1403, y: 1402) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B02_BWTR.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B02_BWTR.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Binary Water classification (BWTR)"
            * input 1 has value "0" in position (x: 1403, y: 1402) whereas input 2 has value "1" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B03_CONF.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B03_CONF.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Confidence values (CONF)"
            * input 1 has value "6" in position (x: 421, y: 902) whereas input 2 has value "0" in the same position.

Comparing files:
    file 1: expected_output/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240111T212404Z_S1A_30_v0.1_B04_DIAG.tif
    file 2: output_dir/OPERA_L3_DSWx-S1_T45UVR_20231213T121200Z_20240116T231247Z_S1A_30_v0.1_B04_DIAG.tif
[OK]   Comparing number of bands
Comparing DSWx bands...
[FAIL]      Band 1 - Diagnostic layer (DIAG)"
            * input 1 has value "4" in position (x: 41, y: 297) whereas input 2 has value "5" in the same position.
⚠️ **GitHub.com Fallback** ⚠️