Skip to content

Commit bb8bc38

Browse files
committed
merge with develop
2 parents a04776b + a12fdee commit bb8bc38

File tree

153 files changed

+4568
-451
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+4568
-451
lines changed

.github/workflows/ci.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ jobs:
135135
python -m coverage report
136136
137137
- name: Upload coverage to Codecov
138-
uses: codecov/codecov-action@v3
138+
uses: codecov/codecov-action@v4
139139
with:
140140
files: coverage.xml
141141
deploy:

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ polytope_venv_latest
2525
new_updated_numpy_venv
2626
newest-polytope-venv
2727
serializedTree
28+
new_polytope_venv
File renamed without changes.

docs/Overview/Overview.md renamed to docs/Algorithm/Overview/Overview.md

+10-11
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,29 @@ Developed by ECMWF - the European Centre for Medium-Range Weather Forecasts - it
1010

1111
### Traditional Extraction Techniques
1212

13-
Traditional data extraction techniques only allow users to access datacubes "orthogonally" by selecting specific values or ranges along datacube dimensions.
14-
Such data access mechanisms can be seen as extracting so-called "bounding boxes" of data.
15-
These mechanisms are quite limited however as many user requests cannot be formulated using bounding boxes.
13+
Traditional data extraction techniques only allow users to access boxes of data from datacubes.
14+
These techniques are quite restrictive however as many user requests cannot be formulated using such boxes.
1615

1716
!!!note "Example"
1817

19-
Imagine for example someone interested in extracting temperature data over the shape of France.
20-
France is not a box shape over latitude and longitude.
21-
Using current extraction techniques, this exact request would therefore be impossible and users would instead need to request a bounding box around France.
18+
Imagine for example someone interested in extracting wind data over the Mediterranean sea.
19+
The Mediterranean is not a box shape over latitude and longitude.
20+
Using current extraction techniques, this exact request would therefore be impossible and users would instead need to request a bounding box around the Mediterranean.
2221
The user would thus get back much more data than he truly needs.
2322

2423
In higher dimensions, this becomes an even bigger challenge with only tiny fractions of the extracted data being useful to users.
2524

2625
### Polytope Extraction Technique
2726

28-
As an alternative, Polytope enables users to access datacubes "non-orthogonally".
29-
Instead of extracting bounding boxes of data, Polytope has the capability of querying high-dimensional "polytopes" along several axes of a datacube.
30-
This is much less restrictive than the popular bounding box approach described before.
27+
Instead, Polytope enables users to access high-dimensional "polytopes" from datacubes, rather than only boxes of data.
28+
<!-- Instead of extracting bounding boxes of data, Polytope has the capability of querying high-dimensional "polytopes" along several axes of a datacube. -->
29+
<!-- This is much less restrictive than the popular bounding box approach described before. -->
3130

3231
!!!note "Example"
3332

34-
Using Polytope, extracting the temperature over just the shape of France is now trivially possible by specifying the right polytope.
33+
Using Polytope, extracting the temperature over just the shape of the Mediterranean is now trivially possible by specifying the right polytope.
3534
This returns much less data than by using a bounding box approach.
3635

3736
These polytope-based requests do in fact allow Polytope to fulfill its two main aims.
38-
Indeed, because polytope requests return only the exact data users need, they significantly reduce I/O usage as less data has to be transmitted.
37+
Indeed, because polytope requests return only the data users need, they significantly reduce I/O usage as less data has to be transmitted.
3938
Moreover, because only the data inside the requested polytope is returned, this method completely removes the challenge of post-processing on the user side, as wanted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Building Features
2+
3+
The Polytope software implements a set of base shapes that might be of interest to users. These are detailed [here](../Developer_Guide/shapes.md).
4+
5+
For many applications however, these shapes are not directly of interest and should rather be used as building blocks for more complex and domain-specific "features", such as timeseries or country areas.
6+
7+
The main requirement when building such features in Polytope is that the feature should be defined on all dimensions of the provided datacube.
8+
This implies that, when defining lower-dimensional shapes in higher-dimensional datacubes, the remaining axes still need to be specified within the Polytope request (most likely as *Select* shapes).
9+
10+
For example, for a given datacube with dimensions "level", "step", "latitude" and "longitude", we could query the following shapes:
11+
12+
- a timeseries of a point which would be defined as
13+
14+
Request(
15+
Point(["latitude", "longitude"], [[p1_lat, p1_lon]]),
16+
Span("step", start_step, end_step),
17+
Select("level", [level1])
18+
)
19+
20+
21+
- a specific country area which would be defined as
22+
23+
Request(
24+
Polygon(["latitude", "longitude"], country_points),
25+
Select("step", [step1]),
26+
Select("level", [level1])
27+
)
28+
29+
- a flight path which would be defined as
30+
31+
Request(
32+
Path(
33+
["latitude", "longitude", "level", "step"],
34+
Box(
35+
["latitude", "longitude", "level", "step"],
36+
[0, 0, 0, 0],
37+
[lat_padding, lon_padding, level_padding, step_padding]
38+
),
39+
flight_points
40+
)
41+
)

docs/User_Guide/Example.md renamed to docs/Algorithm/User_Guide/Example.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Example
22
Here is a step-by-step example of how to use the Polytope software.
33

4-
1. In this example, we first specify the data which will be in our Xarray datacube. Note that the data here comes from the GRIB file called "winds.grib", which is 3-dimensional with dimensions: step, latitude and longitude.
4+
1. In this example, we first specify the data which will be in our XArray datacube. Note that the data here comes from the GRIB file called "winds.grib", which is 3-dimensional with dimensions: step, latitude and longitude.
55

66
import xarray as xr
77

docs/User_Guide/Getting_started.md renamed to docs/Algorithm/User_Guide/Getting_started.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ or from PyPI with the command
2626

2727
Polytope's tests and examples require some additional dependencies compared to the main Polytope software.
2828

29-
- **Git Large File Storage**
29+
<!-- - **Git Large File Storage**
3030
3131
Polytope uses Git Large File Storage (LFS) to store large data files used in its tests and examples.
3232
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.
3333
Once Git LFS is installed, individual data files can be downloaded using the command
3434
35-
git lfs pull --include="*" --exclude=""
35+
git lfs pull --include="*" --exclude="" -->
3636

3737
- **Additional Dependencies**
3838

docs/User_Guide/Overview.md renamed to docs/Algorithm/User_Guide/Overview.md

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ For a quick guide of how to install and use Polytope, refer to the links below:
1515

1616
- <a href="../Example">Example</a>
1717

18+
- <a href="../Building_Features">Building Features</a>
19+
1820
!!!note
1921
<!-- For more information about Polytopes' APIs, refer to the [API page](../Developer_Guide/API.md). -->
2022
An exhaustive list of all shapes that can currently be requested using Polytope can be found [here](../Developer_Guide/shapes.md).

docs/Service/Data_Portfolio.md

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Data Portfolio
2+
3+
Polytope feature extraction only has access to data that is stored on an FDB. The dataset currently available via Polyope feature extraction is the operational forecast. We plan to add Destination Earth Digital Twin data in the future.
4+
5+
## Operational Forecast Data
6+
7+
The following values available for each field specified are:
8+
9+
* `class` : `od`
10+
* `stream` : `enfo` `oper`
11+
* `type` : `fc` `pf` `cf`
12+
* `levtype` : `sfc` `pl` `ml`
13+
* `expver` : `0001`
14+
* `domain` : `g`
15+
* `step` : `0/to/360` (All steps may not be available between `0` and `360`)
16+
17+
If `type` is `enfo`:
18+
19+
* `number` : `0/to/50`
20+
21+
If `levtype` is `pl` or `ml` a `levelist` must be provided:
22+
23+
* `levelist` : `1/to/1000`
24+
25+
`pl` and `ml` also only contain a subset of parameters that are available in grid point. These are:
26+
27+
* `pl`
28+
* `o3`
29+
* `clwc`
30+
* `q`
31+
* `pv`
32+
* `ciwc`
33+
* `cc`
34+
* `ml`
35+
* `q`
36+
* `cat`
37+
* `o3`
38+
* `clwc`
39+
* `ciwc`
40+
* `cc`
41+
* `cswc`
42+
* `crwe`
43+
* `ttpha`
44+
45+
For `sfc` most `params` will be available but not all.
46+
47+
Only data that is contained in the operational FDB can be requested via Polytope feature extraction, the FDB usually only contains the last two days of forecasts.
48+
49+
We sometimes limit the size of requests for area features such as bounding box and polygon to maintain quality of service.
50+
51+
Access to operational data is limited by our release schedule.

0 commit comments

Comments
 (0)