eo-learn

Earth observation processing framework for machine learning in Python

https://github.com/sentinel-hub/eo-learn

Science Score: 33.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: researchgate.net, zenodo.org
  • Committers with academic emails
    1 of 50 committers (2.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.5%) to scientific vocabulary

Keywords

eo-data eo-research machine-learning python-package
Last synced: 6 months ago · JSON representation

Repository

Earth observation processing framework for machine learning in Python

Basic Info
Statistics
  • Stars: 1,189
  • Watchers: 43
  • Forks: 307
  • Open Issues: 4
  • Releases: 45
Topics
eo-data eo-research machine-learning python-package
Created over 7 years ago · Last pushed 12 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct

README.md

Package version Conda version Supported Python versions Build Status Docs status License Overall downloads Last month downloads Docker pulls Code coverage DOI

eo-learn

eo-learn makes extraction of valuable information from satellite imagery easy.

The availability of open Earth observation (EO) data through the Copernicus and Landsat programs represents an unprecedented resource for many EO applications, ranging from ocean and land use and land cover monitoring, disaster control, emergency services and humanitarian relief. Given the large amount of high spatial resolution data at high revisit frequency, techniques able to automatically extract complex patterns in such spatio-temporal data are needed.

eo-learn is a collection of open source Python packages that have been developed to seamlessly access and process spatio-temporal image sequences acquired by any satellite fleet in a timely and automatic manner. eo-learn is easy to use, it's design modular, and encourages collaboration -- sharing and reusing of specific tasks in a typical EO-value-extraction workflows, such as cloud masking, image co-registration, feature extraction, classification, etc. Everyone is free to use any of the available tasks and is encouraged to improve the, develop new ones and share them with the rest of the community.

eo-learn makes extraction of valuable information from satellite imagery as easy as defining a sequence of operations to be performed on satellite imagery. Image below illustrates a processing chain that maps water in satellite imagery by thresholding the Normalised Difference Water Index in user specified region of interest.

eo-learn library acts as a bridge between Earth observation/Remote sensing field and Python ecosystem for data science and machine learning. The library is written in Python and uses NumPy arrays to store and handle remote sensing data. Its aim is to make entry easier for non-experts to the field of remote sensing on one hand and bring the state-of-the-art tools for computer vision, machine learning, and deep learning existing in Python ecosystem to remote sensing experts.

Package Overview

eo-learn package is structured into several modules according to different functionalities. Some modules contain extensions under the extra subfolder. Those modules typically require additional package dependencies which don't get installed by default, since they are usually very specific to the task.

The modules are:

  • core - The main module which implements basic building blocks (EOPatch, EOTask and EOWorkflow) and commonly used functionalities.
  • coregistration - Tasks which deal with image co-registration.
  • features - A collection of utilities for extracting data properties and feature manipulation.
  • geometry - Geometry-related tasks used for transformation and conversion between vector and raster data.
  • io - Input/output tasks that deal with obtaining data from Sentinel Hub services or saving and loading data locally.
  • mask - Tasks used for masking of data and calculation of cloud/snow/other masks.
  • ml-tools - Various tools that can be used before or after the machine learning process.
  • visualization - Visualization tools for the core elements of eo-learn.

Installation

Requirements

The package requires Python version >=3.8.

Linux

Before installing eo-learn on Linux it is recommended to install the following system libraries:

bash sudo apt-get install gcc libgdal-dev graphviz proj-bin libproj-dev libspatialindex-dev

Mac OS

Before installing eo-learn on Mac OS it is recommended to install the following system libraries with Homebrew:

bash brew install graphviz gcc gdal cmake spatialindex proj

Windows

Before installing eo-learn on Windows it is recommended to install the following packages from Unofficial Windows wheels repository:

bash gdal rasterio shapely fiona

PyPI distribution

eo-learn is available on PyPI and can be installed with:

bash pip install eo-learn

For some modules there are extra dependencies available, related to specific tasks. These were kept separate in order to keep the eo-learn installation light. You can install these with, e.g.:

bash pip install "eo-learn[EXTRA]" pip install "eo-learn[VISUALIZATION]"

The full list (including their descriptions) is available here:

  • RAY for installing ray and its dependencies
  • ZARR for installing the zarr functionality for chunked timestamp saving/loading
  • EXTRA for installing interpolation- and clustering-specific dependencies, or for installing s2cloudless in cloud masking
  • VISUALIZATION for using plotting libraries and utilities
  • FULL for installing all dependencies described so far
  • DOCS for developers, dependencies for building documentation
  • DEV for developers, dependencies for testing and code contribution

Conda Forge distribution

The package requires a Python environment >=3.8.

Thanks to the maintainers of the conda forge feedstock (@benhuff, @dcunn, @mwilson8, @oblute, @rluria14), eo-learn can be installed using conda-forge as follows:

bash conda config --add channels conda-forge conda install eo-learn

Run with Docker

A docker image with the latest released version of eo-learn is available at Docker Hub. It provides a full installation of eo-learn together with a Jupyter notebook environment. You can pull and run it with:

bash docker pull sentinelhub/eolearn:latest docker run -p 8888:8888 sentinelhub/eolearn:latest

An extended version of the latest image additionally contains all example notebooks and data to get you started with eo-learn. Run it with:

bash docker pull sentinelhub/eolearn:latest-examples docker run -p 8888:8888 sentinelhub/eolearn:latest-examples

Both docker images can also be built manually from GitHub repository:

bash docker build -f docker/eolearn.dockerfile . --tag=sentinelhub/eolearn:latest docker build -f docker/eolearn-examples.dockerfile . --tag=sentinelhub/eolearn:latest-examples

Documentation

For more information on the package content, visit readthedocs.

More Examples

Examples and introductions to the package can be found here. A larger collection of examples is available at the eo-learn-examples repository. While the examples there are not always up-to-date they can be a great source of ideas.

In the past, eo-learn served as a collection of many useful tasks, originating from various contributors or projects. In order to keep eo-learn light and easy to maintain, we have decided to move these specific tasks to eo-learn-examples/extra-tasks, .

Contributions

The list of all eo-learn contributors are listed in the credits file. If you would like to contribute to eo-learn, please check our contribution guidelines.

Blog posts and papers

Questions and Issues

Feel free to ask questions about the package and its use cases at Sentinel Hub forum or raise an issue on GitHub.

You are welcome to send your feedback to the package authors, EO Research team, through any of Sentinel Hub communication channel.

License

See LICENSE.

Acknowledgements

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreements No. 776115, No. 101004112, No. 101059548 and No. 101086461.

Owner

  • Name: Sentinel Hub
  • Login: sentinel-hub
  • Kind: organization
  • Email: info@sentinel-hub.com

Sentinel Hub services by Sinergise Solutions d.o.o.

GitHub Events

Total
  • Issues event: 1
  • Watch event: 64
  • Delete event: 1
  • Issue comment event: 5
  • Push event: 4
  • Pull request review event: 7
  • Pull request review comment event: 7
  • Pull request event: 3
  • Fork event: 11
  • Create event: 2
Last Year
  • Issues event: 1
  • Watch event: 64
  • Delete event: 1
  • Issue comment event: 5
  • Push event: 4
  • Pull request review event: 7
  • Pull request review comment event: 7
  • Pull request event: 3
  • Fork event: 11
  • Create event: 2

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 1,983
  • Total Committers: 50
  • Avg Commits per committer: 39.66
  • Development Distribution Score (DDS): 0.65
Past Year
  • Commits: 15
  • Committers: 3
  • Avg Commits per committer: 5.0
  • Development Distribution Score (DDS): 0.4
Top Committers
Name Email Commits
AleksMat m****v@s****m 695
Žiga Lukšič 3****c 317
Matic Lubej m****j@s****m 203
iovsn j****c@s****m 126
Andrej Burja a****a@g****m 98
Devis Peressutti d****i@s****m 82
Tomi Slijepcevic t****c@g****m 54
Anze Zupanc a****c@s****m 50
Lojze Zust l****t@s****m 49
Matej Batič m****c@s****m 48
jgersak 1****k 41
ouellette w****e@g****m 27
gmilcinski g****i@s****m 22
Beno Šircelj b****j@g****m 20
nvesel n****l@s****m 19
Drew Bollinger d****w@d****g 17
schmid s****d@g****m 11
dkorais d****s@s****m 11
eerzin e****n@s****m 9
Alexander Sylvester a****r@N****l 7
Peter Fogh f****h@s****k 7
Zhuangfang Yi g****i@g****m 7
Filip Koprivec k****p@g****m 6
Hugo h****r@m****r 6
wouellette W****e@t****m 6
JohannesSchmid h****2@g****e 5
Maxim Lamare m****e@s****m 4
nvesel S****S 3
Andrew Tedstone a****e@u****h 3
fredericschwarz f****z@m****m 2
and 20 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 23
  • Total pull requests: 242
  • Average time to close issues: 5 months
  • Average time to close pull requests: 24 days
  • Total issue authors: 16
  • Total pull request authors: 12
  • Average comments per issue: 4.26
  • Average comments per pull request: 0.58
  • Merged pull requests: 224
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 6
  • Average time to close issues: about 6 hours
  • Average time to close pull requests: about 11 hours
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mlubej (4)
  • afolabi022 (3)
  • zigaLuksic (2)
  • j-desloires (2)
  • piranha32 (1)
  • idantene (1)
  • jucor (1)
  • NourSoltani (1)
  • UrielM21 (1)
  • konstantinos2018 (1)
  • lamb-dao (1)
  • sbrisson-sudo (1)
  • m0rp43us (1)
  • fuckingsore (1)
Pull Request Authors
  • zigaLuksic (159)
  • mlubej (41)
  • jgersak (24)
  • batic (4)
  • meengel (2)
  • jO-Osko (2)
  • chorng (2)
  • bsircelj (2)
  • tsuligoj (1)
  • drewbo (1)
  • ColinMoldenhauer (1)
Top Labels
Issue Labels
help wanted (7) question (7) bug (6) enhancement (4)
Pull Request Labels
enhancement (2) feedback required (2)

Packages

  • Total packages: 19
  • Total downloads:
    • pypi 4,525 last-month
  • Total docker downloads: 324
  • Total dependent packages: 45
    (may contain duplicates)
  • Total dependent repositories: 176
    (may contain duplicates)
  • Total versions: 461
  • Total maintainers: 5
pypi.org: eo-learn

Earth observation processing framework for machine learning in Python

  • Homepage: https://github.com/sentinel-hub/eo-learn
  • Documentation: https://eo-learn.readthedocs.io
  • License: MIT License Copyright (c) 2017-2022 Matej Aleksandrov, Matej Batič, Grega Milčinski, Domagoj Korais, Miha Kadunc (Sinergise) Copyright (c) 2017-2022 Matic Lubej, Žiga Lukšič, Devis Peressutti, Tomislav Slijepčević, Nejc Vesel (Sinergise) Copyright (c) 2017-2022 Jovan Višnjić, Anže Zupanc (Sinergise) Copyright (c) 2019-2020 Jernej Puc, Lojze Žust (Sinergise) Copyright (c) 2017-2019 Blaž Sovdat, Andrej Burja, Eva Erzin (Sinergise) Copyright (c) 2018-2019 Hugo Fournier (Magellium) Copyright (c) 2018-2020 Filip Koprivec, Beno Šircelj (Jožef Stefan Institute) Copyright (c) 2018-2020 William Ouellette Copyright (c) 2018-2019 Johannes Schmid (GeoVille) Copyright (c) 2019 Drew Bollinger (DevelopmentSeed) 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: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 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.
  • Latest release: 1.5.7
    published over 1 year ago
  • Versions: 47
  • Dependent Packages: 8
  • Dependent Repositories: 21
  • Downloads: 1,898 Last month
  • Docker Downloads: 36
Rankings
Dependent packages count: 1.1%
Stargazers count: 2.0%
Docker downloads count: 2.0%
Average: 2.8%
Forks count: 3.0%
Dependent repos count: 3.2%
Downloads: 5.8%
Maintainers (4)
Last synced: 6 months ago
pypi.org: eo-learn-core

Core Machine Learning Framework at Sinergise

  • Versions: 37
  • Dependent Packages: 9
  • Dependent Repositories: 34
  • Downloads: 454 Last month
  • Docker Downloads: 36
Rankings
Dependent packages count: 1.0%
Stargazers count: 2.0%
Docker downloads count: 2.0%
Dependent repos count: 2.5%
Forks count: 3.0%
Average: 3.3%
Downloads: 8.9%
Last synced: 6 months ago
pypi.org: eo-learn-geometry

A collection of geometry EOTasks and utilities

  • Versions: 32
  • Dependent Packages: 2
  • Dependent Repositories: 24
  • Downloads: 340 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Dependent repos count: 3.0%
Forks count: 3.0%
Dependent packages count: 3.1%
Average: 3.7%
Downloads: 9.2%
Last synced: 6 months ago
pypi.org: eo-learn-io

A collection of input/output EOTasks and utilities

  • Versions: 38
  • Dependent Packages: 2
  • Dependent Repositories: 19
  • Downloads: 321 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Forks count: 3.0%
Dependent packages count: 3.1%
Dependent repos count: 3.3%
Average: 3.8%
Downloads: 9.2%
Last synced: 6 months ago
pypi.org: eo-learn-features

A collection of feature manipulation EOTasks and utilities

  • Versions: 32
  • Dependent Packages: 2
  • Dependent Repositories: 17
  • Downloads: 354 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Forks count: 3.0%
Dependent packages count: 3.1%
Dependent repos count: 3.5%
Average: 3.8%
Downloads: 9.2%
Last synced: 6 months ago
pypi.org: eo-learn-visualization

A collection of visualization utilities

  • Versions: 25
  • Dependent Packages: 2
  • Dependent Repositories: 13
  • Downloads: 269 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Forks count: 3.0%
Dependent packages count: 3.1%
Average: 3.8%
Dependent repos count: 4.0%
Downloads: 8.7%
Maintainers (3)
Last synced: 6 months ago
pypi.org: eo-learn-mask

A collection of masking EOTasks and utilities

  • Versions: 30
  • Dependent Packages: 2
  • Dependent Repositories: 16
  • Downloads: 313 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Forks count: 3.0%
Dependent packages count: 3.1%
Dependent repos count: 3.6%
Average: 3.8%
Downloads: 9.1%
Last synced: 6 months ago
pypi.org: eo-learn-ml-tools

A collection of machine learning EOTasks and utilities

  • Versions: 27
  • Dependent Packages: 2
  • Dependent Repositories: 16
  • Downloads: 293 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Forks count: 3.0%
Dependent packages count: 3.1%
Dependent repos count: 3.6%
Average: 3.8%
Downloads: 9.2%
Last synced: 6 months ago
pypi.org: eo-learn-coregistration

A collection of image co-registration EOTasks

  • Versions: 26
  • Dependent Packages: 1
  • Dependent Repositories: 16
  • Downloads: 283 Last month
  • Docker Downloads: 36
Rankings
Stargazers count: 2.0%
Docker downloads count: 2.0%
Forks count: 3.0%
Dependent repos count: 3.6%
Average: 4.1%
Dependent packages count: 4.7%
Downloads: 9.2%
Last synced: 6 months ago
proxy.golang.org: github.com/sentinel-hub/eo-learn
  • Versions: 46
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 6.9%
Last synced: 6 months ago
conda-forge.org: eo-learn-core
  • Versions: 18
  • Dependent Packages: 8
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.1%
Forks count: 9.5%
Stargazers count: 11.9%
Average: 15.6%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-features
  • Versions: 15
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-ml-tools
  • Versions: 11
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-visualization
  • Versions: 15
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-coregistration
  • Versions: 12
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-geometry
  • Versions: 10
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-io
  • Versions: 13
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn-mask
  • Versions: 14
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 21.1%
Dependent packages count: 28.8%
Dependent repos count: 34.0%
Last synced: 6 months ago
conda-forge.org: eo-learn
  • Versions: 13
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 9.5%
Stargazers count: 11.9%
Average: 26.6%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

.github/workflows/ci_action.yml actions
  • SvanBoxel/gitlab-mirror-and-ci-action master composite
  • actions/checkout v2 composite
  • actions/checkout v1 composite
  • actions/setup-python v2 composite
  • codecov/codecov-action v2 composite
.github/workflows/docker_action.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • peter-evans/dockerhub-description v2 composite
.github/workflows/scheduled_caller.yml actions
pyproject.toml pypi
  • affine *
  • boto3 *
  • fiona >=1.8.18
  • fs *
  • fs-s3fs *
  • geopandas >=0.11.0
  • numpy >=1.20.0
  • opencv-python-headless *
  • python-dateutil *
  • rasterio >=1.2.7, <1.3.8
  • sentinelhub >=3.9.0
  • shapely *
  • tqdm >=4.27
  • typing-extensions *
.github/workflows/ci_trigger.yml actions
  • SvanBoxel/gitlab-mirror-and-ci-action master composite
  • actions/checkout v1 composite
docs/environment.yml pypi
  • Sphinx ==7.1.2
  • jupyter *
  • nbsphinx *
  • sphinx_mdinclude *
  • sphinx_rtd_theme ==1.3.0