Available Tree Types

Enums

enum class UltrametricTreeType

Values:

enumerator LoadTree

Load a previously constructed tree from a JSON file.

**Parameters:**
- `json_tree_filepath`: File path of the tree to be loaded.
- `tree_type` (default: `LoadTree`, optional): Set the tree type of the loaded tree to `tree_type`.

enumerator DCTree

Density-Connected Tree (DCTree): a tree structure based on the density-connected distance (dc-distance) [1] .

Parameters:

  • min_points (default: 5): Compute core_dist by using the distance to the min_points’ nearest neighbor of a point.

  • relaxed (default: false): Set the identity distance of the points (leave nodes) to the core_dist.

enumerator HST

Hierarchically Separated Tree (HST): uses recursive metric partitions to ensure separation properties [2] .

Parameters:

  • seed (default: -1): Seed for building the HST. -1 means random.

enumerator CoverTree

Cover Tree: a fast, scalable data structure for nearest neighbor queries and clustering [3] .

enumerator KDTree

KD-Tree: partitions the data space along axis-aligned hyperplanes for efficient spatial queries [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator MeanSplitKDTree

Variant of KD-Tree using mean splits instead of medians to construct the tree [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator BallTree

Ball Tree: recursively partitions points into hyperspheres (balls), suitable for non-axis-aligned clusters [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator MeanSplitBallTree

Variant of Ball Tree that uses mean splits instead of radius-based ones [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RPTree

Random Projection Tree (RP Tree): recursively splits data using random hyperplanes [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator MaxRPTree

Maximum-Spread RP Tree: a variant of RP Tree using splits that maximize spread or variance [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator UBTree

Upper Bound Tree (UBTree): a tree structure emphasizing similarity upper bounds for clustering [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RTree

R-Tree: a dynamic index structure for spatial access methods using bounding rectangles [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RStarTree

R*-Tree: a refined R-Tree with better heuristics for node splitting and reinsertions [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator XTree

X-Tree: an extended R-Tree variant that handles high-dimensional data by avoiding overlap [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator HilbertRTree

Hilbert R-Tree: an R-Tree optimized using space-filling Hilbert curves to improve locality [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RPlusTree

R+-Tree: avoids overlapping rectangles by splitting objects across multiple nodes [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RPlusPlusTree

R++-Tree: a further improvement over R+-Tree focusing on reduced overlap and better packing [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

Functions

std::string ultrametric_tree_type_to_string(UltrametricTreeType type)
UltrametricTreeType string_to_ultrametric_tree_type(const std::string &type)
std::vector<UltrametricTreeType> get_available_ultrametric_tree_types()
std::vector<std::string> get_available_ultrametric_tree_types_as_strings()

Variables

constexpr std::array<std::pair<UltrametricTreeType, std::string_view>, 17> ultrametricTreeTypeStrings = {{{UltrametricTreeType::LoadTree, "LoadTree"}, {UltrametricTreeType::DCTree, "DCTree"}, {UltrametricTreeType::HST, "HST"}, {UltrametricTreeType::CoverTree, "CoverTree"}, {UltrametricTreeType::KDTree, "KDTree"}, {UltrametricTreeType::MeanSplitKDTree, "MeanSplitKDTree"}, {UltrametricTreeType::BallTree, "BallTree"}, {UltrametricTreeType::MeanSplitBallTree, "MeanSplitBallTree"}, {UltrametricTreeType::RPTree, "RPTree"}, {UltrametricTreeType::MaxRPTree, "MaxRPTree"}, {UltrametricTreeType::UBTree, "UBTree"}, {UltrametricTreeType::RTree, "RTree"}, {UltrametricTreeType::RStarTree, "RStarTree"}, {UltrametricTreeType::XTree, "XTree"}, {UltrametricTreeType::HilbertRTree, "HilbertRTree"}, {UltrametricTreeType::RPlusTree, "RPlusTree"}, {UltrametricTreeType::RPlusPlusTree, "RPlusPlusTree"},}}