polytope-python 2.1.2__tar.gz → 2.1.4__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.
Files changed (288) hide show
  1. {polytope_python-2.1.2 → polytope_python-2.1.4}/.pre-commit-config.yaml +6 -3
  2. {polytope_python-2.1.2/polytope_python.egg-info → polytope_python-2.1.4}/PKG-INFO +10 -7
  3. {polytope_python-2.1.2 → polytope_python-2.1.4}/README.md +6 -6
  4. polytope_python-2.1.4/docs/Client/Overview.md +29 -0
  5. polytope_python-2.1.4/docs/Service/Examples/OpenData/od_polygon_example.ipynb +675 -0
  6. polytope_python-2.1.4/docs/Service/Examples/OpenData/od_timeseries_example.ipynb +188 -0
  7. polytope_python-2.1.4/docs/Service/Examples/circle_example.ipynb +758 -0
  8. polytope_python-2.1.4/docs/Service/Examples/climate_dt_example.ipynb +224 -0
  9. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/examples.md +17 -3
  10. polytope_python-2.1.4/docs/Service/Examples/extremes_dt_example.ipynb +188 -0
  11. polytope_python-2.1.4/docs/Service/Examples/on-demand_dt_example.ipynb +189 -0
  12. polytope_python-2.1.4/docs/Service/Examples/opendata_example.ipynb +224 -0
  13. polytope_python-2.1.4/docs/Service/Examples/operational_example.ipynb +225 -0
  14. polytope_python-2.1.4/docs/Service/Examples/position_example.ipynb +131 -0
  15. polytope_python-2.1.4/docs/Service/Features/circle.md +53 -0
  16. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Features/feature.md +4 -2
  17. polytope_python-2.1.4/docs/Service/Features/position.md +49 -0
  18. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Features/timeseries.md +1 -1
  19. polytope_python-2.1.4/docs/Service/Full_fields.md +176 -0
  20. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Installation.md +25 -4
  21. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Overview.md +2 -0
  22. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/index.md +16 -6
  23. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/3D_shipping_route.py +23 -7
  24. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/3D_shipping_route_wave_model.py +17 -5
  25. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/4D_flight_path.py +36 -10
  26. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/country_slicing.py +3 -1
  27. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/cyclic_route_around_earth.py +6 -2
  28. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/healpix_grid_box_example.py +18 -4
  29. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/octahedral_grid_box_example.py +9 -1
  30. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/octahedral_grid_country_example.py +9 -1
  31. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/plotting_country_data.py +2 -1
  32. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/read_me_example.py +5 -1
  33. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/slicing_all_ecmwf_countries.py +6 -2
  34. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/wind_farms.py +9 -3
  35. polytope_python-2.1.4/mkdocs.yml +54 -0
  36. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/fdb_performance.py +11 -3
  37. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/fdb_performance_3D.py +11 -3
  38. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/fdb_slice_many_numbers_timeseries.py +25 -6
  39. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/performance_many_num_steps.py +7 -1
  40. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/plotting_scalability.py +20 -3
  41. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/scalability_test.py +54 -18
  42. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/scalability_test_2.py +19 -5
  43. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance_unstructured/octahedral_vs_unstructured_slicing.py +50 -11
  44. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance_unstructured/plot_structured_vs_unstructured_slicing.py +28 -8
  45. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/_version.py +1 -1
  46. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/backends/datacube.py +15 -5
  47. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/backends/fdb.py +89 -30
  48. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/backends/xarray.py +1 -1
  49. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/datacube_axis.py +22 -9
  50. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/index_tree_pb2.py +1 -0
  51. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/quadtree/quad_tree.py +21 -6
  52. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/quadtree/quadtree_additional_operations.py +21 -7
  53. polytope_python-2.1.4/polytope_feature/datacube/switching_grid_helper.py +215 -0
  54. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/tensor_index_tree.py +3 -1
  55. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_cyclic/datacube_cyclic.py +12 -4
  56. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/datacube_mappers.py +4 -2
  57. polytope_python-2.1.4/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/__init__.py +0 -0
  58. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix.py +48 -11
  59. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix_nested.py +63 -16
  60. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular.py +3 -1
  61. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/icon.py +0 -1
  62. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/lambert_conformal.py +25 -7
  63. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/local_regular.py +26 -8
  64. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/octahedral.py +38 -12
  65. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_gaussian.py +41 -10
  66. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +30 -7
  67. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/regular.py +33 -8
  68. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_merger/datacube_merger.py +10 -5
  69. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_reverse/datacube_reverse.py +3 -1
  70. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_transformations.py +18 -6
  71. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_type_change/datacube_type_change.py +50 -12
  72. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/engine.py +3 -1
  73. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/hullslicer.py +72 -17
  74. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/optimised_point_in_polygon_slicer.py +6 -4
  75. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/optimised_quadtree_slicer.py +8 -4
  76. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/point_in_polygon_slicer.py +6 -4
  77. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/quadtree_slicer.py +14 -6
  78. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/slicing_tools.py +9 -3
  79. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/options.py +59 -2
  80. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/polytope.py +23 -7
  81. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/shapes.py +27 -6
  82. polytope_python-2.1.4/polytope_feature/utility/__init__.py +0 -0
  83. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/utility/engine_tools.py +3 -1
  84. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/utility/exceptions.py +8 -3
  85. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/utility/geometry.py +3 -1
  86. {polytope_python-2.1.2 → polytope_python-2.1.4/polytope_python.egg-info}/PKG-INFO +10 -7
  87. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_python.egg-info/SOURCES.txt +16 -0
  88. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_python.egg-info/requires.txt +4 -0
  89. {polytope_python-2.1.2 → polytope_python-2.1.4}/pyproject.toml +5 -3
  90. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/conftest.py +31 -8
  91. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/quadtree_slicer_profiler.py +14 -4
  92. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_axis_mappers.py +20 -5
  93. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_bad_request_error.py +25 -6
  94. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_cyclic_axis_over_negative_vals.py +39 -9
  95. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_cyclic_axis_slicer_not_0.py +39 -9
  96. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_cyclic_axis_slicing.py +50 -14
  97. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_cyclic_nearest.py +28 -6
  98. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_cyclic_simple.py +11 -3
  99. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_cyclic_snapping.py +6 -1
  100. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_datacube_axes_init.py +49 -12
  101. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_datacube_xarray.py +36 -9
  102. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_date_time_unmerged.py +33 -7
  103. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_ecmwf_oper_data_fdb.py +65 -15
  104. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_engine_slicer.py +15 -5
  105. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_fdb_datacube.py +31 -7
  106. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_fdb_unmap_tree.py +31 -7
  107. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_float_type.py +18 -6
  108. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_healpix_mapper.py +32 -6
  109. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_healpix_nested_grid.py +60 -15
  110. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_hull_slicer.py +3 -1
  111. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_icon_grid_unstructured.py +7 -4
  112. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_icon_grid_unstructured_fdb.py +7 -2
  113. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_incomplete_tree_fdb.py +25 -6
  114. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_lambert_lam_grid_unstructured_fdb.py +24 -7
  115. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_lambert_lam_grid_unstructured_fdb_optimised_quadtree.py +22 -6
  116. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_local_grid_cyclic.py +25 -6
  117. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_local_regular_grid.py +21 -5
  118. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_local_swiss_grid.py +24 -5
  119. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_mappers.py +23 -5
  120. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_merge_cyclic_octahedral.py +19 -5
  121. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_merge_octahedral_one_axis.py +30 -5
  122. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_merge_transformation.py +6 -2
  123. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_multiple_param_fdb.py +28 -6
  124. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_octahedral_grid.py +35 -7
  125. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_orca_irregular_grid.py +9 -3
  126. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_orca_irregular_grid_optimised_point_in_polygon.py +9 -3
  127. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_orca_irregular_grid_point_in_polygon.py +9 -3
  128. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_override_md5_hash_options.py +28 -7
  129. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_point_nearest.py +47 -11
  130. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_point_shape.py +16 -4
  131. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_point_union.py +43 -11
  132. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_polytope_extract.py +4 -1
  133. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_polytope_extract_fdb.py +26 -5
  134. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_profiling_requesttree.py +4 -1
  135. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_quad_tree.py +66 -14
  136. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_quadtree_edge_cases.py +32 -7
  137. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_quadtree_indices.py +59 -14
  138. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_quadtree_optimisation.py +23 -5
  139. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_reduced_ll_grid.py +21 -5
  140. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_regular_grid.py +22 -6
  141. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_regular_reduced_grid.py +22 -5
  142. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_request_tree.py +3 -1
  143. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_reverse_transformation.py +6 -1
  144. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_shapes.py +44 -9
  145. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slice_date_range_fdb.py +52 -13
  146. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slice_date_range_fdb_v2.py +34 -8
  147. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slice_fdb_box.py +31 -7
  148. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slicer_era5.py +19 -3
  149. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slicer_xarray.py +13 -3
  150. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slicing_unsliceable_axis.py +19 -4
  151. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slicing_xarray_3D.py +125 -34
  152. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slicing_xarray_4D.py +102 -24
  153. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_snapping.py +25 -7
  154. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_snapping_real_data.py +16 -3
  155. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_tree_protobuf_encoding.py +9 -2
  156. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_tree_protobuf_encoding_fdb.py +31 -7
  157. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_type_change_transformation.py +35 -11
  158. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_union_gj.py +40 -10
  159. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_union_point_box.py +31 -7
  160. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_wave_spectra_data.py +32 -7
  161. polytope_python-2.1.2/mkdocs.yml +0 -44
  162. {polytope_python-2.1.2 → polytope_python-2.1.4}/.github/ci-config.yml +0 -0
  163. {polytope_python-2.1.2 → polytope_python-2.1.4}/.github/ci-hpc-config.yml +0 -0
  164. {polytope_python-2.1.2 → polytope_python-2.1.4}/.github/workflows/cd.yml +0 -0
  165. {polytope_python-2.1.2 → polytope_python-2.1.4}/.github/workflows/downstream-ci.yml +0 -0
  166. {polytope_python-2.1.2 → polytope_python-2.1.4}/.github/workflows/label-public-pr.yml +0 -0
  167. {polytope_python-2.1.2 → polytope_python-2.1.4}/.github/workflows/test-pypi.yml +0 -0
  168. {polytope_python-2.1.2 → polytope_python-2.1.4}/.gitignore +0 -0
  169. {polytope_python-2.1.2 → polytope_python-2.1.4}/.readthedocs.yaml +0 -0
  170. {polytope_python-2.1.2 → polytope_python-2.1.4}/ACKNOWLEDGEMENTS.rst +0 -0
  171. {polytope_python-2.1.2 → polytope_python-2.1.4}/CONTRIBUTING.rst +0 -0
  172. {polytope_python-2.1.2 → polytope_python-2.1.4}/LICENSE +0 -0
  173. {polytope_python-2.1.2 → polytope_python-2.1.4}/Makefile +0 -0
  174. {polytope_python-2.1.2 → polytope_python-2.1.4}/codecov.yml +0 -0
  175. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/API.md +0 -0
  176. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/Axis_types.md +0 -0
  177. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/Datacube.md +0 -0
  178. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/Overview.md +0 -0
  179. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/Slicer.md +0 -0
  180. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/images/Polytope_APIs_3.png +0 -0
  181. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/images/polytope_components_5.png +0 -0
  182. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/images/slicing_process.png +0 -0
  183. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Developer_Guide/shapes.md +0 -0
  184. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Overview/Overview.md +0 -0
  185. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Overview/Polytope_at_ECMWF.md +0 -0
  186. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Overview/images_overview/ecmwf_datacube.png +0 -0
  187. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/Overview/images_overview/ecmwf_polytope.png +0 -0
  188. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/User_Guide/Building_Features.md +0 -0
  189. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/User_Guide/Example.md +0 -0
  190. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/User_Guide/Getting_started.md +0 -0
  191. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/User_Guide/Overview.md +0 -0
  192. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Algorithm/User_Guide/images_users/shipping_route.png +0 -0
  193. /polytope_python-2.1.2/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/__init__.py → /polytope_python-2.1.4/docs/Server/Design.md +0 -0
  194. /polytope_python-2.1.2/polytope_feature/utility/__init__.py → /polytope_python-2.1.4/docs/Server/Overview.md +0 -0
  195. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Data_Portfolio.md +0 -0
  196. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Design_doc.md +0 -0
  197. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/OpenData/od_boundingbox_example.ipynb +0 -0
  198. /polytope_python-2.1.2/docs/Service/Examples/OpenData/od_polygon_example.ipynb → /polytope_python-2.1.4/docs/Service/Examples/OpenData/od_circle_example.ipynb +0 -0
  199. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/OpenData/od_country_example.ipynb +0 -0
  200. /polytope_python-2.1.2/docs/Service/Examples/OpenData/od_timeseries_example.ipynb → /polytope_python-2.1.4/docs/Service/Examples/OpenData/od_position_example.ipynb +0 -0
  201. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/OpenData/od_trajectory_example.ipynb +0 -0
  202. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/OpenData/od_vertical_profile_example.ipynb +0 -0
  203. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/boundingbox_example.ipynb +0 -0
  204. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/country_example.ipynb +0 -0
  205. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/polygon_example.ipynb +0 -0
  206. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/timeseries_example.ipynb +0 -0
  207. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/trajectory_example.ipynb +0 -0
  208. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Examples/vertical_profile_example.ipynb +0 -0
  209. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Features/boundingbox.md +0 -0
  210. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Features/polygon.md +0 -0
  211. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Features/trajectory.md +0 -0
  212. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Features/vertical_profile.md +0 -0
  213. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/Service/Quick_Start.md +0 -0
  214. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/extra.css +0 -0
  215. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/flight_path.png +0 -0
  216. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/greece.png +0 -0
  217. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/logo.gif +0 -0
  218. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/polytope_feature.png +0 -0
  219. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif +0 -0
  220. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/timeseries.png +0 -0
  221. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/timeseries_example.png +0 -0
  222. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/images/timeseries_qs.png +0 -0
  223. {polytope_python-2.1.2 → polytope_python-2.1.4}/docs/requirements.txt +0 -0
  224. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shp +0 -0
  225. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shx +0 -0
  226. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/Shipping-Lanes-v1.shp +0 -0
  227. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/Shipping-Lanes-v1.shx +0 -0
  228. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/World_Countries__Generalized_.shp +0 -0
  229. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/World_Countries__Generalized_.shx +0 -0
  230. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/earth_image.jpg +0 -0
  231. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/map_earth_4k.jpg +0 -0
  232. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/mars_req_9km_wind.req +0 -0
  233. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/mars_req_levels.req +0 -0
  234. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/mars_req_timeseries.req +0 -0
  235. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/output4.grib +0 -0
  236. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/output4.req +0 -0
  237. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/output8.grib +0 -0
  238. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/output8.req +0 -0
  239. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/temp_model_levels.grib +0 -0
  240. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/timeseries_t2m.grib +0 -0
  241. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/data/winds.grib +0 -0
  242. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/requirements_examples.txt +0 -0
  243. {polytope_python-2.1.2 → polytope_python-2.1.4}/examples/timeseries_example.py +0 -0
  244. {polytope_python-2.1.2 → polytope_python-2.1.4}/performance/fdb_scalability_plot.py +0 -0
  245. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/__init__.py +0 -0
  246. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/__init__.py +0 -0
  247. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/backends/__init__.py +0 -0
  248. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/backends/catalogue_helper.py +0 -0
  249. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/backends/mock.py +0 -0
  250. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/index_tree.proto +0 -0
  251. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/__init__.py +0 -0
  252. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_cyclic/__init__.py +0 -0
  253. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/__init__.py +0 -0
  254. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/__init__.py +0 -0
  255. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/unstructured.py +0 -0
  256. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_merger/__init__.py +0 -0
  257. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_reverse/__init__.py +0 -0
  258. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/transformations/datacube_type_change/__init__.py +0 -0
  259. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/datacube/tree_encoding.py +0 -0
  260. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/engine/__init__.py +0 -0
  261. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/utility/combinatorics.py +0 -0
  262. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/utility/list_tools.py +0 -0
  263. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_feature/utility/profiling.py +0 -0
  264. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_python.egg-info/dependency_links.txt +0 -0
  265. {polytope_python-2.1.2 → polytope_python-2.1.4}/polytope_python.egg-info/top_level.txt +0 -0
  266. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/Cargo.toml +0 -0
  267. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/distance.rs +0 -0
  268. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/healpix_nested.rs +0 -0
  269. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/lambert_conformal.rs +0 -0
  270. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/lib.rs +0 -0
  271. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/list_tools.rs +0 -0
  272. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/octahedral.rs +0 -0
  273. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/point_in_polygon.rs +0 -0
  274. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/quadtree_mod.rs +0 -0
  275. {polytope_python-2.1.2 → polytope_python-2.1.4}/rust/src/slicing_tools.rs +0 -0
  276. {polytope_python-2.1.2 → polytope_python-2.1.4}/setup.cfg +0 -0
  277. {polytope_python-2.1.2 → polytope_python-2.1.4}/setup.py +0 -0
  278. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/fdb_data/schema +0 -0
  279. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/helper_functions.py +0 -0
  280. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/profiled_quadtree.profile +0 -0
  281. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_combinatorics.py +0 -0
  282. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_datacube_mock.py +0 -0
  283. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_hullslicer_engine.py +0 -0
  284. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_request_trees_after_slicing.py +0 -0
  285. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_shapes_volume.py +0 -0
  286. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_slicer_engine.py +0 -0
  287. {polytope_python-2.1.2 → polytope_python-2.1.4}/tests/test_tree_protobuf.py +0 -0
  288. {polytope_python-2.1.2 → polytope_python-2.1.4}/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: 5.13.2
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: 24.8.0 # Use the latest version of black
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.1.1 # Use the latest version of flake8
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.2
3
+ Version: 2.1.4
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>
@@ -45,11 +45,14 @@ Provides-Extra: unstructured
45
45
  Requires-Dist: eckit; extra == "unstructured"
46
46
  Provides-Extra: catalogue
47
47
  Requires-Dist: qubed; extra == "catalogue"
48
+ Provides-Extra: switching-grids
49
+ Requires-Dist: eccodes; extra == "switching-grids"
50
+ Requires-Dist: pyfdb; extra == "switching-grids"
48
51
  Dynamic: license-file
49
52
 
50
53
 
51
54
  <h3 align="center">
52
- <img src="./docs/images/polytope_logo_new_animated_AdobeExpress_3.gif" width=60%>
55
+ <img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif" width=60%>
53
56
  </br>
54
57
 
55
58
  </h3>
@@ -97,24 +100,24 @@ Polytope supports datacubes which have branching, non-uniform indexing, and even
97
100
  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
101
 
99
102
  <p align="center">
100
- <img src="./docs/Algorithm/Overview/images_overview/ecmwf_polytope.png" alt="Polytope Concept" width="450"/>
103
+ <img src="https://raw.githubusercontent.com/ecmwf/polytope/develop//docs/Algorithm/Overview/images_overview/ecmwf_polytope.png" alt="Polytope Concept" width="450"/>
101
104
  </p>
102
105
 
103
106
  The Polytope algorithm can for example be used to extract:
104
107
 
105
108
  - 2D cut-outs, such as country cut-outs, from a datacube
106
109
  <p align="center">
107
- <img src="./docs/images/greece.png" alt="Greece cut-out" width="250"/>
110
+ <img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/greece.png" alt="Greece cut-out" width="250"/>
108
111
  </p>
109
112
 
110
113
  - timeseries from a datacube
111
114
  <p align="center">
112
- <img src="./docs/images/timeseries.png" alt="Timeseries" width="350"/>
115
+ <img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/timeseries.png" alt="Timeseries" width="350"/>
113
116
  </p>
114
117
 
115
118
  - more complicated spatio-temporal paths, such as flight paths, from a datacube
116
119
  <p align="center">
117
- <img src="./docs/images/flight_path.png" alt="Flight path" width="350"/>
120
+ <img src="https://raw.githubusercontent.com/ecmwf/polytope/develop/docs/images/flight_path.png" alt="Flight path" width="350"/>
118
121
  </p>
119
122
 
120
123
  - and many more high-dimensional shapes in arbitrary dimensions...
@@ -239,7 +242,7 @@ does it submit to any jurisdiction.
239
242
 
240
243
  If this software is useful in your work, please consider citing our paper as
241
244
 
242
- > Leuridan, M., Hawkes, J., Smart, S., Danovaro, E., and Quintino, T., [Polytope: An Algorithm for Efficient Feature Extraction on Hypercubes](https://arxiv.org/abs/2306.11553), <i>arXiv e-prints</i>, 2023. doi:10.48550/arXiv.2306.11553.
245
+ > 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
246
 
244
247
  Other papers include:
245
248
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  <h3 align="center">
3
- <img src="./docs/images/polytope_logo_new_animated_AdobeExpress_3.gif" width=60%>
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="./docs/Algorithm/Overview/images_overview/ecmwf_polytope.png" alt="Polytope Concept" width="450"/>
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="./docs/images/greece.png" alt="Greece cut-out" width="250"/>
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="./docs/images/timeseries.png" alt="Timeseries" width="350"/>
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="./docs/images/flight_path.png" alt="Flight path" width="350"/>
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., and Quintino, T., [Polytope: An Algorithm for Efficient Feature Extraction on Hypercubes](https://arxiv.org/abs/2306.11553), <i>arXiv e-prints</i>, 2023. doi:10.48550/arXiv.2306.11553.
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.