Skip to main content

Generic Earth Observation multiprocessing Python framework

Project description

EOSCALE

What is the purpose ?

A situation we have come accross very frequently as remote sensing engineer at CNES is the need to keep one or multiple NumPy arrays in memory for processing large satellite images in a parallel environnement that can be distributed or not.

Because Python multithreading is not simultaneous and not designed for maximising the use of CPUs (I recommend this nice youtube video), we choose Python multiprocessing module for scaling our algorithms.

However, having to use multiple processes means some complexity when it comes to sharing easily large image rasters and their metadata. Fortunately since Python 3.8+, the concept of shared_memory has been introduced to share data structures between processes. It relies on posix mmap2 under the hood.

EOScale relies on this concept to store and share large satellite images and their metadatas between processes without duplicating memory space.

Currently, EOScale provides 2 paradigms:

  • A generic N image to M image filter that uses a tiling strategy with the concept of stability margin to parallelize local dependency algorithms while ensuring identical results. All the complexity is done for you, you just have to define your algorithm as a callable function that takes as input a list of numpy arrays, a list of their corresponding image metadata and your filter parameters as a Python dictionnary and that is all !
  • A generic N image to M scalars that can returns anything that can be concatenated in a Map/Reduce paradigm. For example a histogram or statiscal values such as min, max or average.

Your pipeline in memory !

One other great advantage of EOScale is how easy it is to chain your filters through your pipeline in memory and again while minimizing your memory footprint. This allows your programs to be more efficient and less consuming regarding your energy footprint.

Want to use it ?

Just clone this repo and pip install it ;)

The only requirement is to use a version of Python greater or equal than 3.8

Quick start: run the example

Look at the source file pipeline.py in the directory eoscale/examples/ to see how to use EOScale.

From the root directory of eoscale, you can run:

python examples/pipeline.py

Want to contribute ?

Here’s how it generally works:

  1. Clone the project.
  2. Create a topic branch from master.
  3. Make some commits to improve the project.
  4. Open a Merge Request when your are done.
  5. The project owners will examine your features and corrections.
  6. Discussion with the project owners about those commits
  7. The project owners merge to master and close the merge request.

Actual project owner: Pierre Lassalle

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eoscale-1.0.0.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eoscale-1.0.0-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file eoscale-1.0.0.tar.gz.

File metadata

  • Download URL: eoscale-1.0.0.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.13

File hashes

Hashes for eoscale-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3bb6aef22a044aba4e8d676a218e18a4ef75d1a73989502735d3ea44ac14741f
MD5 0a5ecd048fa55a199a974826aedeccab
BLAKE2b-256 e46678976dfd761b0fd4efa306b45c4bd99b927da3bd21e98e4e7ce3a2e44f6b

See more details on using hashes here.

File details

Details for the file eoscale-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: eoscale-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 30.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.13

File hashes

Hashes for eoscale-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6d0f9b23427dd2a5bc816a26f1f4327e766431afadbbd39eca6f787a196757d
MD5 d76a489132969524aa40d360c6f3b685
BLAKE2b-256 c5b78872b77ba01de6acec078e7554e0b8a2f049d8211f8d054a673aa090c75c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page