multipers 2.3.3b4__tar.gz → 2.3.3b6__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.
Potentially problematic release.
This version of multipers might be problematic. Click here for more details.
- {multipers-2.3.3b4/multipers.egg-info → multipers-2.3.3b6}/PKG-INFO +1 -1
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/_signed_measure_meta.py +25 -8
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/array_api/__init__.py +4 -2
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/array_api/numpy.py +2 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/array_api/torch.py +1 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/filtrations/filtrations.py +19 -6
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/plots.py +14 -8
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/point_measure.pyx +71 -2
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/simplex_tree_multi.pyx +16 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/simplex_tree_multi.pyx.tp +2 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/slicer.pyx +61 -60
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/slicer.pyx.tp +2 -1
- {multipers-2.3.3b4 → multipers-2.3.3b6/multipers.egg-info}/PKG-INFO +1 -1
- {multipers-2.3.3b4 → multipers-2.3.3b6}/pyproject.toml +1 -1
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_signed_measure.py +67 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/LICENSE +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/MANIFEST.in +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/README.md +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/_tempita_grid_gen.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/__init__.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/_slicer_meta.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/MOL2.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/UCR.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/__init__.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/graphs.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/immuno_regions.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/minimal_presentation_to_st_bf.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/pytorch2simplextree.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/shape3d.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/data/synthetic.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/distances.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/filtration_conversions.pxd +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/filtration_conversions.pxd.tp +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/filtrations/__init__.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/filtrations/density.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/filtrations.pxd +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/function_rips.pyx +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/grids.pyx +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/Persistence_slices_interface.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/Simplex_tree_interface.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/Simplex_tree_multi_interface.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/cubical_to_boundary.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Bitmap_cubical_complex.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Bitmap_cubical_complex_base.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Debug_utils.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Multi_field.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Multi_field_operators.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Multi_field_shared.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Multi_field_small.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Multi_field_small_operators.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Multi_field_small_shared.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Z2_field.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Z2_field_operators.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Zp_field.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Zp_field_operators.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Fields/Zp_field_shared.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Flag_complex_edge_collapser.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Multi_critical_filtration.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Multi_persistence/Box.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Multi_persistence/Line.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Off_reader.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/One_critical_filtration.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/Base_matrix_with_column_compression.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/Boundary_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/Chain_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/Id_to_index_overlay.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/Position_to_index_overlay.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/RU_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/allocators/entry_constructors.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/base_pairing.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/base_swap.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/boundary_cell_position_to_id_mapper.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/boundary_face_position_to_id_mapper.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/chain_pairing.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/chain_rep_cycles.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/chain_vine_swap.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/chain_column_extra_properties.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_dimension_holder.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/column_utilities.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/entry_types.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/heap_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_list_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/intrusive_set_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/list_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/naive_vector_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/row_access.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/set_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/small_vector_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/unordered_set_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/columns/vector_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/matrix_dimension_holders.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/matrix_row_access.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/ru_pairing.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/ru_rep_cycles.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistence_matrix/ru_vine_swap.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistent_cohomology/Field_Zp.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistent_cohomology/Multi_field.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistent_cohomology/Persistent_cohomology_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Persistent_cohomology.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Points_off_io.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simple_object_pool.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_iterators.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_siblings.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/Simplex_tree_star_simplex_iterators.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/hooks_simplex_base.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/indexing_tag.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/serialization_utils.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree/simplex_tree_options.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/Simplex_tree_multi.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/distance_functions.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/graph_simplicial_complex.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/persistence_interval.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/persistence_matrix_options.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/gudhi/reader_utils.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/mma_interface_coh.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/mma_interface_h0.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/mma_interface_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/naive_merge_tree.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/scc_io.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/gudhi/truc.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/io.pyx +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/__init__.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/accuracies.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/invariants_with_persistable.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/kernels.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/mma.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/one.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/point_clouds.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/signed_measures.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/sliced_wasserstein.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/ml/tools.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/mma_structures.pxd +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/mma_structures.pyx +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/mma_structures.pyx.tp +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multi_parameter_rank_invariant/diff_helpers.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multi_parameter_rank_invariant/euler_characteristic.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multi_parameter_rank_invariant/function_rips.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multi_parameter_rank_invariant/hilbert_function.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multi_parameter_rank_invariant/persistence_slices.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multi_parameter_rank_invariant/rank_invariant.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_edge_collapse.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/approximation.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/combinatory.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/debug.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/euler_curves.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/format_python-cpp.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/heap_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/images.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/list_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/list_column_2.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/ru_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/set_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/structure_higher_dim_barcode.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/unordered_set_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/utilities.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/vector_column.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/vector_matrix.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/vineyards.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation/vineyards_trajectories.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/multiparameter_module_approximation.pyx +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/pickle.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/simplex_tree_multi.pxd +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/slicer.pxd +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/slicer.pxd.tp +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/tensor/tensor.h +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/tensor.pxd +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/test.pyx +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/tests/__init__.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/torch/__init__.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/torch/diff_grids.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers/torch/rips_density.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers.egg-info/SOURCES.txt +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers.egg-info/dependency_links.txt +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers.egg-info/requires.txt +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/multipers.egg-info/top_level.txt +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/setup.cfg +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/setup.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_diff_helper.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_filtrations.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_hilbert_function.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_mma.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_point_clouds.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_python-cpp_conversion.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_signed_betti.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_simplextreemulti.py +0 -0
- {multipers-2.3.3b4 → multipers-2.3.3b6}/tests/test_slicer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multipers
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.3b6
|
|
4
4
|
Summary: Multiparameter Topological Persistence for Machine Learning
|
|
5
5
|
Author-email: David Loiseaux <david.lapous@proton.me>, Hannah Schreiber <hannah.schreiber@inria.fr>
|
|
6
6
|
Maintainer-email: David Loiseaux <david.lapous@proton.me>
|
|
@@ -3,7 +3,6 @@ from typing import Optional, Union
|
|
|
3
3
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
|
|
6
|
-
import multipers as mp
|
|
7
6
|
from multipers.grids import compute_grid, sms_in_grid
|
|
8
7
|
from multipers.plots import plot_signed_measures
|
|
9
8
|
from multipers.point_measure import clean_sms, zero_out_sms
|
|
@@ -31,7 +30,7 @@ def signed_measure(
|
|
|
31
30
|
verbose: bool = False,
|
|
32
31
|
n_jobs: int = -1,
|
|
33
32
|
expand_collapse: bool = False,
|
|
34
|
-
backend: Optional[str] = None,
|
|
33
|
+
backend: Optional[str] = None, # deprecated
|
|
35
34
|
grid: Optional[Iterable] = None,
|
|
36
35
|
coordinate_measure: bool = False,
|
|
37
36
|
num_collapses: int = 0, # TODO : deprecate
|
|
@@ -99,12 +98,21 @@ def signed_measure(
|
|
|
99
98
|
- Rank: Same as Hilbert.
|
|
100
99
|
"""
|
|
101
100
|
if backend is not None:
|
|
102
|
-
raise ValueError(
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
raise ValueError(
|
|
102
|
+
"backend is deprecated. reduce the complex before this function."
|
|
103
|
+
)
|
|
104
|
+
if num_collapses > 0:
|
|
105
|
+
raise ValueError(
|
|
106
|
+
"num_collapses is deprecated. reduce the complex before this function."
|
|
107
|
+
)
|
|
105
108
|
## TODO : add timings in verbose
|
|
106
109
|
if len(filtered_complex) == 0:
|
|
107
|
-
return [
|
|
110
|
+
return [
|
|
111
|
+
(
|
|
112
|
+
np.empty((0, 2), dtype=filtered_complex.dtype),
|
|
113
|
+
np.empty(shape=(0,), dtype=int),
|
|
114
|
+
)
|
|
115
|
+
]
|
|
108
116
|
if grid_conversion is not None:
|
|
109
117
|
grid = tuple(f for f in grid_conversion)
|
|
110
118
|
raise DeprecationWarning(
|
|
@@ -134,6 +142,8 @@ def signed_measure(
|
|
|
134
142
|
"rank",
|
|
135
143
|
"euler_characteristic",
|
|
136
144
|
"hilbert_function",
|
|
145
|
+
"rectangle",
|
|
146
|
+
"hook",
|
|
137
147
|
]
|
|
138
148
|
|
|
139
149
|
assert (
|
|
@@ -256,7 +266,7 @@ def signed_measure(
|
|
|
256
266
|
# if verbose:
|
|
257
267
|
# print("Done.")
|
|
258
268
|
else: # No backend
|
|
259
|
-
if invariant is not None and "rank" in invariant:
|
|
269
|
+
if invariant is not None and ("rank" in invariant or "hook" in invariant or "rectangle" in invariant):
|
|
260
270
|
degrees = np.asarray(degrees, dtype=int)
|
|
261
271
|
if verbose:
|
|
262
272
|
print("Computing rank...", end="")
|
|
@@ -269,6 +279,10 @@ def signed_measure(
|
|
|
269
279
|
ignore_inf=ignore_infinite_filtration_values,
|
|
270
280
|
)
|
|
271
281
|
fix_mass_default = False
|
|
282
|
+
|
|
283
|
+
if "hook" in invariant:
|
|
284
|
+
from multipers.point_measure import rectangle_to_hook_minimal_signed_barcode
|
|
285
|
+
sms = [rectangle_to_hook_minimal_signed_barcode(pts,w) for pts,w in sms]
|
|
272
286
|
if verbose:
|
|
273
287
|
print("Done.")
|
|
274
288
|
elif filtered_complex_.is_minpres:
|
|
@@ -315,7 +329,7 @@ def signed_measure(
|
|
|
315
329
|
if verbose:
|
|
316
330
|
print("Input is a simplextree.")
|
|
317
331
|
## we still have a simplextree here
|
|
318
|
-
if invariant in ["rank_invariant", "rank"]:
|
|
332
|
+
if invariant in ["rank_invariant", "rank", "hook", "rectangle"]:
|
|
319
333
|
if verbose:
|
|
320
334
|
print("Computing rank invariant...", end="")
|
|
321
335
|
assert (
|
|
@@ -331,6 +345,9 @@ def signed_measure(
|
|
|
331
345
|
expand_collapse=expand_collapse,
|
|
332
346
|
)
|
|
333
347
|
fix_mass_default = False
|
|
348
|
+
if "hook" in invariant:
|
|
349
|
+
from multipers.point_measure import rectangle_to_hook_minimal_signed_barcode
|
|
350
|
+
sms = [rectangle_to_hook_minimal_signed_barcode(pts,w) for pts,w in sms]
|
|
334
351
|
if verbose:
|
|
335
352
|
print("Done.")
|
|
336
353
|
elif len(degrees) == 1 and degrees[0] is None:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import multipers.array_api.numpy as npapi
|
|
2
|
+
|
|
3
3
|
|
|
4
|
+
def api_from_tensor(x, *, verbose: bool = False):
|
|
4
5
|
if npapi.is_promotable(x):
|
|
5
6
|
if verbose:
|
|
6
7
|
print("using numpy backend")
|
|
@@ -38,6 +39,7 @@ def api_from_tensors(*args):
|
|
|
38
39
|
return torchapi
|
|
39
40
|
raise ValueError(f"Incompatible types got {[type(x) for x in args]=}.")
|
|
40
41
|
|
|
42
|
+
|
|
41
43
|
def to_numpy(x):
|
|
42
44
|
api = api_from_tensor(x)
|
|
43
45
|
return api.asnumpy(x)
|
|
@@ -17,7 +17,6 @@ try:
|
|
|
17
17
|
|
|
18
18
|
from multipers.filtrations.density import KDE
|
|
19
19
|
except ImportError:
|
|
20
|
-
|
|
21
20
|
from sklearn.neighbors import KernelDensity
|
|
22
21
|
|
|
23
22
|
warn("pykeops not found. Falling back to sklearn.")
|
|
@@ -67,7 +66,9 @@ def RipsLowerstar(
|
|
|
67
66
|
function = function[:, None]
|
|
68
67
|
if function.ndim != 2:
|
|
69
68
|
raise ValueError(
|
|
70
|
-
f"
|
|
69
|
+
f"""
|
|
70
|
+
`function.ndim` should be 0 or 1 . Got {function.ndim=}.{function=}
|
|
71
|
+
"""
|
|
71
72
|
)
|
|
72
73
|
num_parameters = function.shape[1] + 1
|
|
73
74
|
st = SimplexTreeMulti(st, num_parameters=num_parameters)
|
|
@@ -154,6 +155,9 @@ def DelaunayLowerstar(
|
|
|
154
155
|
verbose=verbose,
|
|
155
156
|
clear=clear,
|
|
156
157
|
)
|
|
158
|
+
if reduce_degree >= 0:
|
|
159
|
+
# Force resolution to avoid confusion with hilbert.
|
|
160
|
+
slicer = slicer.minpres(degree=reduce_degree, force=True)
|
|
157
161
|
if flagify:
|
|
158
162
|
from multipers.slicer import to_simplextree
|
|
159
163
|
|
|
@@ -192,7 +196,7 @@ def DelaunayCodensity(
|
|
|
192
196
|
), "Density estimation is either via kernels or dtm."
|
|
193
197
|
if bandwidth is not None:
|
|
194
198
|
kde = KDE(bandwidth=bandwidth, kernel=kernel, return_log=return_log)
|
|
195
|
-
f = kde.fit(points).score_samples(points)
|
|
199
|
+
f = -kde.fit(points).score_samples(points)
|
|
196
200
|
elif dtm_mass is not None:
|
|
197
201
|
f = DTM(masses=[dtm_mass]).fit(points).score_samples(points)[0]
|
|
198
202
|
else:
|
|
@@ -287,11 +291,17 @@ def CoreDelaunay(
|
|
|
287
291
|
"safe",
|
|
288
292
|
"exact",
|
|
289
293
|
"fast",
|
|
290
|
-
], f"
|
|
294
|
+
], f"""
|
|
295
|
+
The parameter precision must be one of ['safe', 'exact', 'fast'],
|
|
296
|
+
got {precision}.
|
|
297
|
+
"""
|
|
291
298
|
|
|
292
299
|
if verbose:
|
|
293
300
|
print(
|
|
294
|
-
f"Computing the Delaunay Core Bifiltration
|
|
301
|
+
f"""Computing the Delaunay Core Bifiltration
|
|
302
|
+
of {len(points)} points in dimension {points.shape[1]}
|
|
303
|
+
with parameters:
|
|
304
|
+
"""
|
|
295
305
|
)
|
|
296
306
|
print(f"\tbeta = {beta}")
|
|
297
307
|
print(f"\tks = {ks}")
|
|
@@ -333,7 +343,10 @@ def CoreDelaunay(
|
|
|
333
343
|
num_simplices = len(vertex_array)
|
|
334
344
|
if verbose:
|
|
335
345
|
print(
|
|
336
|
-
f"
|
|
346
|
+
f"""
|
|
347
|
+
Inserting {num_simplices} simplices of dimension {dim}
|
|
348
|
+
({num_simplices * len(ks)} birth values)...
|
|
349
|
+
"""
|
|
337
350
|
)
|
|
338
351
|
max_knn_distances = np.max(knn_distances[vertex_array], axis=1)
|
|
339
352
|
critical_radii = np.maximum(alphas[:, None], beta * max_knn_distances)
|
|
@@ -15,9 +15,9 @@ _custom_colors = [
|
|
|
15
15
|
"#00b4d8",
|
|
16
16
|
"#90e0ef",
|
|
17
17
|
]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"continuous_cmap",
|
|
18
|
+
_cmap_ = ListedColormap(_custom_colors)
|
|
19
|
+
_cmap = mcolors.LinearSegmentedColormap.from_list(
|
|
20
|
+
"continuous_cmap", _cmap_.colors, N=256
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
|
|
@@ -84,7 +84,7 @@ def _plot_signed_measure_4(
|
|
|
84
84
|
pts = np.clip(pts, a_min=-np.inf, a_max=np.array((*threshold, *threshold))[None, :])
|
|
85
85
|
alpha_rescaling = 0
|
|
86
86
|
for rectangle, weight in zip(pts, weights):
|
|
87
|
-
if rectangle[2]
|
|
87
|
+
if rectangle[2] >= x_smoothing * rectangle[0]:
|
|
88
88
|
alpha_rescaling = max(
|
|
89
89
|
alpha_rescaling,
|
|
90
90
|
(rectangle[2] / x_smoothing - rectangle[0])
|
|
@@ -93,7 +93,7 @@ def _plot_signed_measure_4(
|
|
|
93
93
|
# draw the rectangles
|
|
94
94
|
for rectangle, weight in zip(pts, weights):
|
|
95
95
|
# draw only the rectangles that have not been reduced to the empty set
|
|
96
|
-
if rectangle[2]
|
|
96
|
+
if rectangle[2] >= x_smoothing * rectangle[0]:
|
|
97
97
|
# make the alpha channel proportional to the rectangle's area
|
|
98
98
|
if area_alpha:
|
|
99
99
|
_plot_rectangle(
|
|
@@ -180,8 +180,9 @@ def plot_surface(
|
|
|
180
180
|
fig=None,
|
|
181
181
|
ax=None,
|
|
182
182
|
cmap: Optional[str] = None,
|
|
183
|
-
discrete_surface=False,
|
|
184
|
-
has_negative_values=False,
|
|
183
|
+
discrete_surface: bool = False,
|
|
184
|
+
has_negative_values: bool = False,
|
|
185
|
+
contour: bool = True,
|
|
185
186
|
**plt_args,
|
|
186
187
|
):
|
|
187
188
|
import matplotlib
|
|
@@ -213,7 +214,12 @@ def plot_surface(
|
|
|
213
214
|
)
|
|
214
215
|
cbar.set_ticks(ticks=bounds, labels=bounds)
|
|
215
216
|
return im
|
|
216
|
-
|
|
217
|
+
|
|
218
|
+
if contour:
|
|
219
|
+
levels = plt_args.pop("levels", 20)
|
|
220
|
+
im = ax.contourf(grid[0], grid[1], hf.T, cmap=cmap, levels=levels, **plt_args)
|
|
221
|
+
else:
|
|
222
|
+
im = ax.pcolormesh(grid[0], grid[1], hf.T, cmap=cmap, **plt_args)
|
|
217
223
|
return im
|
|
218
224
|
|
|
219
225
|
|
|
@@ -11,6 +11,7 @@ from collections import defaultdict
|
|
|
11
11
|
cnp.import_array()
|
|
12
12
|
from scipy import sparse
|
|
13
13
|
|
|
14
|
+
from multipers.array_api import api_from_tensor
|
|
14
15
|
|
|
15
16
|
import multipers.grids as mpg
|
|
16
17
|
|
|
@@ -31,7 +32,6 @@ import cython
|
|
|
31
32
|
cimport cython
|
|
32
33
|
|
|
33
34
|
|
|
34
|
-
|
|
35
35
|
# from scipy.sparse import coo_array
|
|
36
36
|
# from scipy.ndimage import convolve1d
|
|
37
37
|
|
|
@@ -169,7 +169,7 @@ def sparsify(x):
|
|
|
169
169
|
|
|
170
170
|
@cython.boundscheck(False)
|
|
171
171
|
@cython.wraparound(False)
|
|
172
|
-
def
|
|
172
|
+
def clean_signed_measure_old(some_float[:,:] pts, some_int[:] weights, dtype = np.float32):
|
|
173
173
|
"""
|
|
174
174
|
Sum the diracs at the same locations. i.e.,
|
|
175
175
|
returns the minimal sized measure to represent the input.
|
|
@@ -190,6 +190,14 @@ def clean_signed_measure(some_float[:,:] pts, some_int[:] weights, dtype = np.fl
|
|
|
190
190
|
new_weights = new_weights[idx]
|
|
191
191
|
return (new_pts, new_weights)
|
|
192
192
|
|
|
193
|
+
def clean_signed_measure(pts, w, dtype=np.int32):
|
|
194
|
+
api = api_from_tensor(pts)
|
|
195
|
+
_, idx, inv = np.unique(api.asnumpy(pts), return_index=True, return_inverse=True, axis=0)
|
|
196
|
+
new_w = np.bincount(inv, weights=w).astype(w.dtype)
|
|
197
|
+
pts, w = pts[idx], new_w
|
|
198
|
+
idx = w!=0
|
|
199
|
+
return pts[idx],w[idx]
|
|
200
|
+
|
|
193
201
|
def clean_sms(sms):
|
|
194
202
|
"""
|
|
195
203
|
Sum the diracs at the same locations. i.e.,
|
|
@@ -324,3 +332,64 @@ def estimate_rank_from_rank_sm(sm:tuple, a, b)->np.int64:
|
|
|
324
332
|
return w[idx].sum()
|
|
325
333
|
|
|
326
334
|
|
|
335
|
+
def rectangle_to_hook_minimal_signed_barcode(pts,w,):
|
|
336
|
+
if pts.shape[1] != 4:
|
|
337
|
+
raise NotImplementedError(
|
|
338
|
+
"Only works for 2-parameter persistence modules for the moment."
|
|
339
|
+
)
|
|
340
|
+
api = api_from_tensor(pts)
|
|
341
|
+
pts = api.astensor(pts)
|
|
342
|
+
w = np.asarray(w)
|
|
343
|
+
## [a,b], [a, a0b1], [a,b0a1], proj, V,H
|
|
344
|
+
|
|
345
|
+
projectives_idx = (pts[:,3] == np.inf) * (pts[:,2] == np.inf)
|
|
346
|
+
pts_proj = pts[projectives_idx]
|
|
347
|
+
w_proj = w[projectives_idx]
|
|
348
|
+
pts = pts[~projectives_idx]
|
|
349
|
+
w = w[~projectives_idx]
|
|
350
|
+
# print("projectives:", pts_proj)
|
|
351
|
+
|
|
352
|
+
vert_blocks_idx = pts[:,3] == np.inf
|
|
353
|
+
pts_V = pts[vert_blocks_idx]
|
|
354
|
+
w_V = w[vert_blocks_idx]
|
|
355
|
+
pts_V[:,3] = pts_V[:,1]
|
|
356
|
+
pts = pts[~vert_blocks_idx]
|
|
357
|
+
w = w[~vert_blocks_idx]
|
|
358
|
+
# print("vertical:", pts_V)
|
|
359
|
+
|
|
360
|
+
h_idx = pts[:,2] == np.inf
|
|
361
|
+
pts_H = pts[h_idx]
|
|
362
|
+
w_H = w[h_idx]
|
|
363
|
+
pts_H[:,2] = pts_H[:,0]
|
|
364
|
+
pts = pts[~h_idx]
|
|
365
|
+
w = w[~h_idx]
|
|
366
|
+
# print("horizontal:", pts_H)
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
new_w = api.cat([-w, w, w, w_proj,w_V,w_H])
|
|
370
|
+
|
|
371
|
+
pts_b0a1 = api.tensor(pts)
|
|
372
|
+
pts_b0a1[:,3] = pts[:,1]
|
|
373
|
+
pts_a0b1 = api.tensor(pts)
|
|
374
|
+
pts_a0b1[:,2] = pts[:,0]
|
|
375
|
+
|
|
376
|
+
new_pts = api.cat([
|
|
377
|
+
pts,
|
|
378
|
+
pts_b0a1,
|
|
379
|
+
pts_a0b1,
|
|
380
|
+
pts_proj,
|
|
381
|
+
pts_V,
|
|
382
|
+
pts_H
|
|
383
|
+
], axis=0)
|
|
384
|
+
# pts,w = new_pts,new_w
|
|
385
|
+
pts,w = clean_signed_measure(new_pts,new_w)
|
|
386
|
+
|
|
387
|
+
# Everything infinite is handled separately anyway
|
|
388
|
+
# inf0 = pts[:,2] == np.inf
|
|
389
|
+
# inf1 = pts[:,3] == np.inf
|
|
390
|
+
# pts[inf0,3] = pts[inf0,1]
|
|
391
|
+
# pts[inf1,2] = pts[inf1,0]
|
|
392
|
+
# pts,w = clean_signed_measure(pts,w)
|
|
393
|
+
|
|
394
|
+
return pts,w
|
|
395
|
+
|
|
@@ -883,6 +883,8 @@ cdef class SimplexTreeMulti_KFi32:
|
|
|
883
883
|
bool coordinate_values=True,
|
|
884
884
|
bool force=False,
|
|
885
885
|
str strategy:_available_strategies = "exact",
|
|
886
|
+
resolution:Optional[int|list[int]] = None,
|
|
887
|
+
bool coordinates = False,
|
|
886
888
|
grid_strategy=None,
|
|
887
889
|
bool inplace=False,
|
|
888
890
|
**filtration_grid_kwargs
|
|
@@ -2322,6 +2324,8 @@ cdef class SimplexTreeMulti_Fi32:
|
|
|
2322
2324
|
bool coordinate_values=True,
|
|
2323
2325
|
bool force=False,
|
|
2324
2326
|
str strategy:_available_strategies = "exact",
|
|
2327
|
+
resolution:Optional[int|list[int]] = None,
|
|
2328
|
+
bool coordinates = False,
|
|
2325
2329
|
grid_strategy=None,
|
|
2326
2330
|
bool inplace=False,
|
|
2327
2331
|
**filtration_grid_kwargs
|
|
@@ -3471,6 +3475,8 @@ cdef class SimplexTreeMulti_KFi64:
|
|
|
3471
3475
|
bool coordinate_values=True,
|
|
3472
3476
|
bool force=False,
|
|
3473
3477
|
str strategy:_available_strategies = "exact",
|
|
3478
|
+
resolution:Optional[int|list[int]] = None,
|
|
3479
|
+
bool coordinates = False,
|
|
3474
3480
|
grid_strategy=None,
|
|
3475
3481
|
bool inplace=False,
|
|
3476
3482
|
**filtration_grid_kwargs
|
|
@@ -4910,6 +4916,8 @@ cdef class SimplexTreeMulti_Fi64:
|
|
|
4910
4916
|
bool coordinate_values=True,
|
|
4911
4917
|
bool force=False,
|
|
4912
4918
|
str strategy:_available_strategies = "exact",
|
|
4919
|
+
resolution:Optional[int|list[int]] = None,
|
|
4920
|
+
bool coordinates = False,
|
|
4913
4921
|
grid_strategy=None,
|
|
4914
4922
|
bool inplace=False,
|
|
4915
4923
|
**filtration_grid_kwargs
|
|
@@ -6059,6 +6067,8 @@ cdef class SimplexTreeMulti_KFf32:
|
|
|
6059
6067
|
bool coordinate_values=True,
|
|
6060
6068
|
bool force=False,
|
|
6061
6069
|
str strategy:_available_strategies = "exact",
|
|
6070
|
+
resolution:Optional[int|list[int]] = None,
|
|
6071
|
+
bool coordinates = False,
|
|
6062
6072
|
grid_strategy=None,
|
|
6063
6073
|
bool inplace=False,
|
|
6064
6074
|
**filtration_grid_kwargs
|
|
@@ -7498,6 +7508,8 @@ cdef class SimplexTreeMulti_Ff32:
|
|
|
7498
7508
|
bool coordinate_values=True,
|
|
7499
7509
|
bool force=False,
|
|
7500
7510
|
str strategy:_available_strategies = "exact",
|
|
7511
|
+
resolution:Optional[int|list[int]] = None,
|
|
7512
|
+
bool coordinates = False,
|
|
7501
7513
|
grid_strategy=None,
|
|
7502
7514
|
bool inplace=False,
|
|
7503
7515
|
**filtration_grid_kwargs
|
|
@@ -8647,6 +8659,8 @@ cdef class SimplexTreeMulti_KFf64:
|
|
|
8647
8659
|
bool coordinate_values=True,
|
|
8648
8660
|
bool force=False,
|
|
8649
8661
|
str strategy:_available_strategies = "exact",
|
|
8662
|
+
resolution:Optional[int|list[int]] = None,
|
|
8663
|
+
bool coordinates = False,
|
|
8650
8664
|
grid_strategy=None,
|
|
8651
8665
|
bool inplace=False,
|
|
8652
8666
|
**filtration_grid_kwargs
|
|
@@ -10086,6 +10100,8 @@ cdef class SimplexTreeMulti_Ff64:
|
|
|
10086
10100
|
bool coordinate_values=True,
|
|
10087
10101
|
bool force=False,
|
|
10088
10102
|
str strategy:_available_strategies = "exact",
|
|
10103
|
+
resolution:Optional[int|list[int]] = None,
|
|
10104
|
+
bool coordinates = False,
|
|
10089
10105
|
grid_strategy=None,
|
|
10090
10106
|
bool inplace=False,
|
|
10091
10107
|
**filtration_grid_kwargs
|
|
@@ -1330,6 +1330,8 @@ cdef class SimplexTreeMulti_{{FSHORT}}:
|
|
|
1330
1330
|
bool coordinate_values=True,
|
|
1331
1331
|
bool force=False,
|
|
1332
1332
|
str strategy:_available_strategies = "exact",
|
|
1333
|
+
resolution:Optional[int|list[int]] = None,
|
|
1334
|
+
bool coordinates = False,
|
|
1333
1335
|
grid_strategy=None,
|
|
1334
1336
|
bool inplace=False,
|
|
1335
1337
|
**filtration_grid_kwargs
|