- Add function
~higra.is_bipartite_graph
#265 - Add function
~higra.bipartite_graph_matching
for minimum cost matching in bipartite graphs #265 - Add function
~higra.match_pixels_image_2d
to compute the optimal matching between the pixels/contours of 2 images #265 - Add "similarity" mode in Dasgupta quality measure
~higra.dasgupta_cost
#264 - Add
~higra.Tree.to_undirected_graph
to the tree class #263 - Add option to use a preexisting graph in
~higra.graph_4_adjacency_2_khalimsky
#262
- Add support for Python 3.11 #261
- Improve notebooks section of the doc and add new notebooks on 3D mesh processing: *Watershed on a mesh with IGL* and *Watershed on a mesh with Trimesh* #258
- Fix unwanted behavior in
~higra.reconstruct_leaf_data
#254 - Fix crash when creating an empty tree in Python #252
- Add support for Python 3.10, remove support of Python 3.6 #243
- Add an optional condition to the tree propagate and accumulate function see documentation
tree conditional propagate and accumulate
~higra.propagate_sequential_and_accumulate
#241
- Add function to compute the line graph of a graph
~higra.line_graph
#239 - Add function to extract a subtree from a tree
~higra.Tree.sub_tree
#238 - Add new fast lowest common ancestor algorithm
~higra.Tree.lowest_common_ancestor_preprocess
with O(n) time preprocessing and average O(1) time query (based on sparse table with blocks). The expected speedup is comprised between 1.2 and 1.8 compared to the previous method (parse table without block wich is still available). #237 - Add options to set a global thread number limit
~higra.set_num_threads
#234
- Add support for Python 3.9, remove support of Python 3.5 #233
- C++ only: the children relation of trees is not computed automatically anymore, a call to the member function
compute_children
is required before accessing to any children information of a tree, see documentationtree children
#228
- Function
~higra.bpt_canonical
can now process a graph given as a edge list (arrays of source and target vertices) #230 - Add functions
~higra.UndirectedGraph.sources
and~higra.UndirectedGraph.targets
to the classes~higra.UndirectedGraph
and~higra.Tree
which will returns views whenever possible #230 - Add options for memory pre-allocation in
~higra.UndirectedGraph
constructor #232 - Improve performance of regular grid graphs #231
- Improve memory usage of marginal accumulators #228
- Remove the need of the children relation anymore of trees in several functions #228
- Bugfix: Regular grid graph will now always fulfils the
~higra.CptGridGraph
concept #229
- The functions
~higra.filter_non_relevant_node_from_tree
,~higra.filter_small_nodes_from_tree
, and~higra.filter_weak_frontier_nodes_from_tree
now return canonized tree by default (old behaviour is obtained with the argumentcanonize_tree=False
) #221 - C++ only: the function
bpt_canonical
does not compute an explicit representation of the minimum spanning tree. The mst can still be reconstructed with the fieldmst_edge_map
in the result using the new functionsubgraph_spanning
f50ebc8 - C++ only: fields of the class
regular_graph
are now private with public const accessors #211
- Major Python classes (Trees, graphs, ...) are now pickable #212 and #214
- Python classes now support dynamic attributes and higra attributes are now stored directly in the objects dictionaries with a direct access as class members. #209 and #210
- Function
~higra.bpt_canonical
now supports: construction of the tree based on an arbitrary given ordering, avoid the explicit computation of the minimum spanning tree, multidimentional edge weights (with lexicographic sorting). The documentation has also been improved. #222 - Fast lowest ancestor computation is now better integrated to the
~higra.Tree
class. Calling~higra.Tree.lowest_common_ancestor_preprocess()
will now make any call to~higra.Tree.lowest_common_ancestor
to use the pre-processing #216 - Add parallel sorting functions
~higra.sort
and~higra.arg_sort
(also support lexicographic ordering). #219 - Add function
~higra.subgraph
to extract the subgraph induced by a set of edges from an undirected graph 4cfa9ac - Functions for watershed hierarchies in Python can now return the non canonized tree (option
canonize_tree=False
) #220 - Function
~higra.canonize_hierarchy
can now return thenode_map
which associates any node of the canonized tree to a node of the original tree. 5701d29 - Fix bug in
~higra.filter_small_nodes_from_tree
when the base graph is a region adjacency graph #215
- Fix bug in
~higra.watershed_hierarchy_by_attribute
: on some conditions a large minima could be split in two or more regions. #205
- Add function
~higra.tree_monotonic_regression
: perform regression on a tree with an increasingness constraint #198 - Add attribute
~higra.attribute_moment_of_inertia
: first Hu moment on hierarchies constructed on 2d pixel graphs. #197 - Add attribute
~higra.attribute_topological_height
: number of edges on the longest path from a node to the leaf. #194 - Improve support for regular graphs: add functions
~higra.RegularGraph2d.as_explicit_graph
(convert an implicit graph to an explicit graph),~higra.mask_2_neighbours
(create an neighbour list from an adjacency mask),~higra.get_nd_regular_graph
and~higra.get_nd_regular_implicit_graph
(create a regular implicit or explicit regular graph) #204 - Improve conversions functions between adjacency matrices and undirected graphs: improve functions
~higra.adjacency_matrix_2_undirected_graph
and~higra.undirected_graph_2_adjacency_matrix
(support for Scipy sparse matrix), and~higra.make_graph_from_points
(add symmetrization strategies). #201 - Improve documentation of
~higra.binary_partition_tree
, fix typos intree
, add sectiontroubleshooting
. #199 #196 - Add altitudes increasingness assertions in several functions #193
- Fix incorrect overload resolution in
~higra.RegularGraph2d.as_explicit_graph
when seeds are not of typenp.int64
#203 - Fix incorrect number of regions computation in fragmentation curves when ground-truth labels are not contiguous
fragmentation_curve
#200 - Fix
~higra.delinearize_vertex_weights
not supporting Numpy arrays as shapes. #188 - Fix
~higra.save_tree
incorrectly failing with no tree attributes. #181
- Decrease ABI compatibility of linux wheels to 8 (G++ 4.9) #177
- Removed overload of function
~higra.weight_graph
taking a custom weighting function. An equivalent, and much efficient, behavior can be achieved be applying a vectorized function on the edge list (see~higra.UndirectedGraph.edge_list
) 5914574 - Removed support for Python 3.4 #174
- Add support for Python 3.8 #174
- Fix and add more efficient implementation of seeded watershed labelisation
~higra.labelisation_seeded_watershed
#173 - Parallelize several algorithms with Intel TBB (parallel sort, hierarchy construction, fast LCA, graph weighting) #168 #169
- Add support for Intel Threading Building Blocks (TBB), see usage in
installation_instruction
#168 #175 - Update third party libs #170
- Fix agglomerative clustering when the input graph has duplicated edges
binary_partition_tree
#167 - Fix missing overloads for unsigned types in
~higra.weight_graph
#166 - Fix a bug in hierarchical watershed when leaves had non zero values
watershed_hierarchy
#165
- Add new notebook: *Visualizing hierarchical image segmentations* #159
- Add hierarchical cost function
~higra.tree_sampling_divergence
#158 - Add attribute
~higra.attribute_tree_sampling_probability
9faf740 - Add attribute
~higra.attribute_children_pair_sum_product
0c6c958 - Improvements in documentation #157
- Add hierarchy algorithm
~higra.component_tree_multivariate_tree_of_shapes_image2d
#156 - Fix return policy in
~higra.Tree.parents()
, now returns a non writable reference e3eb5aa - Add option to deactivate immersion in tree of shapes 9efb6b6
- Add algorithm
~higra.tree_fusion_depth_map
11e4f53
- Fix codecov incorrectly including third party libs #152
- Add hierarchical cost
~higra.dasgupta_cost
#151 - Add new attribute
~higra.attribute_child_number
#149 - Fix bug in
~higra.simplify_tree
#148 and #150 - Add argmin and argmax accumulators #146
- Add new notebooks: PRL article illustrations and Astromical object detection with the Max-Tree #145 and #155
- Documentation improvements #143, #153, #154
- Update third party libs #141
- Rename function attribute_mean_weights into
~higra.attribute_mean_vertex_weights
#136
- Add SoftwareX illustrations notebook #140
- Replace specialized C++ bindings for hierarchical watershed by a generic calls to
~higra.watershed_hierarchy_by_attribute
#139 - Fix inconsistency between Python and C++ definitions of
~higra.attribute_volume
#138 - Separate code and documentation on graph and tree attributes #137
- Fix bug in
~higra.attribute_mean_vertex_weights
#136
- Add function
~higra.accumulate_on_contours
. #134 - Better handling of null perimeter in
~higra.attribute_contour_strength
. #133 - Add links to
notebooks
in the documentation. #132 - Fix bug in
~higra.common_type
support for bool type was missing. #131 - Fix bug in
~higra.attribute_contour_length
with tree of shapes when interpolated are removed. #129
- Refactor attributes related to perimeter: there is now a single homogeneous function
~higra.attribute_contour_length
that replaces attribute_perimeter_length, attribute_perimeter_length_component_tree, and attribute_perimeter_length_partition_tree #121 and #124 - Add decorator
~higra.auto_cache
for auto-caching of function results which replaces the decorator data_provider. #122 and #127
- Add a Cookiecutter project for c++ higra extension development Higra-cppextension-cookiecutter
- Add more documentation for installation and compiling #123
- Fix bug with integer data in
~higra.attribute_gaussian_region_weights_model
#126 - Fix bug in graph associated to the
~higra.component_tree_tree_of_shapes_image2d
#120 - Improve algorithm for
~higra.attribute_extrema
#119 - Moved repository to higra Github organization #118
- Add attributes:
~higra.attribute_height
,~higra.attribute_extrema
,~higra.attribute_extinction_value
, and~higra.attribute_dynamics
#110 - Fix tree category propagation #109
- Hardening: add range checks in various Python bindings #107
- Bundle
Higra
and third party libraries into pip wheel for easy C++ extension development:~higra.get_include
,~higra.get_lib_include
,~higra.get_lib_cmake
#106 - Make
deleted_nodes
parameter of~higra.reconstruct_leaf_data
optional #105
- Add
plot_graph
and~higra.plot_partition_tree
#104 - Add
~higra.make_graph_from_points
#104 - Add
~higra.print_partition_tree
#103 - Add
~higra.tree_2_binary_tree
#101 - Add
~higra.Tree.num_children
overload that returns the number of children of every non leaf nodes #101
- Rename
quasi_flat_zones_hierarchy
to~higra.quasi_flat_zone_hierarchy
https://github.com/PerretB/Higra/commit/8aa95694fc7b8b59fd61ffe264943586e935a686
- Add
exponential-linkage
for agglomerative clustering~higra.binary_partition_tree_exponential_linkage
https://github.com/PerretB/Higra/commit/a523d8cc484576907e356113dde23adf832eb13b - Add
~higra.canonize_hierarchy
https://github.com/PerretB/Higra/commit/9a2c8d9e103fc3444f733e0c5a83b2bd775fdea8
- Add
~higra.filter_non_relevant_node_from_tree
,~higra.filter_small_nodes_from_tree
, and~higra.filter_weak_frontier_nodes_from_tree
https://github.com/PerretB/Higra/commit/521f2416b9b649ace76168728c6d5c06edfde8c6 - Add
~higra.labelisation_horizontal_cut_from_num_regions
https://github.com/PerretB/Higra/commit/cb9cc0d6ebeaa97f76c60ae1b879f2bfb777c01b - Add
at_least
andat_most
parameters for~higra.HorizontalCutExplorer.horizontal_cut_from_num_regions
https://github.com/PerretB/Higra/commit/7b5d00422562840de93df9fcef247b27a2d7365d - Optimize Horizontal cut explorer construction https://github.com/PerretB/Higra/commit/68128b9f0201360888d7409dad397ceba23b100d
- Add
~higra.Tree.child
overload that returns the i-th child of every non leaf nodes https://github.com/PerretB/Higra/commit/6d47a21e942debfdebb633d6e7b7de88238c30ba
- Add
~higra.accumulate_at
https://github.com/PerretB/Higra/commit/4dadfad522aa6f8d59fa185507a0941c6fc0d0b0 - Add
altitude_correction
parameter to Ward linkage~higra.binary_partition_tree_ward_linkage
https://github.com/PerretB/Higra/commit/196386fe7e96aa9c8d97dd269b40ca022bb5dfbb - Make
edge_weights
parameter of~higra.undirected_graph_2_adjacency_matrix
optional https://github.com/PerretB/Higra/commit/ca195a9d26ef7eaeb24afc7df5db9b90ba8e5ee7
- Add
~higra.dendrogram_purity
https://github.com/PerretB/Higra/commit/fb84d6fbc908d2bc1971cf6fc840f3da8c23c5bb - Add
~higra.random_binary_partition_tree
https://github.com/PerretB/Higra/commit/46ff1e54d65b658c8d90682761fd77606b764e3c - Fix altitudes increasingness in Ward linkage
~higra.binary_partition_tree_ward_linkage
https://github.com/PerretB/Higra/commit/82ba29f940a85c328df76bf9642cfc85f0b94dc7
- Code cleanup #95
- Add Ward linkage
~higra.binary_partition_tree_ward_linkage
#94 - Add
~higra.make_lca_fast
for fast lca result caching #93
- Refactor Python concepts #88
- Fix bug with
~higra.saliency
working on rags #92 - Fix bug in wheels generation (test result were ignored) #90
- Fix bug in
~higra.linearize_vertex_weights
#89 - Update
xtensor
#86 - Add
~higra.Tree.lowest_common_ancestor
#85 - Add
~higra.attribute_perimeter_length_component_tree
#84 - Add Tree of shapes
~higra.component_tree_tree_of_shapes_image2d
#82