Source code for higra.assessment.fragmentation_curve

############################################################################
# Copyright ESIEE Paris (2018)                                             #
#                                                                          #
# Contributor(s) : Benjamin Perret                                         #
#                                                                          #
# Distributed under the terms of the CECILL-B License.                     #
#                                                                          #
# The full license is in the file LICENSE, distributed with this software. #
############################################################################

import higra as hg
import numpy as np

[docs]@hg.argument_helper(hg.CptHierarchy, ("leaf_graph", hg.CptRegionAdjacencyGraph)) def make_assesser_fragmentation_optimal_cut(tree, ground_truth, measure, max_regions=200, vertex_map=None): """ Creates an assesser for hierarchy optimal cuts w.r.t. a given ground-truth partition of the base graph vertices and the given optimal cut measure (see :class:`~higra.OptimalCutMeasure`). The algorithms will explore optimal cuts containing at most max_regions regions. The base graph of the hierarchy is: * the leaf graph of the hierarchy if it is not a region adjacency graph * the original graph of the leaf graph of the hierarchy if it is a region adjacency graph :param tree: input hierarchy (Concept :class:`~higra.CptHierarchy`) :param ground_truth: labelisation of base graph vertices :param measure: evaluation measure to use (see enumeration :class:`~higra.OptimalCutMeasure`) :param max_regions: maximum number of regions in the cuts :param vertex_map: optional, vertex mapping if the hierarchy is build on a region adjacency graph (deduced from :class:`~higra.CptRegionAdjacencyGraph` on the leaf graph of `tree`) :return: an object of type :class:`~higra.AssesserFragmentationOptimalCut` """ if vertex_map is None: return hg.AssesserFragmentationOptimalCut(tree, ground_truth, measure, max_regions=int(max_regions)) else: vertex_map = hg.cast_to_dtype(vertex_map, np.int64) return hg.AssesserFragmentationOptimalCut(tree, ground_truth, measure, max_regions=int(max_regions), vertex_map=vertex_map)
[docs]@hg.argument_helper(hg.CptHierarchy, ("leaf_graph", hg.CptRegionAdjacencyGraph)) def assess_fragmentation_optimal_cut(tree, ground_truth, measure, max_regions=200, vertex_map=None): """ Fragmentation curve of the optimal cuts in a hierarchy w.r.t. a given measure. The base graph of the hierarchy is: * the leaf graph of the hierarchy if it is not a region adjacency graph * the original graph of the leaf graph of the hierarchy if it is a region adjacency graph :param tree: input hierarchy (Concept :class:`~higra.CptHierarchy`) :param ground_truth: labelisation of base graph vertices :param measure: evaluation measure to use (see enumeration :class:`~higra.OptimalCutMeasure`) :param max_regions: maximum number of regions in the cuts :param vertex_map: optional, vertex mapping if the hierarchy is build on a region adjacency graph (deduced from :class:`~higra.CptRegionAdjacencyGraph` on the leaf graph of `tree`) :return: an object of type :class:`~higra.FragmentationCurve` """ assesser = make_assesser_fragmentation_optimal_cut(tree, ground_truth, measure, max_regions, vertex_map) return assesser.fragmentation_curve()
[docs]@hg.argument_helper(hg.CptHierarchy, ("leaf_graph", hg.CptRegionAdjacencyGraph)) def assess_fragmentation_horizontal_cut(tree, altitudes, ground_truth, measure, max_regions=200, vertex_map=None): """ Fragmentation curve of the horizontal cuts in a hierarchy w.r.t. a given measure. The base graph of the hierarchy is: * the leaf graph of the hierarchy if it is not a region adjacency graph * the original graph of the leaf graph of the hierarchy if it is a region adjacency graph :param tree: input hierarchy (Concept :class:`~higra.CptHierarchy`) :param altitudes: altitudes of the nodes of the input hierarchy :param ground_truth: labelisation of base graph vertices :param measure: evaluation measure to use (see enumeration :class:`~higra.PartitionMeasure`) :param max_regions: maximum number of regions in the cuts :param vertex_map: optional, vertex mapping if the hierarchy is build on a region adjacency graph (deduced from :class:`~higra.CptRegionAdjacencyGraph` on the leaf graph of `tree`) :return: an object of type :class:`~higra.FragmentationCurve` """ if ground_truth.dtype != np.int64: ground_truth = ground_truth.astype(np.int64) if vertex_map is None: return hg.cpp._assess_fragmentation_horizontal_cut(tree, altitudes, ground_truth, measure, max_regions=int(max_regions)) else: vertex_map = hg.cast_to_dtype(vertex_map, np.int64) return hg.cpp._assess_fragmentation_horizontal_cut(tree, altitudes, ground_truth, measure, max_regions=int(max_regions), vertex_map=vertex_map)