├── .gitignore ├── LICENSE ├── MANIFEST.in ├── README.md ├── notebooks ├── example_prediction.ipynb ├── example_segementation.ipynb ├── example_tiff_utils.ipynb └── example_translation.ipynb ├── setup.py └── src └── multiearth_challenge ├── __init__.py ├── data ├── __init__.py └── sample_dataset │ ├── __init__.py │ ├── deforestation │ ├── Deforestation_-54.68_-4.17_2021_05_01.tiff │ ├── Deforestation_-54.78_-3.51_2021_05_01.tiff │ ├── Deforestation_-54.92_-3.61_2021_05_01.tiff │ └── Deforestation_-55.06_-4.09_2021_05_01.tiff │ ├── deforestation_sample.nc │ ├── fire │ ├── Fire_BurnDate_-54.58_-4.39_2008_09_01.tiff │ ├── Fire_BurnDate_-55.08_-4.39_2008_08_01.tiff │ ├── Fire_BurnDate_-55.18_-4.37_2005_08_01.tiff │ ├── Fire_ConfidenceLevel_-54.58_-4.39_2008_09_01.tiff │ ├── Fire_ConfidenceLevel_-55.08_-4.39_2008_08_01.tiff │ ├── Fire_ConfidenceLevel_-55.18_-4.37_2005_08_01.tiff │ ├── Fire_LandCover_-54.58_-4.39_2008_09_01.tiff │ ├── Fire_LandCover_-55.08_-4.39_2008_08_01.tiff │ ├── Fire_LandCover_-55.18_-4.37_2005_08_01.tiff │ ├── Fire_ObservedFlag_-54.58_-4.39_2008_09_01.tiff │ ├── Fire_ObservedFlag_-55.08_-4.39_2008_08_01.tiff │ └── Fire_ObservedFlag_-55.18_-4.37_2005_08_01.tiff │ ├── fire_sample.nc │ ├── landsat5 │ ├── Landsat5_QA_PIXEL_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_QA_PIXEL_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_QA_PIXEL_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_QA_PIXEL_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_SR_B1_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_SR_B1_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_SR_B1_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_SR_B1_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_SR_B2_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_SR_B2_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_SR_B2_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_SR_B2_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_SR_B3_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_SR_B3_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_SR_B3_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_SR_B3_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_SR_B4_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_SR_B4_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_SR_B4_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_SR_B4_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_SR_B5_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_SR_B5_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_SR_B5_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_SR_B5_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_SR_B7_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_SR_B7_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_SR_B7_-55.08_-4.39_2008_08_10.tiff │ ├── Landsat5_SR_B7_-55.18_-4.37_2005_08_02.tiff │ ├── Landsat5_ST_B6_-54.58_-4.39_2008_09_11.tiff │ ├── Landsat5_ST_B6_-55.08_-4.39_2008_07_25.tiff │ ├── Landsat5_ST_B6_-55.08_-4.39_2008_08_10.tiff │ └── Landsat5_ST_B6_-55.18_-4.37_2005_08_02.tiff │ ├── landsat5_sample.nc │ ├── landsat8 │ ├── Landsat8_QA_PIXEL_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_QA_PIXEL_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_QA_PIXEL_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_QA_PIXEL_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_QA_PIXEL_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B1_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B1_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B1_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B1_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B1_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B2_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B2_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B2_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B2_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B2_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B3_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B3_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B3_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B3_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B3_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B4_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B4_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B4_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B4_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B4_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B5_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B5_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B5_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B5_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B5_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B6_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B6_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B6_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B6_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B6_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_SR_B7_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_SR_B7_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_SR_B7_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_SR_B7_-55.20_-4.39_2020_07_10.tiff │ ├── Landsat8_SR_B7_-55.20_-4.39_2020_07_26.tiff │ ├── Landsat8_ST_B10_-54.74_-4.09_2020_06_08.tiff │ ├── Landsat8_ST_B10_-54.78_-3.51_2021_04_24.tiff │ ├── Landsat8_ST_B10_-55.14_-3.89_2016_07_15.tiff │ ├── Landsat8_ST_B10_-55.20_-4.39_2020_07_10.tiff │ └── Landsat8_ST_B10_-55.20_-4.39_2020_07_26.tiff │ ├── landsat8_sample.nc │ ├── sent1 │ ├── Sentinel1_VH_-55.20_-4.39_2019_05_27.tiff │ ├── Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff │ ├── Sentinel1_VH_-55.20_-4.39_2019_06_20.tiff │ ├── Sentinel1_VH_-55.20_-4.39_2019_07_02.tiff │ ├── Sentinel1_VV_-55.20_-4.39_2019_05_27.tiff │ ├── Sentinel1_VV_-55.20_-4.39_2019_06_08.tiff │ ├── Sentinel1_VV_-55.20_-4.39_2019_06_20.tiff │ └── Sentinel1_VV_-55.20_-4.39_2019_07_02.tiff │ ├── sent1_sample.nc │ ├── sent2 │ ├── Sentinel2_B1_-54.68_-4.17_2021_05_06.tiff │ ├── Sentinel2_B1_-54.74_-4.09_2019_03_18.tiff │ ├── Sentinel2_B1_-54.92_-3.61_2021_05_06.tiff │ ├── Sentinel2_B1_-54.92_-3.61_2021_05_11.tiff │ ├── Sentinel2_B1_-54.92_-4.25_2020_07_05.tiff │ ├── Sentinel2_B1_-54.94_-4.27_2020_07_05.tiff │ ├── Sentinel2_B1_-55.06_-4.09_2021_05_06.tiff │ ├── Sentinel2_B1_-55.20_-4.39_2019_06_06.tiff │ ├── Sentinel2_B1_-55.20_-4.39_2019_06_11.tiff │ ├── Sentinel2_B1_-55.20_-4.39_2019_07_01.tiff │ ├── Sentinel2_B1_-55.20_-4.39_2019_07_11.tiff │ ├── Sentinel2_B1_-55.20_-4.39_2019_07_26.tiff │ ├── Sentinel2_B1_-55.20_-4.39_2020_07_20.tiff │ ├── Sentinel2_B2_-54.68_-4.17_2021_05_06.tiff │ ├── Sentinel2_B2_-54.74_-4.09_2019_03_18.tiff │ ├── Sentinel2_B2_-54.92_-3.61_2021_05_06.tiff │ ├── Sentinel2_B2_-54.92_-3.61_2021_05_11.tiff │ ├── Sentinel2_B2_-54.92_-4.25_2020_07_05.tiff │ ├── Sentinel2_B2_-54.94_-4.27_2020_07_05.tiff │ ├── Sentinel2_B2_-55.06_-4.09_2021_05_06.tiff │ ├── Sentinel2_B2_-55.20_-4.39_2019_06_06.tiff │ ├── Sentinel2_B2_-55.20_-4.39_2019_06_11.tiff │ ├── Sentinel2_B2_-55.20_-4.39_2019_07_01.tiff │ ├── Sentinel2_B2_-55.20_-4.39_2019_07_11.tiff │ ├── Sentinel2_B2_-55.20_-4.39_2019_07_26.tiff │ ├── Sentinel2_B2_-55.20_-4.39_2020_07_20.tiff │ ├── Sentinel2_B3_-54.68_-4.17_2021_05_06.tiff │ ├── Sentinel2_B3_-54.74_-4.09_2019_03_18.tiff │ ├── Sentinel2_B3_-54.92_-3.61_2021_05_06.tiff │ ├── Sentinel2_B3_-54.92_-3.61_2021_05_11.tiff │ ├── Sentinel2_B3_-54.92_-4.25_2020_07_05.tiff │ ├── Sentinel2_B3_-54.94_-4.27_2020_07_05.tiff │ ├── Sentinel2_B3_-55.06_-4.09_2021_05_06.tiff │ ├── Sentinel2_B3_-55.20_-4.39_2019_06_06.tiff │ ├── Sentinel2_B3_-55.20_-4.39_2019_06_11.tiff │ ├── Sentinel2_B3_-55.20_-4.39_2019_07_01.tiff │ ├── Sentinel2_B3_-55.20_-4.39_2019_07_11.tiff │ ├── Sentinel2_B3_-55.20_-4.39_2019_07_26.tiff │ ├── Sentinel2_B3_-55.20_-4.39_2020_07_20.tiff │ ├── Sentinel2_B4_-54.68_-4.17_2021_05_06.tiff │ ├── Sentinel2_B4_-54.74_-4.09_2019_03_18.tiff │ ├── Sentinel2_B4_-54.92_-3.61_2021_05_06.tiff │ ├── Sentinel2_B4_-54.92_-3.61_2021_05_11.tiff │ ├── Sentinel2_B4_-54.92_-4.25_2020_07_05.tiff │ ├── Sentinel2_B4_-54.94_-4.27_2020_07_05.tiff │ ├── Sentinel2_B4_-55.06_-4.09_2021_05_06.tiff │ ├── Sentinel2_B4_-55.20_-4.39_2019_06_06.tiff │ ├── Sentinel2_B4_-55.20_-4.39_2019_06_11.tiff │ ├── Sentinel2_B4_-55.20_-4.39_2019_07_01.tiff │ ├── Sentinel2_B4_-55.20_-4.39_2019_07_11.tiff │ ├── Sentinel2_B4_-55.20_-4.39_2019_07_26.tiff │ ├── Sentinel2_B4_-55.20_-4.39_2020_07_20.tiff │ ├── Sentinel2_QA60_-54.68_-4.17_2021_05_06.tiff │ ├── Sentinel2_QA60_-54.74_-4.09_2019_03_18.tiff │ ├── Sentinel2_QA60_-54.92_-3.61_2021_05_06.tiff │ ├── Sentinel2_QA60_-54.92_-3.61_2021_05_11.tiff │ ├── Sentinel2_QA60_-54.92_-4.25_2020_07_05.tiff │ ├── Sentinel2_QA60_-54.94_-4.27_2020_07_05.tiff │ ├── Sentinel2_QA60_-55.06_-4.09_2021_05_06.tiff │ ├── Sentinel2_QA60_-55.20_-4.39_2019_06_06.tiff │ ├── Sentinel2_QA60_-55.20_-4.39_2019_06_11.tiff │ ├── Sentinel2_QA60_-55.20_-4.39_2019_07_01.tiff │ ├── Sentinel2_QA60_-55.20_-4.39_2019_07_11.tiff │ ├── Sentinel2_QA60_-55.20_-4.39_2019_07_26.tiff │ └── Sentinel2_QA60_-55.20_-4.39_2020_07_20.tiff │ ├── sent2_sample.nc │ └── test.nc ├── datasets ├── __init__.py ├── base_datasets.py ├── data_filters.py ├── prediction_dataset.py ├── relative_data_filters.py ├── segmentation_dataset.py └── translation_dataset.py └── tiff_file_tools.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 USAF - MIT Artificial Intelligence Accelerator 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include src/multiearth_challenge/data/sample_dataset/*.nc 2 | recursive-include src/multiearth_challenge/data/sample_dataset/ *.tiff 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # multiearth-challenge 2 | The Multimodal Learning for Earth and Environment Workshop (MultiEarth 2023) is the second annual CVPR workshop aimed at leveraging the significant amount of remote sensing data that is continuously being collected to aid in the monitoring and analysis of the health of Earth ecosystems. Detailed information, including public challenge data download links, can be found on the workshop’s webpage at https://sites.google.com/view/rainforest-challenge. The goal of the workshop is to bring together the Earth and environmental science communities as well as the multimodal representation learning communities to examine new ways to leverage technological advances in support of environmental monitoring. In addition, through a series of public challenges, the MultiEarth Workshop hopes to provide a common benchmark for remote sensing multimodal information processing. There are two main categories of public challenges as part of the MultiEarth Workshop 3 | 4 | ### 1. Rapid Detection of Environmental Change 5 | There are three sub-challenges associated with this effort. 6 | **1A. Detection of deforestation** 7 | **1B. Detection of fire / burned regions** 8 | **1C. SAR to visible image translation; enables easily interpretable all-weather monitoring** 9 | 10 | ### 2. Long-term Prediction of Environmental Trends 11 | There are two sub-challenges associated with this effort. 12 | **1A. Prediction of deforestation** 13 | **1B. Prediction of collected imagery. An image generation task given historical data.** 14 | 15 | ## Challenge Data 16 | Multi-modal data collected from Landsat-5, Landsat-8, Sentinel-1, and Sentinel-2 along with deforestation and fire datasets are provided for use as part of these challenges at https://sites.google.com/view/rainforest-challenge. The data is provided in the form of NetCDF files as well as zipped tiff images. A small sample of the data formats is provided in this repository at [here](https://github.com/MIT-AI-Accelerator/multiearth-challenge/tree/main/src/multiearth_challenge/data/sample_dataset). 17 | 18 | This repository holds tools for working with the large quantity of remote sensing data provided for these challenges. 19 | 20 | ## Installation 21 | Clone the repository and install with pip by running 22 | 23 | ```shell 24 | $ git clone https://github.com/MIT-AI-Accelerator/multiearth-challenge && cd multiearth-challenge 25 | $ pip install . 26 | ``` 27 | 28 | This will automatically install the jupyter, matplotlib, netcdf4, numba, numpy, and xarray dependencies along with the package. 29 | 30 | ## Provided Dataset Classes 31 | There are several dataset classes that are provided for loading MultiEarth data held in NetCDF formatted files and iterating through paired samples that are applicable to different types of challenge tasks. These paired samples will include imagery along with associated metadata such as collection date and sensor band. 32 | 33 | ### ImageSegmentationDataset 34 | [ImageSegmentationDataset](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/main/src/multiearth_challenge/datasets/segmentation_dataset.py) is a dataset designed for an image segmentation task, such as might be used in the detection of deforestation or burned region sub-challenges. It stores MultiEarth data and can be used to retrieve an image and its corresponding segmented image. Example usage and additional details can be found in the example_segmentation.ipynb notebook. 35 | 36 | ### SARToVisibleDataset 37 | [SARToVisibleDataset](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/main/src/multiearth_challenge/datasets/translation_dataset.py) is a dataset designed for the sub-challenge of generating a distribution of visible images from a single SAR image. It stores MultiEarth data and can be used to retrieve a single source SAR image and a set of visible images from the same location. Note: unlike the previous datasets, there is only one source image and possibly multiple target images. Additionally, the SAR and EO images are not co-collected. Example usage and additional details can be found in the example_translation.ipynb notebook. 38 | 39 | ### Prediction Dataset 40 | [ImagePredictionDataset](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/main/src/multiearth_challenge/datasets/prediction_dataset.py) is a dataset designed for the "Long-term Prediction of Environmental Trends" category of challenges. It stores MultiEarth data and can be used to retrieve a set of past images and a target image from a future date, all for the same location in the Amazon. Example usage and additional details can be found in the example_prediction.ipynb notebook. 41 | 42 | ## Tiff File Utilities 43 | In addition to providing the data in the form of NetCDF files, tiff files in the same format as the data provided as part of the MultiEarth 2022 challenge are also being made available. This is the same data as that in the NetCDF files, but provided in an alternate format. Simple functions for parsing these files are provided in https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/main/src/multiearth_challenge/tiff_file_tools.py. Example usage and additional details can be found in the example_tiff_utils.ipynb notebook. 44 | 45 | 46 | ## Acknowledgement 47 | Research was sponsored by the United States Air Force Research Laboratory and the United States Air Force Artificial Intelligence Accelerator and was accomplished under Cooperative Agreement Number FA8750-19-2-1000. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the United States Air Force or the U.S. Government. The U.S. Government is authorized to reproduce and distribute reprints for Government purposes notwithstanding any copyright notation herein. 48 | 49 | 50 | ## Copyright 51 | MIT License 52 | 53 | Copyright (c) 2023 USAF - MIT Artificial Intelligence Accelerator 54 | 55 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 56 | 57 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 58 | 59 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 60 | -------------------------------------------------------------------------------- /notebooks/example_prediction.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# ImagePredictionDataset Class Usage\n", 8 | "\n", 9 | "This notebook contains examples for how the [ImagePredictionDataset](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/c2318665ab94451eea4bd1b9e31a71655c6be001/src/multiearth_challenge/datasets/prediction_dataset.py#L11) class can be used to sample data from the NetCDF files provided as part of the MultiEarth challenge." 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": null, 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "import pkg_resources\n", 19 | "\n", 20 | "from matplotlib import pyplot as plt\n", 21 | "import numpy as np\n", 22 | "\n", 23 | "from multiearth_challenge.datasets import prediction_dataset as pd\n", 24 | "\n", 25 | "%matplotlib inline\n", 26 | "%load_ext autoreload\n", 27 | "%autoreload 2" 28 | ] 29 | }, 30 | { 31 | "cell_type": "markdown", 32 | "metadata": {}, 33 | "source": [ 34 | "### Specifying Dataset Data\n", 35 | "In this example, Sentinel-2 visible imagery will serve as the source imagery and Landsat-8 imagery will serve as the target." 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": null, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "# Set data paths to sample data included as part of the MultiEarth repository\n", 45 | "source_files = [pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent2_sample.nc\")]\n", 46 | "target_files = [pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/landsat8_sample.nc\")]" 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": {}, 52 | "source": [ 53 | "Specify the bands to include for the source and target data. This is set with a dictionary whose keys are the sensor and the values are a list of bands.
\n", 54 | "Acceptable sensor and band values are:
\n", 55 | "\"Landsat-5\": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'ST_B6', 'SR_B7', 'QA_PIXEL']
\n", 56 | "\"Landsat-8\": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7', 'ST_B10', 'QA_PIXEL']
\n", 57 | "\"Sentinel-1\": ['VV', 'VH']
\n", 58 | "\"Sentinel-2\": ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B9', 'B11', 'B12', 'QA60']
\n", 59 | "\"Fire\": ['BurnDate', 'ConfidenceLevel', 'LandCover', 'ObservedFlag']
\n", 60 | "\"Deforestation\": None, There is only a single unnamed band associated with the deforestation data so there are no bands to select
" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": null, 66 | "metadata": {}, 67 | "outputs": [], 68 | "source": [ 69 | "source_bands = {\n", 70 | " \"Sentinel-2\": [\"B4\", \"B3\", \"B2\"], # RGB visible bands\n", 71 | "}\n", 72 | "target_bands = {\n", 73 | " \"Landsat-8\": [\"SR_B4\", \"SR_B3\", \"SR_B2\"], # RGB visible bands\n", 74 | "}" 75 | ] 76 | }, 77 | { 78 | "cell_type": "markdown", 79 | "metadata": {}, 80 | "source": [ 81 | "### Creating the Dataset\n", 82 | "Set additional parameters used by the ImagePredictionDataset" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": null, 88 | "metadata": {}, 89 | "outputs": [], 90 | "source": [ 91 | "# If True, returned images will have multiple channels in increasing order of frequency (e.g., red, green, blue for visible), co-pol before cross-pol, and with bands not originating from collected imagery coming last and in alphabetical order. \n", 92 | "# The metadata returned with the imagery will also specify the channel order. If False, each band is treated as a separate sample.\n", 93 | "merge_source_bands = False # bool\n", 94 | "merge_target_bands = False # bool\n", 95 | "\n", 96 | "# The maximum allowable cloud coverage allowed in the source / target imagery as a fraction [0, 1]. Setting the maximum above 0 may be useful to incorporate additional samples even if the source image is slightly obscured.\n", 97 | "# Note, there may be some innacuracies in the identified cloud coverage provided by the sensor's QA bands. This is especially true for Sentinel-2 data.\n", 98 | "max_source_cloud_coverage = 0.0 # float\n", 99 | "max_target_cloud_coverage = 0.0 # float\n", 100 | "\n", 101 | "# The minimum and maximum inclusive relative time window in days around the target image from which source imagery is pulled. \n", 102 | "# If the minimum is None, there is no filter on the minimum relative date. Similarly, no maximum can be specified with a value of None.\n", 103 | "# For example, a value of (None, -365) would result in only source imagery collected at least 365 days before the target image date being returned. \n", 104 | "source_date_window = (None, -365) # Tuple[Optional[float], Optional[float]]\n", 105 | "\n", 106 | "# If True, if no source or target image remain after data filtering, raise a ValueError, otherwise this dataset will have length 0. \n", 107 | "error_on_empty = True # bool" 108 | ] 109 | }, 110 | { 111 | "cell_type": "markdown", 112 | "metadata": {}, 113 | "source": [ 114 | "Create the dataset. The sample data is small, but depending on the number of images contained in the NetCDF files, calculating the cloud coverage statistics may take several minutes." 115 | ] 116 | }, 117 | { 118 | "cell_type": "code", 119 | "execution_count": null, 120 | "metadata": {}, 121 | "outputs": [], 122 | "source": [ 123 | "dataset = pd.ImagePredictionDataset(\n", 124 | " source_files,\n", 125 | " target_files,\n", 126 | " source_bands,\n", 127 | " target_bands,\n", 128 | " source_date_window,\n", 129 | " max_source_cloud_coverage,\n", 130 | " max_target_cloud_coverage,\n", 131 | " merge_source_bands, \n", 132 | " merge_target_bands,\n", 133 | " error_on_empty,\n", 134 | ") " 135 | ] 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "metadata": {}, 140 | "source": [ 141 | "### Data Returned by the Dataset\n", 142 | "The dataset serves as a sequence of samples. Each call to \\_\\_getitem__ will return a two element tuple where the second element holds a dictionary with a single target image and associated metadata. The first element holds a list of dictionaries where each one holds a source image along with associated metadata at the same location that satisfies the source_date_window.\n", 143 | "\n", 144 | "Note, the returned images for this example are cloud free and collected >365 days before the target image. Cloud coverage is determined by information in the sensor's QA band, which may have inaccuracies." 145 | ] 146 | }, 147 | { 148 | "cell_type": "code", 149 | "execution_count": null, 150 | "metadata": {}, 151 | "outputs": [], 152 | "source": [ 153 | "print(f\"Number of dataset samples: {len(dataset)}\")\n", 154 | "\n", 155 | "# Get sample index 2\n", 156 | "source_data, target_data = dataset[3]\n", 157 | "print(f\"Number of returned source samples with example target image: {len(source_data)}\")\n", 158 | "print(f\"Source data key values returned: {source_data[0].keys()}\")\n", 159 | "print(f\"Target data key values returned: {target_data.keys()}\")" 160 | ] 161 | }, 162 | { 163 | "cell_type": "markdown", 164 | "metadata": {}, 165 | "source": [ 166 | "### Single channel vs. Multi-channel Imagery\n", 167 | "The returned source images in the dataset above are single band and there are separate paired samples for each band. Below is an example where the bands have been merged into a 3-channel RGB image." 168 | ] 169 | }, 170 | { 171 | "cell_type": "code", 172 | "execution_count": null, 173 | "metadata": {}, 174 | "outputs": [], 175 | "source": [ 176 | "# Make a second dataset with merged bands\n", 177 | "merge_source_bands = True\n", 178 | "merge_target_bands = True\n", 179 | "dataset_merged_bands = pd.ImagePredictionDataset(\n", 180 | " source_files,\n", 181 | " target_files,\n", 182 | " source_bands,\n", 183 | " target_bands,\n", 184 | " source_date_window,\n", 185 | " max_source_cloud_coverage,\n", 186 | " max_target_cloud_coverage,\n", 187 | " merge_source_bands, \n", 188 | " merge_target_bands,\n", 189 | " error_on_empty,\n", 190 | ") \n", 191 | "# 1/3 target samples results in 1/3 of the number of samples compared to separate bands.\n", 192 | "print(f\"Number of merged band dataset samples: {len(dataset_merged_bands)}\") \n", 193 | "# Get sample index 3\n", 194 | "source_data_merged_bands, target_data_merged_bands = dataset_merged_bands[3]\n", 195 | "print(f\"Number of returned source samples with merged bands: {len(source_data_merged_bands)}\")\n", 196 | "print(f\"Shape of example source image without merging bands: {source_data[0]['image'].shape}\")\n", 197 | "print(f\"List of bands associated with the example single band source image: {source_data[0]['bands']}\")\n", 198 | "print(f\"Shape of example source image with merged bands: {source_data_merged_bands[0]['image'].shape}\")\n", 199 | "print(f\"List of bands associated with the example multi-band source image: {source_data_merged_bands[0]['bands']}\") # This list corresponds to the channels in the image with the first band corresponding to channel index 0, the second channel index 1, etc." 200 | ] 201 | }, 202 | { 203 | "cell_type": "markdown", 204 | "metadata": {}, 205 | "source": [ 206 | "### Image Characteristics\n", 207 | "The collected images may require normalization for visualization. Here we perform a simple normalization without color balancing.
\n", 208 | "Note, the difference in ground sample distance (GSD) between Sentinel imagery and Landsat imagery may require resizing or some other way to handle the difference in scale.
\n", 209 | "Also, it should be noted that the filtering of cloudy images uses the QA band which may have inaccuracies resulting in some images with high pixel value cloud coverage obscuring land. Below is one such example. Additional filtering or masking of cloud coverage can be applied if needed." 210 | ] 211 | }, 212 | { 213 | "cell_type": "code", 214 | "execution_count": null, 215 | "metadata": {}, 216 | "outputs": [], 217 | "source": [ 218 | "def normalize(img):\n", 219 | " img = img.astype(np.float64)\n", 220 | " img -= np.mean(img)\n", 221 | " img_std = np.std(img)\n", 222 | " img += img_std\n", 223 | " img /= img_std * 3.0\n", 224 | " img = np.clip(img, 0, 1)\n", 225 | " return img" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": null, 231 | "metadata": {}, 232 | "outputs": [], 233 | "source": [ 234 | "source_img_index = 0\n", 235 | "fig1, axs1 = plt.subplots(1, 2)\n", 236 | "fig1.suptitle(\"Single Band Example (source / target)\")\n", 237 | "axs1[0].set_title(f\"{source_data[0]['data_source']}\\n{source_data[source_img_index]['bands']}\")\n", 238 | "_ = axs1[0].imshow(normalize(source_data[source_img_index][\"image\"].squeeze()), cmap=\"gray\")\n", 239 | "axs1[1].set_title(f\"{target_data['data_source']}\\n{target_data['bands']}\")\n", 240 | "_ = axs1[1].imshow(normalize(target_data[\"image\"].squeeze()), cmap=\"gray\")\n", 241 | "\n", 242 | "fig2, axs2 = plt.subplots(1, 2)\n", 243 | "fig2.suptitle(\"Multi-Band Example (source / target)\")\n", 244 | "axs2[0].set_title(f\"{source_data_merged_bands[source_img_index]['data_source']}\\n{source_data_merged_bands[source_img_index]['bands']}\")\n", 245 | "_ = axs2[0].imshow(normalize(source_data_merged_bands[source_img_index][\"image\"]).transpose((1, 2, 0)), cmap=\"gray\")\n", 246 | "axs2[1].set_title(f\"{target_data_merged_bands['data_source']}\\n{target_data_merged_bands['bands']}\")\n", 247 | "_ = axs2[1].imshow(normalize(target_data_merged_bands[\"image\"]).transpose((1, 2, 0)), cmap=\"gray\")" 248 | ] 249 | }, 250 | { 251 | "cell_type": "markdown", 252 | "metadata": {}, 253 | "source": [ 254 | "### Closing the Datasets\n", 255 | "The ImagePredictionDataset class holds open file handles to NetCDF files which need to be manually closed." 256 | ] 257 | }, 258 | { 259 | "cell_type": "code", 260 | "execution_count": null, 261 | "metadata": {}, 262 | "outputs": [], 263 | "source": [ 264 | "dataset.close()\n", 265 | "dataset_merged_bands.close()" 266 | ] 267 | }, 268 | { 269 | "cell_type": "markdown", 270 | "metadata": {}, 271 | "source": [ 272 | "### Incorporation into Training and Evaluation\n", 273 | "This dataset can be wrapped in a straightforward manner for use in a desired ML training / evaluation framework, allowing for selection of desired data from within the returned dictionary, applying data transforms such as image resizing, and converting to framework compatible types." 274 | ] 275 | } 276 | ], 277 | "metadata": { 278 | "kernelspec": { 279 | "display_name": "Python [conda env:.conda-mv4sar]", 280 | "language": "python", 281 | "name": "conda-env-.conda-mv4sar-py" 282 | }, 283 | "language_info": { 284 | "codemirror_mode": { 285 | "name": "ipython", 286 | "version": 3 287 | }, 288 | "file_extension": ".py", 289 | "mimetype": "text/x-python", 290 | "name": "python", 291 | "nbconvert_exporter": "python", 292 | "pygments_lexer": "ipython3", 293 | "version": "3.9.10" 294 | } 295 | }, 296 | "nbformat": 4, 297 | "nbformat_minor": 4 298 | } 299 | -------------------------------------------------------------------------------- /notebooks/example_tiff_utils.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# tiff_file_tools Function Usage\n", 8 | "\n", 9 | "This notebook contains examples for how the simple functions in [tiff_file_tools.py](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/main/src/multiearth_challenge/tiff_file_tools.py) can be used to extract metadata from and retrieve aligned imagery from TIFF files provided as part of the MultiEarth challenge. These TIFF files serve as an alternate data storage format for those who prefer them to NETCDF files." 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 1, 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "import pkg_resources\n", 19 | "\n", 20 | "from matplotlib import pyplot as plt\n", 21 | "\n", 22 | "from multiearth_challenge import tiff_file_tools as tft\n", 23 | "\n", 24 | "%matplotlib inline\n", 25 | "%load_ext autoreload\n", 26 | "%autoreload 2" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "metadata": {}, 32 | "source": [ 33 | "### Filename Parsing\n", 34 | "The MultiEarth 2023 TIFF files have encoded into their filename the collecting sensor's name, the sensor band, the latitude and longitude position of the image, and the collection date. The function [parse_filename_parts](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/c2318665ab94451eea4bd1b9e31a71655c6be001/src/multiearth_challenge/zip_file_tools.py#L12) will extract this metadata from the filename." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 2, 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "name": "stdout", 44 | "output_type": "stream", 45 | "text": [ 46 | "{'sensor': 'Sentinel1', 'band': 'VH', 'lat': -4.39, 'lon': -55.2, 'date': datetime.date(2019, 6, 8)}\n" 47 | ] 48 | } 49 | ], 50 | "source": [ 51 | "tiff_path = pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff\")\n", 52 | "file_info = tft.parse_filename_parts(tiff_path)\n", 53 | "print(file_info)" 54 | ] 55 | }, 56 | { 57 | "cell_type": "markdown", 58 | "metadata": {}, 59 | "source": [ 60 | "### Aligned Imagery\n", 61 | "The MultiEarth sub-challenges involve retrieving spatially and temporally aligned imagery. The function [get_aligned_images](https://github.com/MIT-AI-Accelerator/multiearth-challenge/blob/c2318665ab94451eea4bd1b9e31a71655c6be001/src/multiearth_challenge/zip_file_tools.py#L79) will identify images that are at the same location and collected within a specified time window of a target image." 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 3, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [ 70 | "# The paths for images to find spatially and temporally aligned images for.\n", 71 | "target_images = [\n", 72 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_06_06.tiff\"), \n", 73 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_06_11.tiff\"), \n", 74 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_01.tiff\"), \n", 75 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2020_07_20.tiff\"), \n", 76 | "]\n", 77 | "\n", 78 | "# The paths for images to search to find which ones are aligned with images1.\n", 79 | "source_images = [\n", 80 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff\"),\n", 81 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_05_27.tiff\"),\n", 82 | " pkg_resources.resource_filename(\"multiearth_challenge\", \"data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_07_02.tiff\"),\n", 83 | "]\n", 84 | "\n", 85 | "# A window in +- days (inclusive) specifying whether two images were collected close enough in time to be considered aligned.\n", 86 | "date_window = (-10, 10)\n", 87 | "\n", 88 | "image_alignment = tft.get_aligned_images(\n", 89 | " target_images,\n", 90 | " source_images,\n", 91 | " date_window,\n", 92 | ")" 93 | ] 94 | }, 95 | { 96 | "cell_type": "markdown", 97 | "metadata": {}, 98 | "source": [ 99 | "The output is a dictionary with keys being each target image path and the associated value being a list of aligned source image paths." 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": 4, 105 | "metadata": {}, 106 | "outputs": [ 107 | { 108 | "name": "stdout", 109 | "output_type": "stream", 110 | "text": [ 111 | "Target image: Sentinel2_B1_-55.20_-4.39_2019_06_06.tiff aligned with:\n", 112 | " Source image: Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff\n", 113 | " Source image: Sentinel1_VH_-55.20_-4.39_2019_05_27.tiff\n", 114 | "Target image: Sentinel2_B1_-55.20_-4.39_2019_06_11.tiff aligned with:\n", 115 | " Source image: Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff\n", 116 | "Target image: Sentinel2_B2_-55.20_-4.39_2019_07_01.tiff aligned with:\n", 117 | " Source image: Sentinel1_VH_-55.20_-4.39_2019_07_02.tiff\n", 118 | "Target image: Sentinel2_B1_-55.20_-4.39_2020_07_20.tiff aligned with:\n", 119 | " None\n" 120 | ] 121 | } 122 | ], 123 | "source": [ 124 | "for target_path, source_paths in image_alignment.items():\n", 125 | " print(f\"Target image: {target_path.name} aligned with:\")\n", 126 | " for source_path in source_paths:\n", 127 | " print(f\" Source image: {source_path.name}\")\n", 128 | " if not len(source_paths):\n", 129 | " print(\" None\")" 130 | ] 131 | } 132 | ], 133 | "metadata": { 134 | "kernelspec": { 135 | "display_name": "Python [conda env:.conda-mv4sar]", 136 | "language": "python", 137 | "name": "conda-env-.conda-mv4sar-py" 138 | }, 139 | "language_info": { 140 | "codemirror_mode": { 141 | "name": "ipython", 142 | "version": 3 143 | }, 144 | "file_extension": ".py", 145 | "mimetype": "text/x-python", 146 | "name": "python", 147 | "nbconvert_exporter": "python", 148 | "pygments_lexer": "ipython3", 149 | "version": "3.9.10" 150 | } 151 | }, 152 | "nbformat": 4, 153 | "nbformat_minor": 4 154 | } 155 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | DISTNAME = 'multiearth-challenge' 4 | DESCRIPTION = 'This repository provides tools for working with imagery supplied by the MultiEarth 2023 public challenge.' 5 | LICENSE = 'MIT' 6 | AUTHOR = 'Greg Angelides' 7 | URL = 'https://github.com/MIT-AI-Accelerator/multiearth-challenge' 8 | INSTALL_REQUIRES = [ 9 | 'jupyter >= 1.0', 10 | 'matplotlib >= 3.5', 11 | 'netcdf4 >= 1.5', 12 | 'numba >= 0.54', 13 | 'numpy >= 1.18', 14 | 'xarray >= 0.20', 15 | ] 16 | if __name__ == '__main__': 17 | setup(name=DISTNAME, 18 | description=DESCRIPTION, 19 | license=LICENSE, 20 | author=AUTHOR, 21 | install_requires=INSTALL_REQUIRES, 22 | url=URL, 23 | python_requires='>=3.8', 24 | packages=find_packages(where='./src'), 25 | package_dir={'': 'src'}, 26 | include_package_data=True, 27 | version='1.0.0', 28 | ) 29 | -------------------------------------------------------------------------------- /src/multiearth_challenge/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/__init__.py -------------------------------------------------------------------------------- /src/multiearth_challenge/data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/__init__.py -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/__init__.py -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/deforestation_sample.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/deforestation_sample.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_BurnDate_-54.58_-4.39_2008_09_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_BurnDate_-54.58_-4.39_2008_09_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_BurnDate_-55.08_-4.39_2008_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_BurnDate_-55.08_-4.39_2008_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_BurnDate_-55.18_-4.37_2005_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_BurnDate_-55.18_-4.37_2005_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_ConfidenceLevel_-54.58_-4.39_2008_09_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_ConfidenceLevel_-54.58_-4.39_2008_09_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_ConfidenceLevel_-55.08_-4.39_2008_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_ConfidenceLevel_-55.08_-4.39_2008_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_ConfidenceLevel_-55.18_-4.37_2005_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_ConfidenceLevel_-55.18_-4.37_2005_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_LandCover_-54.58_-4.39_2008_09_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_LandCover_-54.58_-4.39_2008_09_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_LandCover_-55.08_-4.39_2008_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_LandCover_-55.08_-4.39_2008_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_LandCover_-55.18_-4.37_2005_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_LandCover_-55.18_-4.37_2005_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_ObservedFlag_-54.58_-4.39_2008_09_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_ObservedFlag_-54.58_-4.39_2008_09_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_ObservedFlag_-55.08_-4.39_2008_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_ObservedFlag_-55.08_-4.39_2008_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire/Fire_ObservedFlag_-55.18_-4.37_2005_08_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire/Fire_ObservedFlag_-55.18_-4.37_2005_08_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/fire_sample.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/fire_sample.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_QA_PIXEL_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_QA_PIXEL_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_QA_PIXEL_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_QA_PIXEL_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B1_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B2_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B3_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B4_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B5_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_SR_B7_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-54.58_-4.39_2008_09_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-54.58_-4.39_2008_09_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-55.08_-4.39_2008_07_25.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-55.08_-4.39_2008_07_25.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-55.08_-4.39_2008_08_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-55.08_-4.39_2008_08_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-55.18_-4.37_2005_08_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5/Landsat5_ST_B6_-55.18_-4.37_2005_08_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat5_sample.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat5_sample.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_QA_PIXEL_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_QA_PIXEL_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_QA_PIXEL_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- 1 | II* UUzUr8@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U@U -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B1_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B2_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B3_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B4_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B5_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B6_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_SR_B7_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-54.74_-4.09_2020_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-54.74_-4.09_2020_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-54.78_-3.51_2021_04_24.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-54.78_-3.51_2021_04_24.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-55.14_-3.89_2016_07_15.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-55.14_-3.89_2016_07_15.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-55.20_-4.39_2020_07_10.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-55.20_-4.39_2020_07_10.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-55.20_-4.39_2020_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8/Landsat8_ST_B10_-55.20_-4.39_2020_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/landsat8_sample.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/landsat8_sample.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_05_27.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_05_27.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_06_20.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_06_20.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_07_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VH_-55.20_-4.39_2019_07_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_05_27.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_05_27.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_06_08.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_06_08.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_06_20.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_06_20.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_07_02.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1/Sentinel1_VV_-55.20_-4.39_2019_07_02.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent1_sample.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent1_sample.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.68_-4.17_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.68_-4.17_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.74_-4.09_2019_03_18.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.74_-4.09_2019_03_18.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.92_-3.61_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.92_-3.61_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.92_-3.61_2021_05_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.92_-3.61_2021_05_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.92_-4.25_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.92_-4.25_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.94_-4.27_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-54.94_-4.27_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.06_-4.09_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.06_-4.09_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_06_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_06_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_06_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_06_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_07_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_07_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_07_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_07_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2019_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2020_07_20.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B1_-55.20_-4.39_2020_07_20.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.68_-4.17_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.68_-4.17_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.74_-4.09_2019_03_18.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.74_-4.09_2019_03_18.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.92_-3.61_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.92_-3.61_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.92_-3.61_2021_05_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.92_-3.61_2021_05_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.92_-4.25_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.92_-4.25_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.94_-4.27_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-54.94_-4.27_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.06_-4.09_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.06_-4.09_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_06_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_06_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_06_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_06_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2019_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2020_07_20.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B2_-55.20_-4.39_2020_07_20.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.68_-4.17_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.68_-4.17_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.74_-4.09_2019_03_18.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.74_-4.09_2019_03_18.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.92_-3.61_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.92_-3.61_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.92_-3.61_2021_05_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.92_-3.61_2021_05_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.92_-4.25_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.92_-4.25_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.94_-4.27_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-54.94_-4.27_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.06_-4.09_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.06_-4.09_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_06_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_06_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_06_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_06_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_07_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_07_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_07_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_07_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2019_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2020_07_20.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B3_-55.20_-4.39_2020_07_20.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.68_-4.17_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.68_-4.17_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.74_-4.09_2019_03_18.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.74_-4.09_2019_03_18.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.92_-3.61_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.92_-3.61_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.92_-3.61_2021_05_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.92_-3.61_2021_05_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.92_-4.25_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.92_-4.25_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.94_-4.27_2020_07_05.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-54.94_-4.27_2020_07_05.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.06_-4.09_2021_05_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.06_-4.09_2021_05_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_06_06.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_06_06.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_06_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_06_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_07_01.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_07_01.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_07_11.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_07_11.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_07_26.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2019_07_26.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2020_07_20.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2/Sentinel2_B4_-55.20_-4.39_2020_07_20.tiff -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/sent2_sample.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/sent2_sample.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/data/sample_dataset/test.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/data/sample_dataset/test.nc -------------------------------------------------------------------------------- /src/multiearth_challenge/datasets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MIT-AI-Accelerator/multiearth-challenge/21cd2c7f2b5ea7cd8bba5fa49af5fc295e7cf3c9/src/multiearth_challenge/datasets/__init__.py -------------------------------------------------------------------------------- /src/multiearth_challenge/datasets/prediction_dataset.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import Dict, Iterable, Optional, Sequence, Tuple 3 | 4 | import multiearth_challenge.datasets.base_datasets as bd 5 | import multiearth_challenge.datasets.data_filters as df 6 | import multiearth_challenge.datasets.relative_data_filters as rdf 7 | 8 | 9 | class ImagePredictionDataset(bd.MultiEarthDatasetBase): 10 | """A dataset class intended to be used for supervised learning of a 11 | predictive generative model. It loads MultiEarth data and returns 12 | samples consisting of multiple historical source images paired 13 | with a future target image at the same location along with 14 | associated metadata. The target image may be None if no imagery is 15 | contained in the NetCDF file. This will be the case for data 16 | supplied as test targets for the MultiEarth challenge where only 17 | the target metadata is supplied. 18 | 19 | """ 20 | 21 | def __init__( 22 | self, 23 | source_files: Sequence[Path], 24 | target_files: Sequence[Path], 25 | source_bands: Dict[str, Optional[Iterable[str]]], 26 | target_bands: Dict[str, Optional[Iterable[str]]], 27 | source_date_window: Tuple[Optional[int], Optional[int]], 28 | max_source_cloud_coverage: float = 0.0, 29 | max_target_cloud_coverage: float = 0.0, 30 | merge_source_bands: bool = False, 31 | merge_target_bands: bool = False, 32 | error_on_empty: bool = True, 33 | ): 34 | """Note, this initialization will open file handles to a NetCDF 35 | file. These file handles are released by calling the close 36 | member function of this class. 37 | 38 | Parameters 39 | ---------- 40 | source_files: Sequence[Path] 41 | MultiEarth image NetCDF files whose data should be 42 | considered for this dataset. 43 | 44 | target_files: Sequence[Path] 45 | MultiEarth NetCDF files whose images are truth targets for 46 | this dataset. 47 | 48 | source_bands: Dict[str, Optional[Iterable[str]]] 49 | A dictionary with keys specifying the sensor name and 50 | values specifying the bands of interest for source 51 | imagery. If the value is None, no filtering is done for 52 | that sensor's band and all associated bands are 53 | included. Acceptable sensor names and associated bands are 54 | as follows: 55 | 56 | "Landsat-5": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'ST_B6', 'SR_B7', 'QA_PIXEL'], 57 | "Landsat-8": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7', 'ST_B10', 'QA_PIXEL'], 58 | "Sentinel-1": ['VV', 'VH'], 59 | "Sentinel-2": ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B9', 'B11', 'B12', 'QA60'], 60 | 61 | Additional documentation on the details of each data band 62 | can be found in the NetCDF data files or on the sensors' 63 | datasheets. 64 | 65 | target_bands: Dict[str, Optional[Iterable[str]]] 66 | A dictionary with keys specifying the sensor name and 67 | values specifying the bands of interest for target 68 | imagery. If the value is None, no filtering is done for 69 | that sensor's band and all associated bands are 70 | included. Acceptable sensor names and associated bands are 71 | as follows: 72 | 73 | "Landsat-5": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'ST_B6', 'SR_B7', 'QA_PIXEL'], 74 | "Landsat-8": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7', 'ST_B10', 'QA_PIXEL'], 75 | "Sentinel-1": ['VV', 'VH'], 76 | "Sentinel-2": ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B9', 'B11', 'B12', 'QA60'], 77 | 78 | Additional documentation on the details of each data band 79 | can be found in the NetCDF data files or on the sensors' 80 | datasheets. 81 | 82 | source_date_window: Tuple[Optional[int], Optional[int]] 83 | The minimum and maximum inclusive relative time window in 84 | days around the target image from which source imagery is 85 | pulled. If the minimum is None, there is no filter on the 86 | minimum relative date. Similarly, no maximum can be 87 | specified with a value of None. For example, a value of 88 | (None, -365) would result in only source imagery collected 89 | at least 365 days before the target image date being 90 | returned. 91 | 92 | max_source_cloud_coverage: float default=0.0 93 | The maximum allowable cloud coverage allowed in the source 94 | imagery as a fraction [0, 1]. Setting the maximum above 0 95 | may be useful to incorporate additional samples even if 96 | the source image is slightly obscured. 97 | 98 | Note, there may be some innacuracies in the identified 99 | cloud coverage provided by the sensor's QA bands. This is 100 | especially true for Sentinel-2 data. 101 | 102 | max_target_cloud_coverage: float default=0.0 103 | The maximum allowable cloud coverage allowed in the target 104 | imagery as a fraction [0, 1]. Setting the maximum above 0 105 | may be useful to incorporate additional samples even if 106 | the target image is slightly obscured. 107 | 108 | Note, there may be some innacuracies in the identified 109 | cloud coverage provided by the sensor's QA bands. This is 110 | especially true for Sentinel-2 data. 111 | 112 | merge_source_bands: bool, default=False 113 | If True, returned source images will have multiple 114 | channels in increasing order of frequency (e.g., red, 115 | green, blue for visible), co-pol before cross-pol, and 116 | with bands not originating from collected imagery coming 117 | last and in alphabetical order. The metadata returned with 118 | the imagery will also specify the channel order. If False, 119 | each band is treated as a separate sample. 120 | 121 | merge_target_bands: bool, default=False 122 | If True, returned source images will have multiple 123 | channels in increasing order of frequency (e.g., red, 124 | green, blue for visible), co-pol before cross-pol, and 125 | with bands not originating from collected imagery coming 126 | last and in alphabetical order. The metadata returned with 127 | the imagery will also specify the channel order. If False, 128 | each band is treated as a separate sample. 129 | 130 | error_on_empty: bool, default=True 131 | If True, if no source or target image remain after 132 | data filtering, raise a ValueError, otherwise this dataset 133 | will have length 0. 134 | 135 | """ 136 | 137 | if len(source_date_window) != 2: 138 | raise ValueError( 139 | f"Parameter source_date_window should be a tuple of length 2, not length ({len(source_date_window)})" 140 | ) 141 | relative_date_filter = rdf.RelativeDateFilter( 142 | relative_min_date=source_date_window[0], 143 | relative_max_date=source_date_window[1], 144 | include=True, 145 | ) 146 | 147 | source_data_filters = [ 148 | # Cloud filtering must come before the QA bands may be 149 | # filtered out 150 | df.CloudCoverFilter( 151 | min_cover_fraction=0.0, 152 | max_cover_fraction=max_source_cloud_coverage, 153 | filter_shadow_landsat=False, 154 | include=True, 155 | ), 156 | df.DataBandFilter(source_bands, include=True), 157 | ] 158 | 159 | target_data_filters = [ 160 | # Cloud filtering must come before the QA bands may be 161 | # filtered out 162 | df.CloudCoverFilter( 163 | min_cover_fraction=0.0, 164 | max_cover_fraction=max_target_cloud_coverage, 165 | filter_shadow_landsat=False, 166 | include=True, 167 | ), 168 | df.DataBandFilter(target_bands, include=True), 169 | ] 170 | 171 | super().__init__( 172 | source_files, 173 | target_files, 174 | source_data_filters, 175 | target_data_filters, 176 | merge_source_bands, 177 | merge_target_bands, 178 | relative_date_filter, 179 | single_source_image=False, # Always want all relevant source imagery paired with target 180 | error_on_empty=error_on_empty, 181 | ) 182 | -------------------------------------------------------------------------------- /src/multiearth_challenge/datasets/relative_data_filters.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | from typing import Dict, Optional, Union 3 | 4 | import numpy as np 5 | import numpy.ma as ma 6 | import xarray as xr 7 | 8 | 9 | """This module holds functions for filtering MultiEarth source imagery 10 | based on various conditions relative to a target image's 11 | metadata. When passed as a parameter to a MultiEarth dataset this 12 | enables filtering source data that is paired with each target based on 13 | the sample's target data characteristics. 14 | 15 | """ 16 | 17 | 18 | class RelativeDateFilter: 19 | """Filters source imagery based on it's relative collection date 20 | compared to a target image's collection date. For example, if you 21 | want to train on imagery earlier than one week before the target 22 | image was collected, you can specify a relative_min_date of None 23 | and a relative_max_date of np.timedelta64(-7, 'D'). 24 | 25 | """ 26 | 27 | def __init__( 28 | self, 29 | *, 30 | relative_min_date: Optional[Union[int, np.timedelta64]] = None, 31 | relative_max_date: Optional[Union[int, np.timedelta64]] = None, 32 | include: bool = True, 33 | ): 34 | """Parameters 35 | ---------- 36 | relative_min_date: Optional[np.timedelta64], default=None 37 | Specifies the inclusive minimum of the relative date 38 | interval of interest. Negative values indicate a time 39 | before the target date and positive after. If an integer 40 | is passed, the relative_min_date is in units of days. If 41 | None, there is no minimum date. 42 | 43 | relative_max_date: Optional[np.timedelta64], default=None 44 | Specifies the inclusive maximum of the relative date 45 | interval of interest. Negative values indicate a time 46 | before the target date and positive after. If an integer 47 | is passed, the relative_min_date is in units of days. If 48 | None, there is no maximum date. 49 | 50 | include: bool, default=True 51 | If True, will include all imagery within the inclusive 52 | interval specified by the relative_min_date and 53 | relative_max_date. Otherwise, will exclude imagery within 54 | the date interval. 55 | 56 | """ 57 | self.min_date = relative_min_date 58 | self.max_date = relative_max_date 59 | if self.min_date is not None and not isinstance(self.min_date, np.timedelta64): 60 | self.min_date = np.timedelta64(self.min_date, 'D') 61 | if self.max_date is not None and not isinstance(self.max_date, np.timedelta64): 62 | self.max_date = np.timedelta64(self.max_date, 'D') 63 | 64 | if ( 65 | self.min_date is not None 66 | and self.max_date is not None 67 | and self.min_date > self.max_date 68 | ): 69 | raise ValueError( 70 | f"Passed parameter relative_min_date ({self.min_date}) must not be greater than relative_max_date ({self.max_date})." 71 | ) 72 | self.include = include 73 | 74 | def calc_relative_date_mask(self, collection_dates: np.ndarray, target_date: np.datetime64) -> np.ndarray: 75 | """Calculates a boolean mask based on the filter parameters. 76 | 77 | Parameters 78 | ---------- 79 | collection_dates: np.array 80 | An array of numpy datetime64 dates to filter. 81 | 82 | target_date: np.datetime64 83 | The target date to calculate a relative minimum and maximum date around. 84 | 85 | Returns 86 | ------- 87 | np.ndarray 88 | A numpy boolean mask specifying which images satisfy the 89 | filter parameters used to initialize this 90 | RelativeDateFilter. It will have length equal to the 91 | length of the passed collection_dates array. 92 | 93 | """ 94 | if isinstance(target_date, datetime.date): 95 | target_date = np.datetime64(target_date) 96 | if self.min_date is not None and self.max_date is not None: 97 | mask = ma.masked_inside( 98 | collection_dates, 99 | target_date + self.min_date, 100 | target_date + self.max_date, 101 | ).mask 102 | elif self.min_date is not None: 103 | mask = collection_dates >= (target_date + self.min_date) 104 | elif self.max_date is not None: 105 | mask = collection_dates <= (target_date + self.max_date) 106 | else: 107 | # There is no minimum or maximum date 108 | mask = np.ones(collection_dates.shape, dtype=bool) 109 | if not self.include: 110 | mask = np.logical_not(mask) 111 | return mask 112 | 113 | def __call__(self, dataset: xr.Dataset, target_date: np.datetime64) -> Dict[str, np.ndarray]: 114 | """Calculates a boolean mask based on the filter parameters. 115 | 116 | Parameters 117 | ---------- 118 | dataset: xr.Dataset 119 | The MultiEarth xarray dataset to filter. This can be 120 | loaded from a MultiEarth NetCDF file. 121 | 122 | target_date: np.datetime64 123 | The target date to calculate a relative minimum and maximum date around. 124 | 125 | Returns 126 | ------- 127 | Dict[str, np.ndarray] 128 | A dictionary with key 'index' (corresponding to the 129 | relevant Xarray Dataset coordinate) and a value of a 130 | boolean mask specifying which images satisfy the filter 131 | parameters used to initialize this RelativeDateFilter. It 132 | will have length equal to the length of the dataset's 133 | index coordinate. 134 | 135 | """ 136 | mask = self.calc_relative_date_mask(dataset.collection_dates.data, target_date) 137 | return {"index": mask} 138 | -------------------------------------------------------------------------------- /src/multiearth_challenge/datasets/segmentation_dataset.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import Dict, Iterable, Optional, Sequence, Tuple 3 | 4 | import multiearth_challenge.datasets.base_datasets as bd 5 | import multiearth_challenge.datasets.data_filters as df 6 | import multiearth_challenge.datasets.relative_data_filters as rdf 7 | 8 | 9 | class ImageSegmentationDataset(bd.MultiEarthDatasetBase): 10 | """A dataset class intended to be used for supervised learning of a 11 | image segmentation task. It loads MultiEarth data and returns 12 | samples consisting of a target segmentation image paired with 13 | source imagery at the same location along with associated 14 | metadata. The segmentation image may be None if no imagery is 15 | contained in the NetCDF file. This will be the case for data 16 | supplied as test targets for the MultiEarth challenge where only 17 | the target metadata is supplied. 18 | 19 | The segmentation images are either Deforestation boolean masks or 20 | fire confidence levels from the FireCCI51 dataset. 21 | 22 | """ 23 | 24 | def __init__( 25 | self, 26 | source_files: Sequence[Path], 27 | segmentation_files: Sequence[Path], 28 | source_bands: Dict[str, Optional[Iterable[str]]], 29 | merge_source_bands: bool = False, 30 | source_cloud_coverage: Tuple[float, float] = (0.0, 0.0), 31 | source_date_window: Tuple[Optional[int], Optional[int]] = (-7, 7), 32 | single_source_image: bool = True, 33 | error_on_empty: bool = True, 34 | ): 35 | """Note, this initialization will open file handles to a NetCDF 36 | file. These file handles are released by calling the close 37 | member function of this class. 38 | 39 | Parameters 40 | ---------- 41 | source_files: Sequence[Path] 42 | MultiEarth image NetCDF files whose data should be 43 | considered for this dataset. 44 | 45 | segmentation_files: Sequence[Path] 46 | MultiEarth NetCDF files containing deforestation or fire 47 | segmentation images which are truth targets for this 48 | dataset. 49 | 50 | source_bands: Dict[str, Optional[Iterable[str]]] 51 | A dictionary with keys specifying the sensor name and 52 | values specifying the bands of interest. If the value is 53 | None, no filtering is done for that sensor's band and all 54 | associated bands are included. Acceptable sensor names and 55 | associated bands are as follows: 56 | 57 | "Landsat-5": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'ST_B6', 'SR_B7', 'QA_PIXEL'], 58 | "Landsat-8": ['SR_B1', 'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7', 'ST_B10', 'QA_PIXEL'], 59 | "Sentinel-1": ['VV', 'VH'], 60 | "Sentinel-2": ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B9', 'B11', 'B12', 'QA60'], 61 | 62 | Additional documentation on the details of each data band 63 | can be found in the NetCDF data files or on the sensors' 64 | datasheets. 65 | 66 | merge_source_bands: bool, default=False 67 | If True, returned source images will have multiple 68 | channels in increasing order of frequency (e.g., red, 69 | green, blue for visible), co-pol before cross-pol, and 70 | with bands not originating from collected imagery coming 71 | last and in alphabetical order. The metadata returned with 72 | the imagery will also specify the channel order. If False, 73 | each band is treated as a separate sample. 74 | 75 | source_cloud_coverage: Tuple[float, float], default=(0.0, 0.0) 76 | The minimum and maximum allowable cloud coverage allowed 77 | in visible and IR imagery as a fraction [0, 1]. Setting 78 | the maximum above 0 may be useful when incorporating SAR 79 | imagery into a multimodal model where a large fraction of 80 | cloud coverage may be acceptable. Similarly, evaluation in 81 | challenging cases with a minimum on the amount of cloud 82 | coverage may be desired. 83 | 84 | Note, there may be some innacuracies in the identified 85 | cloud coverage provided by the sensor's QA bands. This is 86 | especially true for Sentinel-2 data. 87 | 88 | source_date_window: Tuple[Optional[int], Optional[int]], default=(-7, 7) 89 | The minimum and maximum inclusive relative time window in 90 | days around the segmentation image from which source 91 | imagery is pulled. For example, with the default of (-7, 92 | 7) only source imagery within the interval of -7 days 93 | before and 7 days after a segmentation image date will be 94 | returned as source imagery. If the minimum is None, there 95 | is no filter on the minimum relative date. Similarly, no 96 | maximum can be specified with a value of None. 97 | 98 | single_source_image: bool, default=True 99 | If True, for each target image only a single source image 100 | is returned in a unique pair. A single source image may be 101 | paired with multiple target images and vice-versa 102 | depending on data filters applied. If False, each target 103 | image is returned with all source images at the same 104 | location that satisfy applied data filters. 105 | 106 | error_on_empty: bool, default=True 107 | If True, if no source or target image remain after 108 | data filtering, raise a ValueError, otherwise this dataset 109 | will have length 0. 110 | 111 | """ 112 | if len(source_date_window) != 2: 113 | raise ValueError( 114 | f"Parameter source_date_window should be a tuple of length 2, not length ({len(source_date_window)})" 115 | ) 116 | if len(source_cloud_coverage) != 2: 117 | raise ValueError( 118 | f"Parameter source_cloud_coverage should be a tuple of length 2, not length ({len(source_cloud_coverage)})" 119 | ) 120 | source_data_filters = [ 121 | # Cloud filtering must come before the QA bands may be 122 | # filtered out 123 | df.CloudCoverFilter( 124 | min_cover_fraction=source_cloud_coverage[0], 125 | max_cover_fraction=source_cloud_coverage[1], 126 | filter_shadow_landsat=False, 127 | include=True, 128 | ), 129 | df.DataBandFilter(source_bands, include=True), 130 | ] 131 | relative_date_filter = rdf.RelativeDateFilter( 132 | relative_min_date=source_date_window[0], 133 | relative_max_date=source_date_window[1], 134 | include=True, 135 | ) 136 | 137 | # Data bands for deforestation and fire segmentation images 138 | segmentation_bands = {"Deforestation": None, "FireCCI51": ["ConfidenceLevel"]} 139 | segmentation_data_filters = [ 140 | df.DataBandFilter(segmentation_bands, include=True) 141 | ] 142 | merge_target_bands = False 143 | super().__init__( 144 | source_files, 145 | segmentation_files, 146 | source_data_filters, 147 | segmentation_data_filters, 148 | merge_source_bands, 149 | merge_target_bands, 150 | relative_date_filter, 151 | single_source_image, 152 | error_on_empty, 153 | ) 154 | -------------------------------------------------------------------------------- /src/multiearth_challenge/datasets/translation_dataset.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import Dict, Iterable, List, Optional, Sequence, Tuple 3 | 4 | import multiearth_challenge.datasets.base_datasets as bd 5 | import multiearth_challenge.datasets.data_filters as df 6 | import multiearth_challenge.datasets.relative_data_filters as rdf 7 | 8 | 9 | class SARToVisibleDataset(bd.MultiEarthDatasetBase): 10 | """A dataset class intended to be used for supervised learning of the 11 | translation of a SAR image to a visible image. It loads MultiEarth data 12 | and returns samples consisting of a source SAR image paired with one or 13 | more visible images at the same location along with associated metadata. 14 | The target image may be None if no imagery is contained 15 | in the NetCDF file. This will be the case for data supplied as 16 | test targets for the MultiEarth challenge where only the target 17 | metadata is supplied. 18 | 19 | """ 20 | 21 | def __init__( 22 | self, 23 | sar_files: Sequence[Path], 24 | visible_files: Sequence[Path], 25 | sar_bands: Iterable[str] = ["VV"], 26 | merge_sar_bands: bool = False, 27 | sar_date_window: Tuple[Optional[int], Optional[int]] = (-7, 7), 28 | visible_bands: Dict[str, Iterable[str]] = df.RGB_BANDS, 29 | merge_visible_bands: bool = False, 30 | max_visible_cloud_coverage: float = 0.0, 31 | single_target_image: bool = False, 32 | error_on_empty: bool = True, 33 | ): 34 | """Note, this initialization will open file handles to a NetCDF 35 | file. These file handles are released by calling the close 36 | member function of this class. 37 | 38 | Parameters 39 | ---------- 40 | sar_files: Iterable[Path] 41 | MultiEarth image NetCDF files containing Sentinel-1 SAR 42 | images whose data should be considered for this dataset. 43 | 44 | visible_files: Iterable[Path] 45 | MultiEarth NetCDF files containing visible images which 46 | are truth targets for this dataset. 47 | 48 | sar_bands: Iterable[str], default=["VV"] 49 | A series specifying whether to include VV polarized 50 | imagery, VH polarized imagery, or both in this dataset. 51 | 52 | merge_sar_bands: bool, default=False 53 | If True, and both polarizations are listed in sar_bands, 54 | returned SAR images will be two channel with the first 55 | being 'VV' and the second being 'VH'. The metadata 56 | returned with the imagery will also specify the channel 57 | order. If False, each band is treated as a separate 58 | sample. 59 | 60 | sar_date_window: Tuple[Optional[int], Optional[int]], default=(-7, 7) 61 | The minimum and maximum inclusive relative time window in 62 | days around the segmentation image from which source 63 | imagery is pulled. For example, with the default of (-7, 64 | 7) only SAR imagery within the interval of -7 days 65 | before and 7 days after a visible image date will be 66 | returned as source imagery. If the minimum is None, there 67 | is no filter on the minimum relative date. Similarly, no 68 | maximum can be specified with a value of None. 69 | 70 | visible_bands: dict[str, Iterable[str]], default=df.RGB_BANDS 71 | A dictionary with keys specifying the sensor name and 72 | values specifying the bands of interest. If the value is 73 | None, no filtering is done for that sensor's band and all 74 | associated bands are included. Acceptable sensor names and 75 | associated bands are defined in the default value which is 76 | dict( 77 | "Landsat-5": ['SR_B3', 'SR_B2', 'SR_B1'], 78 | "Landsat-8": ['SR_B4', 'SR_B3', 'SR_B2'], 79 | "Sentinel-2": ['B4', 'B3', 'B2'], 80 | ) 81 | 82 | Additional documentation on the details of each data band 83 | can be found in the NetCDF data files or on the sensors' 84 | datasheets. 85 | 86 | merge_visible_bands: bool, default=False 87 | If True, and multiple visible bands are listed in 88 | visible_bands, returned visible images will be 89 | multi-channel in ascending frequency (red, green, 90 | blue). The metadata returned with the imagery will also 91 | specify the channel order. If False, each band is treated 92 | as a separate sample. 93 | 94 | max_visible_cloud_coverage: float default=0.0 95 | The maximum allowable cloud coverage allowed in visible 96 | imagery as a fraction [0, 1]. Setting the maximum above 0 97 | may be useful to incorporate additional samples even if 98 | the truth visible image is slightly obscured. 99 | 100 | Note, there may be some innacuracies in the identified 101 | cloud coverage provided by the sensor's QA bands. This is 102 | especially true for Sentinel-2 data. 103 | 104 | single_target_image: bool, default=False 105 | If True, for each target image only a single target image 106 | is returned in a unique pair. 107 | If False, each source image is returned with all target images 108 | at the same location that satisfy applied data filters. 109 | 110 | error_on_empty: bool, default=True 111 | If True, if no source or target image remain after 112 | data filtering, raise a ValueError, otherwise this dataset 113 | will have length 0. 114 | 115 | """ 116 | if len(sar_date_window) != 2: 117 | raise ValueError( 118 | f"Parameter sar_date_window should be a tuple of length 2, not length ({len(sar_date_window)})" 119 | ) 120 | sar_data_filters = [ 121 | df.DataBandFilter({"Sentinel-1": sar_bands}, include=True), 122 | ] 123 | relative_date_filter = rdf.RelativeDateFilter( 124 | relative_min_date=sar_date_window[0], 125 | relative_max_date=sar_date_window[1], 126 | include=True, 127 | ) 128 | 129 | visible_data_filters = [ 130 | # Cloud filtering must come before the QA bands may be 131 | # filtered out 132 | df.CloudCoverFilter( 133 | min_cover_fraction=0.0, 134 | max_cover_fraction=max_visible_cloud_coverage, 135 | filter_shadow_landsat=False, 136 | include=True, 137 | ), 138 | df.DataBandFilter(visible_bands, include=True), 139 | ] 140 | super().__init__( 141 | # swap source and target so that __getitem__ will return multiple 142 | # visible images from a single SAR image 143 | source_files=visible_files, 144 | target_files=sar_files, 145 | source_data_filters=visible_data_filters, 146 | target_data_filters=sar_data_filters, 147 | merge_source_bands=merge_visible_bands, 148 | merge_target_bands=merge_sar_bands, 149 | relative_date_filter=relative_date_filter, 150 | single_source_image=single_target_image, 151 | error_on_empty=error_on_empty, 152 | ) 153 | 154 | def __getitem__(self, index: int) -> Tuple[bd.DatasetData, List[bd.DatasetData]]: 155 | """Returns a single SAR image and the aligned visible images. 156 | The SAR to visible image challenge requires learning a distribution 157 | of possible EO images from a single SAR image, so this class returns multiple 158 | target images and a single source image. 159 | 160 | Parameters 161 | ---------- 162 | index: int 163 | The location index to retrieve imagery for. 164 | 165 | Returns 166 | ------- 167 | Tuple[DatasetData, List[DatasetData]] 168 | A tuple where the first element is a single SAR image. 169 | 170 | The second element holds target data from the same 171 | location. 172 | 173 | """ 174 | # the SAR data is actually stored as a target in the superclass, so 175 | # reversing the argument order will restore the proper order 176 | target_data, source_data = super().__getitem__(index) 177 | return (source_data, target_data) 178 | -------------------------------------------------------------------------------- /src/multiearth_challenge/tiff_file_tools.py: -------------------------------------------------------------------------------- 1 | from collections import OrderedDict 2 | import datetime 3 | import json 4 | from pathlib import Path 5 | from typing import Dict, List, Sequence, Optional, Tuple, Union 6 | 7 | 8 | """This module holds simple functions for working with zip files of 9 | individual images, rather than NetCDF files. The image's position, 10 | collection date, and data band are specified in the filename.""" 11 | 12 | def parse_filename_parts( 13 | image_path: Union[str, Path], 14 | pos_float: bool=True, 15 | ) -> Dict[str, Union[str, float, datetime.datetime]]: 16 | """Image paths hold information on the sensor, band, position, and 17 | date. This function parses and returns these values. 18 | 19 | Parameters 20 | ---------- 21 | image_path: Union[str, Path] 22 | The image file of interest. 23 | 24 | pos_float: bool, default=True 25 | If true, the latitude and longitude is returned as a float. 26 | Otherwise, it is left as a string which may be more convenient 27 | for comparison. 28 | 29 | Return 30 | ------ 31 | Dict[str, Union[str, float, datetime.datetime]] 32 | A dictionary with keys: 'sensor', 'band', 'lat', 'lon', and 33 | 'date' holding the parsed information. 34 | 35 | """ 36 | name = Path(image_path).stem 37 | parts = name.split("_") 38 | sensor = parts[0] 39 | band = "_".join(parts[1:-5]) 40 | lat = parts[-4] 41 | lon = parts[-5] 42 | if pos_float: 43 | lat = float(lat) 44 | lon = float(lon) 45 | date = datetime.date(year=int(parts[-3]), month=int(parts[-2]), day=int(parts[-1].split(".")[0])) 46 | return { 47 | "sensor": sensor, 48 | "band": band, 49 | "lat": lat, 50 | "lon": lon, 51 | "date": date 52 | } 53 | 54 | 55 | def get_image_paths(image_dir: Union[str, Path], band: str)->List[Path]: 56 | """Retrieve paths to images in the passed directory that correspond to 57 | the specified sensor band. 58 | 59 | Parameters 60 | ---------- 61 | image_dir: Union[str, Path] 62 | The directory that holds image files. 63 | 64 | band: str 65 | The sensor band of interest. 66 | 67 | Return 68 | ------ 69 | List[Path] 70 | All image paths within the passed directory that correspond to 71 | the specified sensor band. 72 | """ 73 | image_paths = list(Path(image_dir).glob(f"*_{band}_*.tiff")) 74 | if not len(image_paths): 75 | raise ValueError(f"Could not find images in directory [{image_dir}] with band [{band}]") 76 | return image_paths 77 | 78 | 79 | def get_aligned_images( 80 | images1: Sequence[Union[str, Path]], 81 | images2: Sequence[Union[str, Path]], 82 | date_window: int=15 83 | ) -> Dict[Path, List[Path]]: 84 | """For each image path in images1, retrieve all spatially aligned 85 | images that were collected within +-date_window days. 86 | 87 | Parameters 88 | ---------- 89 | images1: Sequence[Union[str, Path]], len=M 90 | The paths to images to find spatially and temporally aligned images for. 91 | 92 | images2: Sequence[Union[str, Path]], len=N 93 | The paths images to search to find images aligned with images1. 94 | 95 | min_date: Optional[int] 96 | Specifies the inclusive minimum of a time window in days 97 | indicating whether two collects are close enough in time to be 98 | consdered temporally aligned. If None, there is no minimum 99 | date. 100 | 101 | max_date: Optional[np.datetime64], default=None 102 | Specifies the inclusive maximum of a time window in days 103 | indicating whether two collects are close enough in time to be 104 | consdered temporally aligned. If None, there is no maximum 105 | date. 106 | 107 | date_window: Tuple[Optional[float], Optional[float]] 108 | The minimum and non-inclusive maximum relative time window in 109 | days specifying whether two collects are close enough in time 110 | to be considered temporally aligned. If the minimum is None, 111 | there is no filter on the minimum relative date. Similarly, no 112 | maximum can be specified with a value of None. 113 | 114 | Return 115 | ------ 116 | Dict[Path, List[Path]], len=M 117 | For each image path in images1 (dictionary keys), holds paths 118 | for all spatially and temporally aligned images from images2 119 | (dictionary values). 120 | 121 | """ 122 | if len(date_window) != 2: 123 | raise ValueError(f"Expected a two element minimum and maximum relative date, not ({date_window}).") 124 | if ( 125 | date_window[0] is not None 126 | and date_window[1] is not None 127 | and date_window[0] > date_window[1] 128 | ): 129 | raise ValueError( 130 | f"The minimum date ({date_window[0]}) must not be greater than maximum date ({date_window[1]})." 131 | ) 132 | 133 | 134 | image2_data = {} 135 | for ii, image2 in enumerate(images2): 136 | image2 = Path(image2) 137 | parts = parse_filename_parts(image2, pos_float=False) 138 | key = parts["lat"] + parts["lon"] 139 | if key not in image2_data: 140 | image2_data[key] = [] 141 | image2_data[key].append((image2, parts)) 142 | 143 | aligned_images = OrderedDict() 144 | for ii, image1 in enumerate(images1): 145 | image1 = Path(image1) 146 | aligned_images[image1] = [] 147 | image1_parts = parse_filename_parts(image1, pos_float=False) 148 | key = image1_parts["lat"] + image1_parts["lon"] 149 | if key in image2_data: 150 | for image2_path, image2_parts in image2_data[key]: 151 | 152 | aligned = True 153 | if date_window[0] is not None and (image2_parts["date"] - image1_parts["date"]).days < date_window[0]: 154 | aligned = False 155 | if date_window[1] is not None and (image2_parts["date"] - image1_parts["date"]).days > date_window[1]: 156 | aligned = False 157 | if aligned: 158 | aligned_images[image1].append(image2_path) 159 | 160 | return aligned_images 161 | --------------------------------------------------------------------------------