polytope-python 2.1.1__tar.gz → 2.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.pre-commit-config.yaml +6 -3
- {polytope_python-2.1.1/polytope_python.egg-info → polytope_python-2.1.3}/PKG-INFO +7 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/README.md +6 -6
- polytope_python-2.1.3/docs/Client/Overview.md +29 -0
- polytope_python-2.1.3/docs/Service/Examples/OpenData/od_polygon_example.ipynb +675 -0
- polytope_python-2.1.3/docs/Service/Examples/OpenData/od_timeseries_example.ipynb +188 -0
- polytope_python-2.1.3/docs/Service/Examples/circle_example.ipynb +758 -0
- polytope_python-2.1.3/docs/Service/Examples/climate_dt_example.ipynb +224 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/examples.md +17 -3
- polytope_python-2.1.3/docs/Service/Examples/extremes_dt_example.ipynb +188 -0
- polytope_python-2.1.3/docs/Service/Examples/on-demand_dt_example.ipynb +189 -0
- polytope_python-2.1.3/docs/Service/Examples/opendata_example.ipynb +224 -0
- polytope_python-2.1.3/docs/Service/Examples/operational_example.ipynb +225 -0
- polytope_python-2.1.3/docs/Service/Examples/position_example.ipynb +131 -0
- polytope_python-2.1.3/docs/Service/Features/circle.md +53 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Features/feature.md +4 -2
- polytope_python-2.1.3/docs/Service/Features/position.md +49 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Features/timeseries.md +1 -1
- polytope_python-2.1.3/docs/Service/Full_fields.md +176 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Installation.md +25 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Overview.md +2 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/index.md +16 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/3D_shipping_route.py +23 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/3D_shipping_route_wave_model.py +17 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/4D_flight_path.py +36 -10
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/country_slicing.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/cyclic_route_around_earth.py +6 -2
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/healpix_grid_box_example.py +18 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/octahedral_grid_box_example.py +9 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/octahedral_grid_country_example.py +9 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/plotting_country_data.py +2 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/read_me_example.py +5 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/slicing_all_ecmwf_countries.py +6 -2
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/wind_farms.py +9 -3
- polytope_python-2.1.3/mkdocs.yml +54 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/fdb_performance.py +11 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/fdb_performance_3D.py +11 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/fdb_slice_many_numbers_timeseries.py +25 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/performance_many_num_steps.py +7 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/plotting_scalability.py +20 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/scalability_test.py +54 -18
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/scalability_test_2.py +19 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance_unstructured/octahedral_vs_unstructured_slicing.py +50 -11
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance_unstructured/plot_structured_vs_unstructured_slicing.py +28 -8
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/_version.py +1 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/backends/datacube.py +15 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/backends/fdb.py +89 -30
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/backends/xarray.py +1 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/datacube_axis.py +22 -9
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/index_tree_pb2.py +1 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/quadtree/quad_tree.py +21 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/quadtree/quadtree_additional_operations.py +21 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/tensor_index_tree.py +20 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_cyclic/datacube_cyclic.py +12 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/datacube_mappers.py +4 -2
- polytope_python-2.1.3/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix.py +48 -11
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix_nested.py +63 -16
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/icon.py +0 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/lambert_conformal.py +25 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/local_regular.py +26 -8
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/octahedral.py +38 -12
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_gaussian.py +41 -10
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +30 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/regular.py +33 -8
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_merger/datacube_merger.py +10 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_reverse/datacube_reverse.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_transformations.py +18 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_type_change/datacube_type_change.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/engine.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/hullslicer.py +72 -17
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/optimised_point_in_polygon_slicer.py +6 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/optimised_quadtree_slicer.py +8 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/point_in_polygon_slicer.py +6 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/quadtree_slicer.py +14 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/slicing_tools.py +9 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/options.py +6 -2
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/polytope.py +23 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/shapes.py +27 -6
- polytope_python-2.1.3/polytope_feature/utility/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/utility/engine_tools.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/utility/exceptions.py +8 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/utility/geometry.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3/polytope_python.egg-info}/PKG-INFO +7 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_python.egg-info/SOURCES.txt +15 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/pyproject.toml +0 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/conftest.py +31 -8
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/quadtree_slicer_profiler.py +14 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_axis_mappers.py +20 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_bad_request_error.py +25 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_cyclic_axis_over_negative_vals.py +39 -9
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_cyclic_axis_slicer_not_0.py +39 -9
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_cyclic_axis_slicing.py +50 -14
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_cyclic_nearest.py +28 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_cyclic_simple.py +11 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_cyclic_snapping.py +6 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_datacube_axes_init.py +49 -12
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_datacube_xarray.py +36 -9
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_date_time_unmerged.py +33 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_ecmwf_oper_data_fdb.py +65 -15
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_engine_slicer.py +15 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_fdb_datacube.py +31 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_fdb_unmap_tree.py +31 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_float_type.py +18 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_healpix_mapper.py +32 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_healpix_nested_grid.py +60 -15
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_hull_slicer.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_icon_grid_unstructured.py +7 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_icon_grid_unstructured_fdb.py +7 -2
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_incomplete_tree_fdb.py +25 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_lambert_lam_grid_unstructured_fdb.py +24 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_lambert_lam_grid_unstructured_fdb_optimised_quadtree.py +22 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_local_grid_cyclic.py +25 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_local_regular_grid.py +21 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_local_swiss_grid.py +24 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_mappers.py +23 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_merge_cyclic_octahedral.py +19 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_merge_octahedral_one_axis.py +30 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_merge_transformation.py +6 -2
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_multiple_param_fdb.py +28 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_octahedral_grid.py +35 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_orca_irregular_grid.py +9 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_orca_irregular_grid_optimised_point_in_polygon.py +9 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_orca_irregular_grid_point_in_polygon.py +9 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_override_md5_hash_options.py +28 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_point_nearest.py +47 -11
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_point_shape.py +16 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_point_union.py +43 -11
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_polytope_extract.py +4 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_polytope_extract_fdb.py +26 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_profiling_requesttree.py +4 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_quad_tree.py +66 -14
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_quadtree_edge_cases.py +32 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_quadtree_indices.py +59 -14
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_quadtree_optimisation.py +23 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_reduced_ll_grid.py +21 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_regular_grid.py +22 -6
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_regular_reduced_grid.py +22 -5
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_request_tree.py +3 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_reverse_transformation.py +6 -1
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_shapes.py +44 -9
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slice_date_range_fdb.py +52 -13
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slice_date_range_fdb_v2.py +34 -8
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slice_fdb_box.py +31 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slicer_era5.py +19 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slicer_xarray.py +13 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slicing_unsliceable_axis.py +19 -4
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slicing_xarray_3D.py +125 -34
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slicing_xarray_4D.py +102 -24
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_snapping.py +25 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_snapping_real_data.py +16 -3
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_tree_protobuf_encoding.py +9 -2
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_tree_protobuf_encoding_fdb.py +31 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_type_change_transformation.py +28 -8
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_union_gj.py +40 -10
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_union_point_box.py +31 -7
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_wave_spectra_data.py +32 -7
- polytope_python-2.1.1/mkdocs.yml +0 -44
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.github/ci-config.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.github/ci-hpc-config.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.github/workflows/cd.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.github/workflows/downstream-ci.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.github/workflows/label-public-pr.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.github/workflows/test-pypi.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.gitignore +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/.readthedocs.yaml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/ACKNOWLEDGEMENTS.rst +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/CONTRIBUTING.rst +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/LICENSE +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/Makefile +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/codecov.yml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/API.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/Axis_types.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/Datacube.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/Overview.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/Slicer.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/images/Polytope_APIs_3.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/images/polytope_components_5.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/images/slicing_process.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Developer_Guide/shapes.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Overview/Overview.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Overview/Polytope_at_ECMWF.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Overview/images_overview/ecmwf_datacube.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/Overview/images_overview/ecmwf_polytope.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/User_Guide/Building_Features.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/User_Guide/Example.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/User_Guide/Getting_started.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/User_Guide/Overview.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Algorithm/User_Guide/images_users/shipping_route.png +0 -0
- /polytope_python-2.1.1/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/__init__.py → /polytope_python-2.1.3/docs/Server/Design.md +0 -0
- /polytope_python-2.1.1/polytope_feature/utility/__init__.py → /polytope_python-2.1.3/docs/Server/Overview.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Data_Portfolio.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Design_doc.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/OpenData/od_boundingbox_example.ipynb +0 -0
- /polytope_python-2.1.1/docs/Service/Examples/OpenData/od_polygon_example.ipynb → /polytope_python-2.1.3/docs/Service/Examples/OpenData/od_circle_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/OpenData/od_country_example.ipynb +0 -0
- /polytope_python-2.1.1/docs/Service/Examples/OpenData/od_timeseries_example.ipynb → /polytope_python-2.1.3/docs/Service/Examples/OpenData/od_position_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/OpenData/od_trajectory_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/OpenData/od_vertical_profile_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/boundingbox_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/country_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/polygon_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/timeseries_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/trajectory_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Examples/vertical_profile_example.ipynb +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Features/boundingbox.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Features/polygon.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Features/trajectory.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Features/vertical_profile.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/Service/Quick_Start.md +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/extra.css +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/flight_path.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/greece.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/logo.gif +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/polytope_feature.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/timeseries.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/timeseries_example.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/images/timeseries_qs.png +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/docs/requirements.txt +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shp +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shx +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/Shipping-Lanes-v1.shp +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/Shipping-Lanes-v1.shx +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/World_Countries__Generalized_.shp +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/World_Countries__Generalized_.shx +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/earth_image.jpg +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/map_earth_4k.jpg +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/mars_req_9km_wind.req +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/mars_req_levels.req +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/mars_req_timeseries.req +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/output4.grib +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/output4.req +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/output8.grib +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/output8.req +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/temp_model_levels.grib +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/timeseries_t2m.grib +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/data/winds.grib +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/requirements_examples.txt +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/examples/timeseries_example.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/performance/fdb_scalability_plot.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/backends/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/backends/catalogue_helper.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/backends/mock.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/index_tree.proto +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_cyclic/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/unstructured.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_merger/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_reverse/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/transformations/datacube_type_change/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/datacube/tree_encoding.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/engine/__init__.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/utility/combinatorics.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/utility/list_tools.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_feature/utility/profiling.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_python.egg-info/dependency_links.txt +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_python.egg-info/requires.txt +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/polytope_python.egg-info/top_level.txt +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/Cargo.toml +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/distance.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/healpix_nested.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/lambert_conformal.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/lib.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/list_tools.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/octahedral.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/point_in_polygon.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/quadtree_mod.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/rust/src/slicing_tools.rs +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/setup.cfg +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/setup.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/fdb_data/schema +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/helper_functions.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/profiled_quadtree.profile +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_combinatorics.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_datacube_mock.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_hullslicer_engine.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_request_trees_after_slicing.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_shapes_volume.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_slicer_engine.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tests/test_tree_protobuf.py +0 -0
- {polytope_python-2.1.1 → polytope_python-2.1.3}/tox.ini +0 -0
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
default_language_version:
|
|
2
|
+
python: python3.10
|
|
3
|
+
|
|
1
4
|
repos:
|
|
2
5
|
- repo: https://github.com/pycqa/isort
|
|
3
|
-
rev:
|
|
6
|
+
rev: 7.0.0
|
|
4
7
|
hooks:
|
|
5
8
|
- id: isort
|
|
6
9
|
name: isort (python)
|
|
7
10
|
|
|
8
11
|
- repo: https://github.com/psf/black
|
|
9
|
-
rev:
|
|
12
|
+
rev: 26.1.0 # Use the latest version of black
|
|
10
13
|
hooks:
|
|
11
14
|
- id: black
|
|
12
15
|
|
|
13
16
|
- repo: https://github.com/pycqa/flake8
|
|
14
|
-
rev: 7.
|
|
17
|
+
rev: 7.3.0 # Use the latest version of flake8
|
|
15
18
|
hooks:
|
|
16
19
|
- id: flake8
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: polytope-python
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
4
4
|
Summary: Polytope datacube feature extraction library
|
|
5
5
|
Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
|
|
6
6
|
Maintainer-email: James Hawkes <James.Hawkes@ecmwf.int>, Mathilde Leuridan <Mathilde.Leuridan@ecmwf.int>
|
|
@@ -49,7 +49,7 @@ Dynamic: license-file
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
<h3 align="center">
|
|
52
|
-
<img src="
|
|
52
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif" width=60%>
|
|
53
53
|
</br>
|
|
54
54
|
|
|
55
55
|
</h3>
|
|
@@ -97,24 +97,24 @@ Polytope supports datacubes which have branching, non-uniform indexing, and even
|
|
|
97
97
|
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.
|
|
98
98
|
|
|
99
99
|
<p align="center">
|
|
100
|
-
<img src="
|
|
100
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop//docs/Algorithm/Overview/images_overview/ecmwf_polytope.png" alt="Polytope Concept" width="450"/>
|
|
101
101
|
</p>
|
|
102
102
|
|
|
103
103
|
The Polytope algorithm can for example be used to extract:
|
|
104
104
|
|
|
105
105
|
- 2D cut-outs, such as country cut-outs, from a datacube
|
|
106
106
|
<p align="center">
|
|
107
|
-
<img src="
|
|
107
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/greece.png" alt="Greece cut-out" width="250"/>
|
|
108
108
|
</p>
|
|
109
109
|
|
|
110
110
|
- timeseries from a datacube
|
|
111
111
|
<p align="center">
|
|
112
|
-
<img src="
|
|
112
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/timeseries.png" alt="Timeseries" width="350"/>
|
|
113
113
|
</p>
|
|
114
114
|
|
|
115
115
|
- more complicated spatio-temporal paths, such as flight paths, from a datacube
|
|
116
116
|
<p align="center">
|
|
117
|
-
<img src="
|
|
117
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/flight_path.png" alt="Flight path" width="350"/>
|
|
118
118
|
</p>
|
|
119
119
|
|
|
120
120
|
- and many more high-dimensional shapes in arbitrary dimensions...
|
|
@@ -239,7 +239,7 @@ does it submit to any jurisdiction.
|
|
|
239
239
|
|
|
240
240
|
If this software is useful in your work, please consider citing our paper as
|
|
241
241
|
|
|
242
|
-
> Leuridan, M., Hawkes, J., Smart, S., Danovaro, E.,
|
|
242
|
+
> Leuridan, M., Hawkes, J., Smart, S., Danovaro, E., & Quintino, T. (2025, November). [Polytope: An Algorithm for Efficient Feature Extraction on Hypercubes.](https://link.springer.com/article/10.1186/s40537-025-01306-3) In Journal of Big Data (pp. 1-25).
|
|
243
243
|
|
|
244
244
|
Other papers include:
|
|
245
245
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
<h3 align="center">
|
|
3
|
-
<img src="
|
|
3
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif" width=60%>
|
|
4
4
|
</br>
|
|
5
5
|
|
|
6
6
|
</h3>
|
|
@@ -48,24 +48,24 @@ Polytope supports datacubes which have branching, non-uniform indexing, and even
|
|
|
48
48
|
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.
|
|
49
49
|
|
|
50
50
|
<p align="center">
|
|
51
|
-
<img src="
|
|
51
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop//docs/Algorithm/Overview/images_overview/ecmwf_polytope.png" alt="Polytope Concept" width="450"/>
|
|
52
52
|
</p>
|
|
53
53
|
|
|
54
54
|
The Polytope algorithm can for example be used to extract:
|
|
55
55
|
|
|
56
56
|
- 2D cut-outs, such as country cut-outs, from a datacube
|
|
57
57
|
<p align="center">
|
|
58
|
-
<img src="
|
|
58
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/greece.png" alt="Greece cut-out" width="250"/>
|
|
59
59
|
</p>
|
|
60
60
|
|
|
61
61
|
- timeseries from a datacube
|
|
62
62
|
<p align="center">
|
|
63
|
-
<img src="
|
|
63
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/timeseries.png" alt="Timeseries" width="350"/>
|
|
64
64
|
</p>
|
|
65
65
|
|
|
66
66
|
- more complicated spatio-temporal paths, such as flight paths, from a datacube
|
|
67
67
|
<p align="center">
|
|
68
|
-
<img src="
|
|
68
|
+
<img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/flight_path.png" alt="Flight path" width="350"/>
|
|
69
69
|
</p>
|
|
70
70
|
|
|
71
71
|
- and many more high-dimensional shapes in arbitrary dimensions...
|
|
@@ -190,7 +190,7 @@ does it submit to any jurisdiction.
|
|
|
190
190
|
|
|
191
191
|
If this software is useful in your work, please consider citing our paper as
|
|
192
192
|
|
|
193
|
-
> Leuridan, M., Hawkes, J., Smart, S., Danovaro, E.,
|
|
193
|
+
> Leuridan, M., Hawkes, J., Smart, S., Danovaro, E., & Quintino, T. (2025, November). [Polytope: An Algorithm for Efficient Feature Extraction on Hypercubes.](https://link.springer.com/article/10.1186/s40537-025-01306-3) In Journal of Big Data (pp. 1-25).
|
|
194
194
|
|
|
195
195
|
Other papers include:
|
|
196
196
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Polytope Client
|
|
2
|
+
====================================
|
|
3
|
+
|
|
4
|
+
Polytope is an open-source web service designed to provide efficient access to hypercubes of data in scientific analysis workflows, and is able to federate access between hypercubes in distributed computing resources. It is designed to couple data-centric workflows operating across multiple platforms (HPC, cloud) and across multiple distributed sites.
|
|
5
|
+
|
|
6
|
+
Users can access the Polytope service via the REST API exposed by Polytope, or via the polytope-client Python package. The client includes a Python API and a command line tool (CLI) for accessing Polytope services.
|
|
7
|
+
|
|
8
|
+
We now recommend that users access the Polytope Service via [earthkit-data](https://earthkit-data.readthedocs.io/en/latest/examples/polytope.html).
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Features
|
|
12
|
+
--------
|
|
13
|
+
|
|
14
|
+
* Efficient web-based access to a variety of datacube datasources under a common API
|
|
15
|
+
* Robust role-based and attribute-based access control, including quality-of-service limits
|
|
16
|
+
* Micro-service design, able to be deployed and scaled on Kubernetes and Docker Swarm
|
|
17
|
+
* Compatible and extendable to a variety of authentication providers (e.g. Keycloak, LDAP, SSO)
|
|
18
|
+
* Federation of multiple Polytope instances, connecting distributed storage infrastructure
|
|
19
|
+
* Server-side polytope-based subsetting and feature extraction
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
License
|
|
23
|
+
-------
|
|
24
|
+
|
|
25
|
+
*Polytope* is available under the open source `Apache License`. In applying this licence, ECMWF does not waive the privileges and immunities granted to it by virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
|
26
|
+
|
|
27
|
+
http://www.apache.org/licenses/LICENSE-2.0.html
|
|
28
|
+
|
|
29
|
+
Polytope has been developed at ECMWF as part of the EU projects [LEXIS](https://lexis-project.eu/web/) and [HiDALGO](https://hidalgo-project.eu/). The LEXIS and HiDALGO projects have received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreements No. 825532 and No. 824115.
|