diff --git a/readme.md b/readme.md index 48dba68f..2f3ec439 100644 --- a/readme.md +++ b/readme.md @@ -22,48 +22,41 @@ Documentation

-Polytope is a library for extracting complex data from datacubes. It provides an API for non-orthogonal access to data, where the stencil used to extract data from the datacube can be any arbitrary n-dimensional polygon (called a *polytope*). This can be used to efficiently extract complex features from a datacube, such as polygon regions or spatio-temporal paths. +Polytope is a library for extracting complex data from datacubes. It provides an API for non-orthogonal access to data, where the stencil used to extract data from the datacube can be any arbitrary *n*-dimensional polygon (called a *polytope*). This can be used to efficiently extract complex features from a datacube, such as polygon regions or spatio-temporal paths. -Polytope is designed to extend different datacube backends. -* Xarray dataarrays -* FDB object stores (coming soon) +Polytope is designed to extend different datacube backends: +* XArray dataarrays +* FDB object stores (through the GribJump software) -Polytope supports datacubes which have branching, non-uniform indexing, and even cyclic axes. If the datacube backend supports byte-addressability and efficient random access (either in-memory or direct from storage), *polytope* can be used to dramatically decrease overall I/O load. +Polytope supports datacubes which have branching, non-uniform indexing, and even cyclic axes. If the datacube backend supports byte-addressability and efficient random access (either in-memory or direct from storage), **Polytope** can be used to dramatically decrease overall I/O load. - -| :warning: This project is BETA and will be experimental for the foreseeable future. Interfaces and functionality are likely to change. DO NOT use this software in any project/software that is operational. | -|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +> [!WARNING] +> This project is BETA and will be experimental for the forseable future. Interfaces and functionality are likely to change, and the project itself may be scrapped. DO NOT use this software in any project/software that is operational. ## Concept -Polytope is designed to enable extraction of arbitrary extraction of data from a datacube. Instead of the typical range-based bounding-box approach, Polytope can extract any shape of data from a datacube using a "polytope" (n-dimensional polygon) stencil. +Polytope is designed to enable extraction of arbitrary extraction of data from a datacube. Instead of the typical range-based bounding-box approach, Polytope can extract any shape of data from a datacube using a "polytope" (*n*-dimensional polygon) stencil. -

Polytope Concept

- The Polytope algorithm can for example be used to extract: - 2D cut-outs, such as country cut-outs, from a datacube -

Greece cut-out

- - timeseries from a datacube

Timeseries

- - more complicated spatio-temporal paths, such as flight paths, from a datacube

Flight path

- - and many more high-dimensional shapes in arbitrary dimensions... @@ -93,11 +86,11 @@ Here is a step-by-step example of how to use this software. We then construct the Polytope object, passing in some additional metadata describing properties of the longitude axis. ```Python - options = {"longitude": {"Cyclic": [0, 360.0]}} + options = {"longitude": {"cyclic": [0, 360.0]}} from polytope.polytope import Polytope - p = Polytope(datacube=array, options=options) + p = Polytope(datacube=array, axis_options=options) ``` 2. Next, we create a request shape to extract from the datacube. @@ -139,25 +132,12 @@ Here is a step-by-step example of how to use this software. ↳longitude=1.0 ``` - - ## Testing -#### Git Large File Storage - -Polytope uses Git Large File Storage (LFS) to store large data files used in its tests and examples. -To run the tests and examples, it is thus necessary to install Git LFS, by following instructions provided [here](https://docs.github.com/en/repositories/working-with-files/managing-large-files/installing-git-large-file-storage) for example. -Once Git LFS is installed, individual data files can be downloaded using the command - - git lfs pull --include="*" --exclude="" - #### Additional Dependencies The Polytope tests and examples require additional Python packages compared to the main Polytope algorithm. -The additional dependencies are provided in the requirements_test.txt and requirements_examples.txt files, which can respectively be found in the examples and tests folders. +The additional dependencies are provided in the requirements_test.txt and requirements_examples.txt files, which can respectively be found in the tests and examples folders. Moreover, Polytope's tests and examples also require the installation of eccodes and GDAL. It is possible to install both of these dependencies using either a package manager or manually. diff --git a/requirements_example.txt b/requirements_example.txt new file mode 100644 index 00000000..e69de29b