Skip to content

Latest commit

 

History

History
443 lines (357 loc) · 21.6 KB

changelog.rst

File metadata and controls

443 lines (357 loc) · 21.6 KB

Changelog

0.6.7

  • 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

0.6.6

0.6.5

  • 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

0.6.4

  • 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

0.6.2

  • Add support for Python 3.9, remove support of Python 3.5 #233

0.6.1

Breaking changes

  • 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 documentation tree children #228

Other changes

  • 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

0.6.0

Breaking changes

  • 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 argument canonize_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 field mst_edge_map in the result using the new function subgraph_spanning f50ebc8
  • C++ only: fields of the class regular_graph are now private with public const accessors #211

Other changes

  • 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 the node_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

0.5.3

  • Fix bug in ~higra.watershed_hierarchy_by_attribute: on some conditions a large minima could be split in two or more regions. #205

0.5.2

  • 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 in tree, add section troubleshooting. #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 type np.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

0.5.1

  • Decrease ABI compatibility of linux wheels to 8 (G++ 4.9) #177

0.5.0

Breaking change

  • 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

Other changes

  • 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

0.4.5

  • 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

0.4.4

  • 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

0.4.2

Breaking change

  • Rename function attribute_mean_weights into ~higra.attribute_mean_vertex_weights #136

Other changes

  • 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

0.4.1

  • 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

0.4.0

Breaking change

  • 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

Other changes

  • 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

0.3.8

  • Add attributes: ~higra.attribute_height, ~higra.attribute_extrema, ~higra.attribute_extinction_value, and ~higra.attribute_dynamics #110
  • Fix tree category propagation #109

0.3.7

  • 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

0.3.6

  • 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

0.3.5

Breaking change

Other changes

0.3.4

0.3.3

0.3.2

0.3.1

  • Code cleanup #95
  • Add Ward linkage ~higra.binary_partition_tree_ward_linkage #94
  • Add ~higra.make_lca_fast for fast lca result caching #93

0.3.0

Breaking change

  • Refactor Python concepts #88

Other changes

  • 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