polytope-python 2.1.0__tar.gz → 2.1.2__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.0 → polytope_python-2.1.2}/.gitignore +3 -0
- {polytope_python-2.1.0/polytope_python.egg-info → polytope_python-2.1.2}/PKG-INFO +1 -1
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/_version.py +1 -1
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/tensor_index_tree.py +17 -5
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/local_regular.py +42 -20
- {polytope_python-2.1.0 → polytope_python-2.1.2/polytope_python.egg-info}/PKG-INFO +1 -1
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.github/ci-config.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.github/ci-hpc-config.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.github/workflows/cd.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.github/workflows/downstream-ci.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.github/workflows/label-public-pr.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.github/workflows/test-pypi.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.pre-commit-config.yaml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/.readthedocs.yaml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/ACKNOWLEDGEMENTS.rst +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/CONTRIBUTING.rst +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/LICENSE +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/Makefile +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/README.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/codecov.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/API.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/Axis_types.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/Datacube.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/Overview.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/Slicer.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/images/Polytope_APIs_3.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/images/polytope_components_5.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/images/slicing_process.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/shapes.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Overview/Overview.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Overview/Polytope_at_ECMWF.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Overview/images_overview/ecmwf_datacube.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Overview/images_overview/ecmwf_polytope.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/Building_Features.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/Example.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/Getting_started.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/Overview.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/images_users/shipping_route.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Data_Portfolio.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Design_doc.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/OpenData/od_boundingbox_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/OpenData/od_country_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/OpenData/od_polygon_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/OpenData/od_timeseries_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/OpenData/od_trajectory_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/OpenData/od_vertical_profile_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/boundingbox_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/country_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/examples.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/polygon_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/timeseries_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/trajectory_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/vertical_profile_example.ipynb +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Features/boundingbox.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Features/feature.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Features/polygon.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Features/timeseries.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Features/trajectory.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Features/vertical_profile.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Installation.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Overview.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Quick_Start.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/extra.css +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/flight_path.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/greece.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/logo.gif +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/polytope_feature.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/timeseries.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/timeseries_example.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/images/timeseries_qs.png +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/index.md +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/docs/requirements.txt +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/3D_shipping_route.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/3D_shipping_route_wave_model.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/4D_flight_path.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/country_slicing.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/cyclic_route_around_earth.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shp +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shx +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/Shipping-Lanes-v1.shp +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/Shipping-Lanes-v1.shx +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/World_Countries__Generalized_.shp +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/World_Countries__Generalized_.shx +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/earth_image.jpg +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/map_earth_4k.jpg +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/mars_req_9km_wind.req +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/mars_req_levels.req +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/mars_req_timeseries.req +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/output4.grib +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/output4.req +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/output8.grib +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/output8.req +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/temp_model_levels.grib +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/timeseries_t2m.grib +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/winds.grib +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/healpix_grid_box_example.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/octahedral_grid_box_example.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/octahedral_grid_country_example.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/plotting_country_data.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/read_me_example.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/requirements_examples.txt +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/slicing_all_ecmwf_countries.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/timeseries_example.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/examples/wind_farms.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/mkdocs.yml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/fdb_performance.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/fdb_performance_3D.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/fdb_scalability_plot.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/fdb_slice_many_numbers_timeseries.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/performance_many_num_steps.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/plotting_scalability.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/scalability_test.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance/scalability_test_2.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance_unstructured/octahedral_vs_unstructured_slicing.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/performance_unstructured/plot_structured_vs_unstructured_slicing.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/catalogue_helper.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/datacube.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/mock.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/xarray.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/datacube_axis.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/index_tree.proto +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/index_tree_pb2.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/quadtree/quad_tree.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/quadtree/quadtree_additional_operations.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_cyclic/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_cyclic/datacube_cyclic.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/datacube_mappers.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix_nested.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/icon.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/lambert_conformal.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/unstructured.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/octahedral.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_gaussian.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/regular.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_merger/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_merger/datacube_merger.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_reverse/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_reverse/datacube_reverse.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_transformations.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_type_change/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/transformations/datacube_type_change/datacube_type_change.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/tree_encoding.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/engine.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/hullslicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/optimised_point_in_polygon_slicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/optimised_quadtree_slicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/point_in_polygon_slicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/quadtree_slicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/slicing_tools.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/options.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/polytope.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/shapes.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/__init__.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/combinatorics.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/engine_tools.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/exceptions.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/geometry.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/list_tools.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/utility/profiling.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_python.egg-info/SOURCES.txt +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_python.egg-info/dependency_links.txt +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_python.egg-info/requires.txt +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_python.egg-info/top_level.txt +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/pyproject.toml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/Cargo.toml +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/distance.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/healpix_nested.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/lambert_conformal.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/lib.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/list_tools.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/octahedral.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/point_in_polygon.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/quadtree_mod.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/rust/src/slicing_tools.rs +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/setup.cfg +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/setup.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/conftest.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/fdb_data/schema +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/helper_functions.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/profiled_quadtree.profile +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/quadtree_slicer_profiler.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_axis_mappers.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_bad_request_error.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_combinatorics.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_cyclic_axis_over_negative_vals.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_cyclic_axis_slicer_not_0.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_cyclic_axis_slicing.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_cyclic_nearest.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_cyclic_simple.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_cyclic_snapping.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_datacube_axes_init.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_datacube_mock.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_datacube_xarray.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_date_time_unmerged.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_ecmwf_oper_data_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_engine_slicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_fdb_datacube.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_fdb_unmap_tree.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_float_type.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_healpix_mapper.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_healpix_nested_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_hull_slicer.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_hullslicer_engine.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_icon_grid_unstructured.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_icon_grid_unstructured_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_incomplete_tree_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_lambert_lam_grid_unstructured_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_lambert_lam_grid_unstructured_fdb_optimised_quadtree.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_local_grid_cyclic.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_local_regular_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_local_swiss_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_mappers.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_merge_cyclic_octahedral.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_merge_octahedral_one_axis.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_merge_transformation.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_multiple_param_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_octahedral_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_orca_irregular_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_orca_irregular_grid_optimised_point_in_polygon.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_orca_irregular_grid_point_in_polygon.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_override_md5_hash_options.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_point_nearest.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_point_shape.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_point_union.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_polytope_extract.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_polytope_extract_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_profiling_requesttree.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_quad_tree.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_quadtree_edge_cases.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_quadtree_indices.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_quadtree_optimisation.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_reduced_ll_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_regular_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_regular_reduced_grid.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_request_tree.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_request_trees_after_slicing.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_reverse_transformation.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_shapes.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_shapes_volume.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slice_date_range_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slice_date_range_fdb_v2.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slice_fdb_box.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slicer_engine.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slicer_era5.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slicer_xarray.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slicing_unsliceable_axis.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slicing_xarray_3D.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_slicing_xarray_4D.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_snapping.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_snapping_real_data.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_tree_protobuf.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_tree_protobuf_encoding.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_tree_protobuf_encoding_fdb.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_type_change_transformation.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_union_gj.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_union_point_box.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tests/test_wave_spectra_data.py +0 -0
- {polytope_python-2.1.0 → polytope_python-2.1.2}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: polytope-python
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.2
|
|
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>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# Do not change! Do not track in version control!
|
|
2
|
-
__version__ = "2.1.
|
|
2
|
+
__version__ = "2.1.2"
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/tensor_index_tree.py
RENAMED
|
@@ -205,11 +205,23 @@ class TensorIndexTree(object):
|
|
|
205
205
|
old_parent.remove_branch()
|
|
206
206
|
|
|
207
207
|
def remove_compressed_branch(self, value):
|
|
208
|
-
if value in self.values:
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
208
|
+
if value not in self.values:
|
|
209
|
+
return
|
|
210
|
+
|
|
211
|
+
if len(self.values) == 1:
|
|
212
|
+
self.remove_branch()
|
|
213
|
+
return
|
|
214
|
+
|
|
215
|
+
self.values = tuple(val for val in self.values if val != value)
|
|
216
|
+
parent = self.parent
|
|
217
|
+
if parent is None:
|
|
218
|
+
return
|
|
219
|
+
|
|
220
|
+
for sibling in parent.children:
|
|
221
|
+
if sibling is not self:
|
|
222
|
+
if self == sibling:
|
|
223
|
+
self.remove_branch()
|
|
224
|
+
return
|
|
213
225
|
|
|
214
226
|
def flatten(self):
|
|
215
227
|
path = DatacubePath()
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import bisect
|
|
2
2
|
|
|
3
|
+
import numpy as np
|
|
4
|
+
|
|
3
5
|
from ..datacube_mappers import DatacubeMapper
|
|
4
6
|
|
|
5
7
|
|
|
@@ -45,15 +47,28 @@ class LocalRegularGridMapper(DatacubeMapper):
|
|
|
45
47
|
if self._axis_reversed[mapped_axes[1]]:
|
|
46
48
|
raise NotImplementedError("Local regular grid with second axis in decreasing order is not supported")
|
|
47
49
|
|
|
50
|
+
self._second_axis_vals = np.arange(
|
|
51
|
+
self._second_axis_min,
|
|
52
|
+
self._second_axis_min + self._second_deg_increment * (self.second_resolution + 1),
|
|
53
|
+
self._second_deg_increment,
|
|
54
|
+
dtype=np.float64,
|
|
55
|
+
)
|
|
56
|
+
|
|
48
57
|
def first_axis_vals(self):
|
|
49
58
|
if self._axis_reversed[self._mapped_axes[0]]:
|
|
50
|
-
first_ax_vals =
|
|
51
|
-
self._first_axis_max
|
|
52
|
-
|
|
59
|
+
first_ax_vals = np.arange(
|
|
60
|
+
self._first_axis_max,
|
|
61
|
+
self._first_axis_max - self._first_deg_increment * (self.first_resolution + 1),
|
|
62
|
+
-self._first_deg_increment,
|
|
63
|
+
dtype=np.float64,
|
|
64
|
+
)
|
|
53
65
|
else:
|
|
54
|
-
first_ax_vals =
|
|
55
|
-
self._first_axis_min
|
|
56
|
-
|
|
66
|
+
first_ax_vals = np.arange(
|
|
67
|
+
self._first_axis_min,
|
|
68
|
+
self._first_axis_min + self._first_deg_increment * (self.first_resolution + 1),
|
|
69
|
+
self._first_deg_increment,
|
|
70
|
+
dtype=np.float64,
|
|
71
|
+
)
|
|
57
72
|
return first_ax_vals
|
|
58
73
|
|
|
59
74
|
def map_first_axis(self, lower, upper):
|
|
@@ -62,10 +77,7 @@ class LocalRegularGridMapper(DatacubeMapper):
|
|
|
62
77
|
return return_vals
|
|
63
78
|
|
|
64
79
|
def second_axis_vals(self, first_val):
|
|
65
|
-
|
|
66
|
-
self._second_axis_min + i * self._second_deg_increment for i in range(self.second_resolution + 1)
|
|
67
|
-
]
|
|
68
|
-
return second_ax_vals
|
|
80
|
+
return self._second_axis_vals
|
|
69
81
|
|
|
70
82
|
def map_second_axis(self, first_val, lower, upper):
|
|
71
83
|
axis_lines = self.second_axis_vals(first_val)
|
|
@@ -89,16 +101,26 @@ class LocalRegularGridMapper(DatacubeMapper):
|
|
|
89
101
|
return first_idx * self.second_resolution
|
|
90
102
|
|
|
91
103
|
def unmap(self, first_val, second_vals, unmapped_idx=None):
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
first_array = self._first_axis_vals
|
|
105
|
+
second_array = self._second_axis_vals
|
|
106
|
+
second_vals = np.asarray(second_vals)
|
|
107
|
+
descending = self._axis_reversed[self._mapped_axes[0]]
|
|
108
|
+
if descending:
|
|
109
|
+
# right descending order for searchsorted
|
|
110
|
+
first_idx = np.searchsorted(first_array[::-1], first_val[0])
|
|
111
|
+
first_idx = len(first_array) - 1 - first_idx
|
|
112
|
+
else:
|
|
113
|
+
first_idx = np.searchsorted(first_array, first_val[0])
|
|
114
|
+
if first_idx > 0 and first_idx < len(first_array):
|
|
115
|
+
left_val = first_array[first_idx - 1]
|
|
116
|
+
right_val = first_array[first_idx]
|
|
117
|
+
if abs(first_val[0] - left_val) < abs(first_val[0] - right_val):
|
|
118
|
+
first_idx -= 1
|
|
119
|
+
second_idxs = np.searchsorted(second_array, second_vals)
|
|
120
|
+
|
|
121
|
+
# map to grid idx
|
|
122
|
+
final_idxs = first_idx * (self.second_resolution + 1) + second_idxs
|
|
123
|
+
return final_idxs
|
|
102
124
|
|
|
103
125
|
|
|
104
126
|
# md5 grid hash in form {resolution : hash}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: polytope-python
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.2
|
|
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>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Developer_Guide/Axis_types.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/Overview/Polytope_at_ECMWF.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/Building_Features.md
RENAMED
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Algorithm/User_Guide/Getting_started.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/boundingbox_example.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/timeseries_example.ipynb
RENAMED
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/trajectory_example.ipynb
RENAMED
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/docs/Service/Examples/vertical_profile_example.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shp
RENAMED
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/World_Countries__Generalized_.shp
RENAMED
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/examples/data/World_Countries__Generalized_.shx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/performance/fdb_slice_many_numbers_timeseries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/datacube.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/backends/xarray.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/datacube/quadtree/quad_tree.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/optimised_quadtree_slicer.py
RENAMED
|
File without changes
|
{polytope_python-2.1.0 → polytope_python-2.1.2}/polytope_feature/engine/point_in_polygon_slicer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|