Sen2like tool for harmonize Sentinel-2 and Landsat-8 imagery

Are there any news regarding sen2like plugin?

In SNAP github the page seems empty. https://github.com/senbox-org/sen2like
Is there any deadline in the pipeline? Or is it already integrated in SNAP 8?

Hello,
No, sen2like plugin it’s not already integrated in SNAP 8.
But the corresponding SNAP github page is no longer empty:

1 Like

Hello
I am using sen2like processor v 3.1
I am trying to run it (for some tests) for a single tile only (31TCJ). The inputs are three L8 L1C products from path 198 and rows 29, 30 and 31, and one S2 L1C product (of the same 31TCJ tile of course). I am using a S2 L2A product as reference ( in my tests I also used a S2 L1C product, it’s the same behavior)
I am having some issues with the first block doStitching (and all the others which are using mgrs_framing.reframe function). It does exit with the following error:

user@pc:/usr/local/sen2like# python sen2like.py single-tile-mode 31TCJ --conf β€œ/data/config.ini” --start-date 2020-09-01 --end-date 2020-10-28 --wd β€œ/data/workingdir” --refImage β€œ/data/References/S2A_MSIL2A_20201017T105041_N0214_R051_T31TCJ_20201017T134105.SAFE/GRANULE/L2A_T31TCJ_A027790_20201017T105446/IMG_DATA/R10m/T31TCJ_20201017T105041_B04_10m.jp2”
[INFO ] 2021-02-04 15:23:55 - reader - LandsatMTL Class
[INFO ] 2021-02-04 15:23:55 - reader - Product: /data/PRODUCTS_light/Landsat8/198/30/LC08_L1TP_198030_20200917_20201006_01_T1
[INFO ] 2021-02-04 15:23:55 - landsat - – Landsat_id : LC81980302020261LGN00
[INFO ] 2021-02-04 15:23:55 - landsat - – DN configuration
[INFO ] 2021-02-04 15:23:55 - landsat - DN Images found
[INFO ] 2021-02-04 15:23:55 - landsat - – RADIANCE configuration
[WARNING ] 2021-02-04 15:23:55 - landsat - WARNING No Radiance Images
[INFO ] 2021-02-04 15:23:55 - landsat - – RHO TOA configuration
[WARNING ] 2021-02-04 15:23:55 - landsat - WARNING No TOA Images
[INFO ] 2021-02-04 15:23:55 - landsat - SAT_AZ , SAT_ZENITH, SUN_AZ, SUN_ZENITH
[INFO ] 2021-02-04 15:23:55 - landsat - UNIT = DEGREES (scale: x100) :
[INFO ] 2021-02-04 15:23:55 - landsat - /data/workingdir/20134/LC08_L1TP_198030_20200917_20201006_01_T1/tie_points.tif
[INFO ] 2021-02-04 15:23:55 - landsat - Generating validity and nodata masks from BQA band
[INFO ] 2021-02-04 15:23:55 - image_file - Written: /data/workingdir/20134/LC08_L1TP_198030_20200917_20201006_01_T1/valid_pixel_mask.tif
[INFO ] 2021-02-04 15:23:57 - image_file - Written: /data/workingdir/20134/LC08_L1TP_198030_20200917_20201006_01_T1/nodata_pixel_mask.tif
[INFO ] 2021-02-04 15:23:57 - S2L_Stitching - Product found for stitching /data/PRODUCTS_light/Landsat8/198/29/LC08_L1TP_198029_20200917_20201006_01_T1:
[INFO ] 2021-02-04 15:23:57 - reader - LandsatMTL Class
[INFO ] 2021-02-04 15:23:57 - reader - Product: /data/PRODUCTS_light/Landsat8/198/29/LC08_L1TP_198029_20200917_20201006_01_T1
[INFO ] 2021-02-04 15:23:57 - landsat - – Landsat_id : LC81980292020261LGN00
[INFO ] 2021-02-04 15:23:57 - landsat - – DN configuration
[INFO ] 2021-02-04 15:23:57 - landsat - DN Images found
[INFO ] 2021-02-04 15:23:57 - landsat - – RADIANCE configuration
[WARNING ] 2021-02-04 15:23:57 - landsat - WARNING No Radiance Images
[INFO ] 2021-02-04 15:23:57 - landsat - – RHO TOA configuration
[WARNING ] 2021-02-04 15:23:57 - landsat - WARNING No TOA Images
_product.mtl.mask_filename = /data/workingdir/20134/LC08_L1TP_198030_20200917_20201006_01_T1/valid_pixel_mask.tif
Stitching reframe, margin = 50
image = <core.image_file.S2L_ImageFile object at 0x7f11ff23c518>
tilecode = 31TCJ
roi = index TILE_ID EPSG UTM_WKT MGRS_REF LL_WKT
0 29231 31TCJ 32631 MULTIPOLYGON(((300000 4900020,300000 4790220,4… 44.225784263 0.49593622377 44.246370915 1.7475… MULTIPOLYGON(((0.495928592915159 44.2259641542…
target_epsg = 32631
target_srs = PROJCS[β€œWGS 84 / UTM zone 31N”,
GEOGCS[β€œWGS 84”,
DATUM[β€œWGS_1984”,
SPHEROID[β€œWGS 84”,6378137,298.257223563,
AUTHORITY[β€œEPSG”,β€œ7030”]],
AUTHORITY[β€œEPSG”,β€œ6326”]],
PRIMEM[β€œGreenwich”,0,
AUTHORITY[β€œEPSG”,β€œ8901”]],
UNIT[β€œdegree”,0.0174532925199433,
AUTHORITY[β€œEPSG”,β€œ9122”]],
AUTHORITY[β€œEPSG”,β€œ4326”]],
PROJECTION[β€œTransverse_Mercator”],
PARAMETER[β€œlatitude_of_origin”,0],
PARAMETER[β€œcentral_meridian”,3],
PARAMETER[β€œscale_factor”,0.9996],
PARAMETER[β€œfalse_easting”,500000],
PARAMETER[β€œfalse_northing”,0],
UNIT[β€œmetre”,1,
AUTHORITY[β€œEPSG”,β€œ9001”]],
AXIS[β€œEasting”,EAST],
AXIS[β€œNorthing”,NORTH],
AUTHORITY[β€œEPSG”,β€œ32631”]]
image.projection =
image_srs =
image_srs.GetUTMZone() = 0 | target_srs.GetUTMZone() = 31
Traceback (most recent call last):
File β€œsen2like.py”, line 430, in
sys.exit(main(with_multiprocess_support=True))
File β€œsen2like.py”, line 425, in main
start_process(tile, _products, args, start_date, end_date)
File β€œsen2like.py”, line 252, in start_process
process(_product, args.bands)
File β€œsen2like.py”, line 292, in process
generic_process_step(block_name, product, β€œpreprocess”)
File β€œsen2like.py”, line 78, in generic_process_step
return processus(pd)
File β€œ/usr/local/sen2like/s2l_processes/S2L_Stitching.py”, line 166, in preprocess
product_validity_masks.append(self.reframe(S2L_ImageFile(_product.mtl.mask_filename), _product))
File β€œ/usr/local/sen2like/s2l_processes/S2L_Stitching.py”, line 105, in reframe
order=0, margin=margin, dtype=dtype, compute_offsets=True)
File β€œ/usr/local/sen2like/grids/mgrs_framing.py”, line 91, in reframe
raise BaseException(msg)
BaseException: image epsg and target epsg differ: None / 32631. Impossible to reframe input image.

I added some debug messages in the source code, just to try to understand what’s happening. What I noticed is that in the file
/data/workingdir/20134/LC08_L1TP_198030_20200917_20201006_01_T1/valid_pixel_mask.tif
there is no β€œCoordinate System” (UTM is 31N) added at the file time creation, thus later , in mgrs_framing.reframe function, line:
image_srs = osr.SpatialReference(wkt=image.projection)
the image_srs is not well created, because the UTM is missing from the β€œvalid_pixel_mask.tif” file. I was able to check this by using gdalinfo over this file, here is the result:

user@pc:/usr/local/sen2like# gdalinfo /data/workingdir/19805/LC08_L1TP_198030_20200917_20201006_01_T1/valid_pixel_mask.tif
Driver: GTiff/GeoTIFF
Files: /data/workingdir/19805/LC08_L1TP_198030_20200917_20201006_01_T1/valid_pixel_mask.tif
Size is 2621, 2657
Origin = (0.000000000000000,0.000000000000000)
Pixel Size = (1.000000000000000,1.000000000000000)
Image Structure Metadata:
COMPRESSION=LZW
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( 0.0000000, 0.0000000)
Lower Left ( 0.000, 2657.000)
Upper Right ( 2621.000, 0.000)
Lower Right ( 2621.000, 2657.000)
Center ( 1310.500, 1328.500)
Band 1 Block=2621x3 Type=Byte, ColorInterp=Gray

I am lost… Do you know what I am doing wrong?
Thank you !

Dear agrosu1978,

we should be able to provide you a more detailed answer by next week. Meanwhile you may try to look a the geoinformation of your BQA file within your Landsat-8 product in input. Try to check it with gdalinfo.

Cheers
Sen2like team

1 Like

Hello
Thank you for your fast answer.
I am aware about the BQA file, at first I also thought that this file is not containing the UTM zone, but after I performed a gdalinfo over it, I saw that the file looks pretty ok. Here is the output:

(sen2like) root@65938ac08bde:/usr/local/sen2like# gdalinfo /data/PRODUCTS_light/Landsat8/198/30/LC08_L1TP_198030_20200917_20201006_01_T1/LC08_L1TP_198030_20200917_20201006_01_T1_BQA.TIF
Driver: GTiff/GeoTIFF
Files: /data/PRODUCTS_light/Landsat8/198/30/LC08_L1TP_198030_20200917_20201006_01_T1/LC08_L1TP_198030_20200917_20201006_01_T1_BQA.TIF
/data/PRODUCTS_light/Landsat8/198/30/LC08_L1TP_198030_20200917_20201006_01_T1/LC08_L1TP_198030_20200917_20201006_01_T1_BQA.TIF.ovr
/data/PRODUCTS_light/Landsat8/198/30/LC08_L1TP_198030_20200917_20201006_01_T1/LC08_L1TP_198030_20200917_20201006_01_T1_MTL.txt
Size is 7861, 7971
Coordinate System is:
PROJCRS[β€œWGS 84 / UTM zone 31N”,
BASEGEOGCRS[β€œWGS 84”,
DATUM[β€œWorld Geodetic System 1984”,
ELLIPSOID[β€œWGS 84”,6378137,298.257223563,
LENGTHUNIT[β€œmetre”,1]]],
PRIMEM[β€œGreenwich”,0,
ANGLEUNIT[β€œdegree”,0.0174532925199433]],
ID[β€œEPSG”,4326]],
CONVERSION[β€œUTM zone 31N”,
METHOD[β€œTransverse Mercator”,
ID[β€œEPSG”,9807]],
PARAMETER[β€œLatitude of natural origin”,0,
ANGLEUNIT[β€œdegree”,0.0174532925199433],
ID[β€œEPSG”,8801]],
PARAMETER[β€œLongitude of natural origin”,3,
ANGLEUNIT[β€œdegree”,0.0174532925199433],
ID[β€œEPSG”,8802]],
PARAMETER[β€œScale factor at natural origin”,0.9996,
SCALEUNIT[β€œunity”,1],
ID[β€œEPSG”,8805]],
PARAMETER[β€œFalse easting”,500000,
LENGTHUNIT[β€œmetre”,1],
ID[β€œEPSG”,8806]],
PARAMETER[β€œFalse northing”,0,
LENGTHUNIT[β€œmetre”,1],
ID[β€œEPSG”,8807]]],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT[β€œmetre”,1]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT[β€œmetre”,1]],
USAGE[
SCOPE[β€œunknown”],
AREA[β€œWorld - N hemisphere - 0Β°E to 6Β°E - by country”],
BBOX[0,0,84,6]],
ID[β€œEPSG”,32631]]
Data axis to CRS axis mapping: 1,2
Origin = (282885.000000000000000,4901115.000000000000000)
Pixel Size = (30.000000000000000,-30.000000000000000)
Metadata:
AREA_OR_POINT=Point
METADATATYPE=ODL
Image Structure Metadata:
COMPRESSION=DEFLATE
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( 282885.000, 4901115.000) ( 0d16’53.11"E, 44d13’51.30"N)
Lower Left ( 282885.000, 4661985.000) ( 0d22’30.73"E, 42d 4’47.75"N)
Upper Right ( 518715.000, 4901115.000) ( 3d14’ 4.08"E, 44d15’46.93"N)
Lower Right ( 518715.000, 4661985.000) ( 3d13’34.92"E, 42d 6’35.05"N)
Center ( 400800.000, 4781550.000) ( 1d46’45.77"E, 43d10’48.75"N)
Band 1 Block=512x512 Type=UInt16, ColorInterp=Gray
Overviews: 2621x2657, 874x886, 292x296, 98x99

Until our technical team can look into more details next week, could you please provide the details of your configuration? Operating system, python, anaconda, gdal versions? Origin of your inputs files? Filesystem Permissions?

Cheers
Sen2Like team

Dear agrosu1978,

Can you try to move the BQA β€œ.ovr” file from your input product to another place and rerun ? I think the Sen2like processor is being misled by it.
If confirmed, we will add a fix for that in the next version (first time we meet this case!).

Best regards

Hello
I can confirm that after I removed the β€œextra” files, sen2like created well that valid_pixel_mask.tif file (with UTM zone info). And the process runs well now. I was able to run over a time series (2019). When I say β€œextra” files I mean all the β€œovr”, β€œIMD” and β€œjpg” files I found in Landsat products. But, these products were downloaded directly from the usgs site, so I can’t say these β€œextra” files were in fact β€¦β€œextra” but they have some plus information.
So, as I understand from you, only the β€œ* BQA *.ovr” file should be deleted, but I did this in weekend already (as I said, I deleted all the ovrs, IMDs and jpgs files). Sorry I didn’t have time to add this info here meanwhile. Thanks for your support, so yes, it confirms, the β€œovr” file misled sen2like. I don’t know about the other files (IMD, jpg)
Kind regards

Hello
I have launched sen2like over a time series (the whole 2019 year, with Landsat 8 L1 level and S2 L1C, products) for a single tile only. The size of the output is ~194GB. I set all the modules to True in config.ini:
[Processing]
doStitching = True
doGeometryKLT = True
doToa = True
doAtmcor = True
doNbar = True
doSbaf = True
doFusion = True
doPackager = True
doPackagerL2H = True
doPackagerL2F = True

As I said, the output looks ok, ndvi may be computed using the raster files from it.
But after that, I tried the following config.ini, using the same input time series:
[Processing]
doStitching = False
doGeometryKLT = False
doToa = False
doAtmcor = True
doNbar = False
doSbaf = True
doFusion = False
doPackager = True
doPackagerL2H = True
doPackagerL2F = True
The output is somewhere around ~11 GB, but all the raster files are ~870 KB . So actually, the output is a collection of empty rasters:
β€œβ€"
Band 1 Block=1024x1024 Type=UInt16, ColorInterp=Gray
Minimum=0.000, Maximum=0.000, Mean=0.000, StdDev=0.000
Overviews: 3926x3986, 1963x1993, 1309x1329, 655x665
Offset: 0, Scale:0.0001
Metadata:
STATISTICS_MAXIMUM=0
STATISTICS_MEAN=0
STATISTICS_MINIMUM=0
STATISTICS_STDDEV=0
STATISTICS_VALID_PERCENT=100`
β€œβ€"
I just want to ask if this is normal, and if the config.ini with True set only for doAtmcor and doSbaf does make any sense?
If you need any other information regarding the scenario I used for launching sen2like, please just let me know.
Thank you so much for any information regarding the second config.ini.

Dear agrosu1978,

I think that the doToa = True is mandatory in your case, as it is the step necessary to convert digital counts to Top Of Atmosphere (TOA) reflectance, required for the atmospheric correction step. I would also recommend at least to set the doGeometryKLT = True, as it is always better to have coregistered pixels when working with time series.

If doFusion = False, then the doPackagerL2F = True is not necessary as the doPackagerL2F is for Landsat-8 fused products (at Sentinel-2 spatial resolution). doPackagerL2H is for harmonised products at native resolution.

Please also have a look to the section 5.2.3 of User Manual and the updated readme on https://github.com/senbox-org/sen2like, concerning the importance of meteorological data when working with this sen2like version:

β€œ(…) It is worth noting that the overall accuracy of your final ARD product strongly depends on the accuracy of sen2like auxiliary data. Two categories of auxiliary data are important: the raster reference for geometric corrections and the meteorological data for atmospheric corrections. Regarding atmospheric corrections, one possibility is to use data from the Copernicus Atmosphere Monitoring Service [9]. The Sen2Like team prepared a dedicated CAMS monthly dataset for the Year 2020, available from here [hyperlink available on github]. Please refer to this short description [hyperlink available on github] for additional information. (…)”

Have a good day working with sen2like!
Sen2Like team

Thank you a lot, your response has been very helpful.

Hello Sen2Like team
We encountered some problems with sen2like. I will try to be as brief as possible
sen2like version is: sen2like.py 3.1.2
We are launching sen2like like this:

#:python sen2like.py single-tile-mode 36NXF --conf "/data/config.ini" --start-date 2019-01-01 --end-date 2019-12-31 --wd "/data/workingdir"

The config.ini:
[Processing]
doStitching = True
doGeometryKLT = True
doToa = True
doAtmcor = True
doNbar = True
doSbaf = True
doFusion = True
doPackager = True
doPackagerL2H = True
doPackagerL2F = True

The input data:

  • Products from 2019/01/01 to 2019/12/31
    • L8 Level 1 Path 170 ; Rows 58,59,60,61
    • S2 L1C for 36NXF tile
  • Reference -> S2 L2A full product from 20191004 with cloud coverage < 5 % (maybe this info is helpful for you), found in /data/References/reference_map.json:
    β€œ36NXF”: β€œ/data/References/S2B_MSIL2A_20191004T074749_N0213_R135_T36NXF_20191004T114035.SAFE/GRANULE/L2A_T36NXF_A013460_20191004T080733/IMG_DATA/R10m/T36NXF_20191004T074749_B
    04_10m.jp2”

Problems noticed:

  1. I saw a RuntimeWarning, division by 0 at the beginning of the processing. Here is the log:
[INFO    ] 2021-02-18 15:16:55 - reader               - Sentinel2MTL Class
[INFO    ] 2021-02-18 15:16:55 - reader               - Product: /data/PRODUCTS/Sentinel2/36NXF/S2A_MSIL1C_20190102T075321_N0207_R135_T36NXF_20190102T092351.SAFE
/usr/local/sen2like_312/sen2like/sen2like/sen2like/atmcor/get_s2_angles.py:55: RuntimeWarning: invalid value encountered in true_divide
  N = M / CPT
[INFO    ] 2021-02-18 15:17:07 - sentinel2            - SAT_AZ , SAT_ZENITH, SUN_AZ, SUN_ZENITH
[INFO    ] 2021-02-18 15:17:07 - sentinel2            - UNIT = DEGREES (scale: x100) :
[INFO    ] 2021-02-18 15:17:07 - sentinel2            -              /data/workingdir/47220/S2A_MSIL1C_20190102T075321_N0207_R135_T36NXF_20190102T092351.SAFE/tie_points.tif
[INFO    ] 2021-02-18 15:17:07 - sentinel2            - Generating nodata mask from band B01
[INFO    ] 2021-02-18 15:17:08 - image_file           - Written: /data/workingdir/47220/S2A_MSIL1C_20190102T075321_N0207_R135_T36NXF_20190102T092351.SAFE/nodata_pixel_mask_B01.\
tif
[INFO    ] 2021-02-18 15:17:08 - sentinel2            - Generating validity mask from cloud mask
[INFO    ] 2021-02-18 15:17:08 - sentinel2            - Written: /data/workingdir/47220/S2A_MSIL1C_20190102T075321_N0207_R135_T36NXF_20190102T092351.SAFE/valid_pixel_mask.tif

Looking inside the source code, inside the sen2like/atmcor/get_s2_angles.py file, I noticed that there is no protection against division by 0 or NaN for line 55 (matrix division)

N = M / CPT

At line 48 there is a test if value is not nan for A matrix. If for a [i][j] postion is not fulfilled, that CPT[i][j] will remain 0, thus a later division by 0. I put a debug message for CPT when the RuntimeWarning appears:

# (time python sen2like.py single-tile-mode 36NXF --conf "/data/config.ini" --start-date 2019-01-01 --end-date 2019-12-31 --wd "/data/workingdir" ) |& tee /data/logs/36NXF_debug.log
[INFO    ] 2021-02-19 08:51:06 - reader               - Sentinel2MTL Class
[INFO    ] 2021-02-19 08:51:06 - reader               - Product: /data/PRODUCTS/Sentinel2/36NXF/S2A_MSIL1C_20190102T075321_N0207_R135_T36NXF_20190102T092351.SAFE
[ERROR   ] 2021-02-19 08:51:18 - get_s2_angles        - FOUND 0 in CPT: [[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1.]
 [1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2.]
 [1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1.]
 [1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1.]
 [2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 2. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
/usr/local/sen2like_312/sen2like/sen2like/sen2like/atmcor/get_s2_angles.py:64: RuntimeWarning: invalid value encountered in true_divide
  N = M / CPT

As you can see, there is a value of 0 inside the CPT, thus the runtime warning. I don’t know if this will impact things later
Also, maybe you should have a look at

   M = np.zeros([x_size, y_size], np.float)
    #   print('input M :' + str(M[2][6]))                                                                                                                                        
    CPT = np.zeros([x_size, y_size], np.float)
    for k, u in list(a_dict.items()):
        for i in range(0, x_size, 1):
            for j in range(0, x_size, 1):
                A = u["Values"]
                if A[i][j] == A[i][j]:  # test if value is not nan                                                                                                               
                    M[i][j] = A[i][j] + M[i][j]
                    CPT[i][j] += 1

M and CPT are [x_size, y_size] matrices , but later the parsing for y axis is done after x_size. I understand that this matrices are in fact squares, but one may be misled when following the code:

for i in range(0, x_size, 1):
            for j in range(0, x_size, 1):
  1. I saw the same runtime warning for sen2like/s2l_processes/S2L_Fusion.py:
 S2L_Fusion.py:309: RuntimeWarning: invalid value encountered in true_divide

Line 309 is :

A = (array2 - array1) / (doy_2 - doy_1)

I didn’t go deeper, but I will if needed, just let me know.

  1. I saw all the time the changing of the reference image, and I can’t understand why. I saw in your user manual the recommended reference image should be B04 with 10m. Instead, following the log, this is changed to the 30m B04:
[INFO    ] 2021-02-18 15:39:31 - S2L_GeometryKLT      - Start
[INFO    ] 2021-02-18 15:39:31 - S2L_GeometryKLT      - MGRS Framing: Start...
[INFO    ] 2021-02-18 15:39:32 - S2L_GeometryKLT      - MGRS Framing: End
[INFO    ] 2021-02-18 15:39:32 - S2L_GeometryKLT      - Change reference image to:/data/References/S2B_MSIL2A_20191004T074749_N0213_R135_T36NXF_20191004T114035.SAFE/GRANULE/L2A\
_T36NXF_A013460_20191004T080733/IMG_DATA/R10m/T36NXF_20191004T074749_B04_30m.TIF
[INFO    ] 2021-02-18 15:39:32 - S2L_GeometryKLT      - End
  1. I can see an error I can’t understand it yet:
[ERROR   ] 2021-02-18 15:39:00 - hls_product          - Error: Product band B02 with res 30 not found in /data/HLS_ts_scenario_1_36XNF/36NXF/S2A_MSIL2F_20190112T075301_N9999_R1\
35_T36NXF_20190112T092302.SAFE
  1. For the output, there are a lot of Landsat 8 L2Fproducts with the corrupted rasters, full of 0 or NaNs. For example, gdalinfo with stats for one of these products:
gdalinfo -stats /data/HLS_ts_scenario_1_36XNF/36NXF/LS8_OLIL2F_20190114T075459_N9999_R170_T36NXF_20190131T145256.SAFE/GRANULE/L2F_T36NXF_A000000_20190131T145256_LS8_R170/IMG_DATA/L2F_T36NXF_20190114T075459_LS8_R170_B02_10m.TIF

Driver: GTiff/GeoTIFF
Files: /data/HLS_ts_scenario_1_36XNF/36NXF/LS8_OLIL2F_20190114T075459_N9999_R170_T36NXF_20190131T145256.SAFE/GRANULE/L2F_T36NXF_A000000_20190131T145256_LS8_R170/IMG_DATA/L2F_T36NXF_20190114T075459_LS8_R170_B02_10m.TIF
       /data/HLS_ts_scenario_1_36XNF/36NXF/LS8_OLIL2F_20190114T075459_N9999_R170_T36NXF_20190131T145256.SAFE/GRANULE/L2F_T36NXF_A000000_20190131T145256_LS8_R170/IMG_DATA/L2F_T36NXF_20190114T075459_LS8_R170_B02_10m.TIF.aux.xml
Size is 10980, 10980
Coordinate System is:
PROJCRS["WGS 84 / UTM zone 36N",
......
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=LZW
  INTERLEAVE=BAND
Corner Coordinates:
Upper Left  (  600000.000,  100020.000) ( 33d53'55.50"E,  0d54'17.28"N)
Lower Left  (  600000.000,   -9780.000) ( 33d53'55.10"E,  0d 5'18.50"S)
Upper Right (  709800.000,  100020.000) ( 34d53' 7.12"E,  0d54'15.91"N)
Lower Right (  709800.000,   -9780.000) ( 34d53' 6.29"E,  0d 5'18.36"S)
Center      (  654900.000,   45120.000) ( 34d23'31.00"E,  0d24'29.14"N)
Band 1 Block=1024x1024 Type=UInt16, ColorInterp=Gray
  Min=0.000 Max=0.000 
  Minimum=0.000, Maximum=0.000, Mean=0.000, StdDev=0.000
  Overviews: 5490x5490
  Offset: 0,   Scale:0.0001
  Metadata:
    STATISTICS_MAXIMUM=0
    STATISTICS_MEAN=0
    STATISTICS_MINIMUM=0
    STATISTICS_STDDEV=0
    STATISTICS_VALID_PERCENT=100

As you can see, the STATISTICS_ are 0.
Here is the sen2like log for this output product:

[INFO    ] 2021-02-18 15:38:52 - S2L_Fusion           - Start
[WARNING ] 2021-02-18 15:38:54 - hls_product          - Product mask not found at /data/HLS_ts_scenario_1_36XNF/36NXF/S2A_MSIL2F_20190112T075301_N9999_R135_T36NXF_20190112T0923\
02.SAFE/S2A_MSIL2F_20190112T075301_N9999_R135_T36NXF_20190112T092302.SAFE_MSK.TIF
[INFO    ] 2021-02-18 15:38:54 - hls_product          - Searching it with S2Like format
[INFO    ] 2021-02-18 15:38:54 - hls_product          - Product mask finally found
[INFO    ] 2021-02-18 15:38:56 - S2L_Fusion           - prediction
[ERROR   ] 2021-02-18 15:39:00 - hls_product          - Error: Product band B02 with res 30 not found in /data/HLS_ts_scenario_1_36XNF/36NXF/S2A_MSIL2F_20190112T075301_N9999_R1\
35_T36NXF_20190112T092302.SAFE
[ERROR   ] 2021-02-18 15:39:00 - hls_product          -
[INFO    ] 2021-02-18 15:39:00 - S2L_Fusion           - Resampling to 30m: Start...
[INFO    ] 2021-02-18 15:39:04 - S2L_Fusion           - Resampling to 30m: End
/usr/local/sen2like_312/sen2like/sen2like/sen2like/s2l_processes/S2L_Fusion.py:309: RuntimeWarning: invalid value encountered in true_divide
  A = (array2 - array1) / (doy_2 - doy_1)
[INFO    ] 2021-02-18 15:39:17 - S2L_Fusion           - fusion
[INFO    ] 2021-02-18 15:39:23 - S2L_Fusion           - End
[INFO    ] 2021-02-18 15:39:25 - image_file           - Written: /data/HLS_ts_scenario_1_36XNF/36NXF/L2F_36NXF_20190114_LS8_R170/L2F_36NXF_20190114_LS8_R170_B02_10m.TIF
[INFO    ] 2021-02-18 15:39:25 - image_file           - Written: /data/HLS_ts_scenario_1_36XNF/36NXF/L2F_36NXF_20190114_LS8_R170/L2F_36NXF_20190114_LS8_R170_B02_30m.TIF
[INFO    ] 2021-02-18 15:39:27 - image_file           - Written: /data/HLS_ts_scenario_1_36XNF/36NXF/LS8_OLIL2F_20190114T075459_N9999_R170_T36NXF_20190131T145256.SAFE/GRANULE/L\
2F_T36NXF_A000000_20190131T145256_LS8_R170/IMG_DATA/L2F_T36NXF_20190114T075459_LS8_R170_B02_10m.TIF

I can see in the log there are some links to the problems I described before: 2 and 4

I know it’s a lot of info here, but maybe you can have some hints, thank you so much for all your help you can provide !

Dear agrosu1978,

Thank you for your email.

Our technical team will look into the details next week and come back to you through the forum.

Best regards,
Sen2Like team

Thanks again for your information and sorry for our late reply. The sen2like warning messages do not explain your raised issue . Besides, the information you are sharing with us is unfortunately not sufficient to investigate more and fully support you.
For this reason, please could you share the sen2like processing log (per product), and the configuration file you are using.
Many thanks
Sincerely yours,
Sen2Like Team.

Hello sen2like
I made a lot of tests, and the problem seemed to be from point 2 of my previous post. Thus, I modified line 309 from S2_Fusion.py file from

A = (array2 - array1) / (doy_2 - doy_1)

to

A = (array2 - array1) / (doy_2 - doy_1) if (doy_2 - doy_1) != 0 else 0

The L2F output products have now meaningful rasters, example:

    STATISTICS_MAXIMUM=6077
    STATISTICS_MEAN=240.39048293635
    STATISTICS_MINIMUM=0
    STATISTICS_STDDEV=144.89214481527
    STATISTICS_VALID_PERCENT=100

I re-made the tests, with the S2_Fusion.py original source code (git version 3.1.2) and with the modified S2_Fusion.py. I compared the logs, the difference is that in the log from the original source code, this RuntimeWarning appears a lot:

/usr/local/sen2like_312/sen2like/sen2like/sen2like/s2l_processes/S2L_Fusion.py:318: RuntimeWarning: invalid value encountered in true_divide

Setting up the protection against division by 0, eliminates this warning and the rasters from the L2F products are ok. If you want, I can send you both log files somehow (here I can’t see a way to attach files).
Following are some information for the launching process (for the latest tests comparison, I used a different end-date as I first used, to process only the first two months of the 2019 year, instead of the whole year):

#:python sen2like.py single-tile-mode 36NXF --conf "/data/config.ini" --start-date 2019-01-01 --end-date 2019-02-27 --wd "/data/workingdir"

The used config.ini file:

[Processing]
doStitching = True
doGeometryKLT = True
doToa = True
doAtmcor = True
doNbar = True
doSbaf = True
doFusion = True
doPackager = True
doPackagerL2H = True
doPackagerL2F = True

[Directories]
#output dir
archive_dir = /data/HLS_ts_scenario_1

#additional data
cams_dir = /data/CAMS/monthly
cams_hourly_dir = /data/CAMS/hourly
cams_climatology_dir = /data/CAMS/climatology/v1

[InputProductArchive]
coverage = 0.5
# Local
base_url = /data/PRODUCTS
url_parameters_pattern_Sentinel2 = {base_url}/{mission}/{tile}
url_parameters_pattern_Landsat8 = {base_url}/{mission}/{path}/{row}

# Creodias
;base_url = https://finder.creodias.eu/resto/api/collections
;cloud_cover = 11
;location_Landsat8 = path={path}&row={row}
;location_Sentinel2 = processingLevel={s2_processing_level}&productIdentifier=%25{tile}%25
;url_parameters_pattern = {base_url}/{mission}/search.json?maxRecords=1000&_pretty=true&cloudCover=%5B0%2C{cloud_cover}%5D&startDate={start_date}&completionDate={end_date}&sortP
aram=startDate&sortOrder=ascending&status=all&{location}&dataset=ESA-DATASET
;thumbnail_property = properties/productIdentifier
;cloud_cover_property = properties/cloudCover
;gml_geometry_property = properties/gmlgeometry


[Geometry]
reference_band = B04
doMatchingCorrection = True
doAssessGeometry = B04
references_map = /data/References/references_map.json

[Atmcor]
use_sen2cor = False
sen2cor_path = ../sen2cor/process.py

[fusion]
# predict_method: predict or composite (most recent valid pixels)
predict_method = predict
predict_nb_products = 2

[Stitching]
reframe_margin = 50

[OutputFormat]
gain = 10000
offset = 0
COG = True

[COGoptions]
interleave = PIXEL
internal_tiling = 1024
internal_overviews = 128
downsampling_levels_10 = 2
downsampling_levels_15 = 2
downsampling_levels_20 = 2 3 6
downsampling_levels_30 = 2 4 6 12
downsampling_levels_60 = 6 12 18 36

resampling_algo_MASK  = MODE
resampling_algo = AVERAGE
compression = LZW
predictor = 1

[Multiprocessing]
number_of_process = 5

[Packager]
quicklook_jpeg_quality = 75

[RunTime]
dx = 0
dy = 0
freeze_dx_dy = True

The ./References/references_map.json file:

{ "31TCJ": "/data/References/S2A_MSIL2A_20201017T105041_N0214_R051_T31TCJ_20201017T134105.SAFE/GRANULE/L2A_T31TCJ_A027790_20201017T105446/IMG_DATA/R10m/T31TCJ_20201017T105041_B04_10m.jp2",
  "31UFS": "/data/References/S2A_MSIL2A_20201017T105041_N0214_R051_T31UFS_20201017T134105.SAFE/GRANULE/L2A_T31UFS_A027790_20201017T105446/IMG_DATA/R10m/T31UFS_20201017T105041_B04_10m.jp2",
  "31TCG": "/data/References/S2B_MSIL2A_20190730T105039_N0213_R051_T31TCG_20190730T140936.SAFE/GRANULE/L2A_T31TCG_A012518_20190730T105502/IMG_DATA/R10m/T31TCG_20190730T105039_B04_10m.jp2",
  "36NXF": "/data/References/S2B_MSIL2A_20191004T074749_N0213_R135_T36NXF_20191004T114035.SAFE/GRANULE/L2A_T36NXF_A013460_20191004T080733/IMG_DATA/R10m/T36NXF_20191004T074749_B04_10m.jp2"
}

The input products:

  • Products from Landsat:
#:~/sen2like/data/PRODUCTS/Landsat8$ tree . -L 3
.
β”œβ”€β”€ 170
β”‚   β”œβ”€β”€ 58
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190114_20190131_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190130_20190206_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190215_20190222_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190303_20190309_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190319_20190325_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190404_20190422_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190420_20190507_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190506_20190521_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190522_20190604_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190607_20190619_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190623_20190704_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190709_20190719_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190826_20190903_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20190911_20190917_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20191114_20191202_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20191130_20191216_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170058_20191216_20191226_01_T1
β”‚   β”‚   └── LC08_L1TP_170058_20191216_20201023_01_T1
β”‚   β”œβ”€β”€ 59
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190114_20190131_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190130_20190206_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190215_20190222_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190303_20190309_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190319_20190325_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190404_20190421_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190420_20190507_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190506_20190521_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190522_20190604_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190607_20190619_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190623_20190704_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190709_20190719_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190826_20190903_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20190911_20190917_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20191013_20191018_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20191029_20191114_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20191114_20191202_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20191130_20191216_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170059_20191216_20191226_01_T1
β”‚   β”‚   └── LC08_L1TP_170059_20191216_20201023_01_T1
β”‚   β”œβ”€β”€ 60
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190114_20190131_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190130_20190206_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190215_20190222_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190303_20190309_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190319_20190325_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190404_20190421_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190420_20190507_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190506_20190521_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190522_20190604_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190623_20190704_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190709_20190719_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190725_20190801_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190826_20190903_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190911_20190917_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20190927_20191017_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20191013_20191018_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20191114_20191202_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20191130_20191216_01_T1
β”‚   β”‚   β”œβ”€β”€ LC08_L1TP_170060_20191216_20191226_01_T1
β”‚   β”‚   └── LC08_L1TP_170060_20191216_20201023_01_T1
β”‚   └── 61
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190114_20190131_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190130_20190206_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190215_20190222_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190303_20190309_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190319_20190325_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190404_20190422_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190420_20190507_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190506_20190521_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190522_20190604_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190623_20190704_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190709_20190719_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190725_20190801_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190826_20190903_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20190911_20190917_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20191013_20191018_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20191130_20191216_01_T1
β”‚       β”œβ”€β”€ LC08_L1TP_170061_20191216_20191226_01_T1
β”‚       └── LC08_L1TP_170061_20191216_20201023_01_T1

Products from S2:

(base) ubuntu@ip-172-31-11-29:~/sen2like/data/PRODUCTS/Sentinel2$ tree . -L 2
. 
└── 36NXF
    β”œβ”€β”€ S2A_MSIL1C_20190102T075321_N0207_R135_T36NXF_20190102T092351.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190112T075301_N0207_R135_T36NXF_20190112T092302.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190122T075221_N0207_R135_T36NXF_20190122T091707.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190201T075141_N0207_R135_T36NXF_20190201T100613.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190221T074931_N0207_R135_T36NXF_20190221T091816.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190303T074821_N0207_R135_T36NXF_20190303T100446.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190313T074711_N0207_R135_T36NXF_20190313T131618.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190323T074611_N0207_R135_T36NXF_20190323T105832.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190402T074611_N0207_R135_T36NXF_20190402T100441.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190412T074611_N0207_R135_T36NXF_20190412T095139.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190502T074621_N0207_R135_T36NXF_20190502T095023.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190512T074621_N0207_R135_T36NXF_20190512T095136.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190522T074621_N0207_R135_T36NXF_20190522T113500.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190601T074611_N0207_R135_T36NXF_20190601T100720.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190621T074621_N0207_R135_T36NXF_20190621T100700.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190701T074621_N0207_R135_T36NXF_20190701T100623.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190711T074621_N0208_R135_T36NXF_20190711T100442.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190721T074621_N0208_R135_T36NXF_20190721T105932.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190820T074611_N0208_R135_T36NXF_20190820T100557.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190830T074611_N0208_R135_T36NXF_20190830T100724.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190909T074611_N0208_R135_T36NXF_20190909T105924.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190919T074611_N0208_R135_T36NXF_20190919T100524.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20190929T074711_N0208_R135_T36NXF_20190929T100745.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191009T074821_N0208_R135_T36NXF_20191009T110112.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191019T074931_N0208_R135_T36NXF_20191019T095207.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191029T075031_N0208_R135_T36NXF_20191029T092618.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191118T075211_N0208_R135_T36NXF_20191118T094946.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191128T075251_N0208_R135_T36NXF_20191128T092555.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191208T075311_N0208_R135_T36NXF_20191208T091451.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191218T075331_N0208_R135_T36NXF_20191218T091909.SAFE
    β”œβ”€β”€ S2A_MSIL1C_20191228T075331_N0208_R135_T36NXF_20191228T092808.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190107T075319_N0207_R135_T36NXF_20190107T095014.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190117T075249_N0207_R135_T36NXF_20190117T095013.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190127T075209_N0207_R135_T36NXF_20190127T100617.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190206T075109_N0207_R135_T36NXF_20190206T095604.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190226T074859_N0207_R135_T36NXF_20190226T113406.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190308T074749_N0207_R135_T36NXF_20190308T113336.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190318T074639_N0207_R135_T36NXF_20190318T113212.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190328T074839_N0207_R135_T36NXF_20190328T113153.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190507T074619_N0207_R135_T36NXF_20190507T100634.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190517T074619_N0207_R135_T36NXF_20190517T100609.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190527T074619_N0207_R135_T36NXF_20190527T100808.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190606T074619_N0207_R135_T36NXF_20190606T100750.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190616T074619_N0207_R135_T36NXF_20190616T112603.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190626T074619_N0207_R135_T36NXF_20190626T100731.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190706T074619_N0207_R135_T36NXF_20190706T100612.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190716T074619_N0208_R135_T36NXF_20190716T104338.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190726T074619_N0208_R135_T36NXF_20190726T100712.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190805T074619_N0208_R135_T36NXF_20190805T100613.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190815T074619_N0208_R135_T36NXF_20190815T114606.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190825T074619_N0208_R135_T36NXF_20190825T100539.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190914T074609_N0208_R135_T36NXF_20190914T104445.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20190924T074639_N0208_R135_T36NXF_20190924T104034.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20191004T074749_N0208_R135_T36NXF_20191004T104853.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20191103T075009_N0208_R135_T36NXF_20191103T095158.SAFE
    β”œβ”€β”€ S2B_MSIL1C_20191113T075059_N0208_R135_T36NXF_20191113T100704.SAFE
    └── S2B_MSIL1C_20191213T075229_N0208_R135_T36NXF_20191213T094808.SAFE

Once again, I will keep the logs from the two different runs (original vs modified code) if you want them, just tell me a way to send them. The files are small, but I can’t see here in this forum how can I attach them.

-rw-r--r-- 1 alex alex 503K mar  3 17:24 36NXF_short_test_modified_source_code.log
-rw-r--r-- 1 alex alex 503K mar  3 17:24 36NXF_short_test_original_source_code.log

Kind regards