-
Notifications
You must be signed in to change notification settings - Fork 2
size_bounded_graph
The SizeBoundedGraph class is an implementation for MutableGraph and is used to build graphs.
class deglib.graph.SizeBoundedGraph(max_vertex_count: int, edges_per_vertex: int, feature_space: FloatSpace, graph_cpp: SizeBoundedGraph | None = None)
Bases: MutableGraph
static create_empty(capacity: int, dims: int, edges_per_vertex: int = 32, metric: Metric = Metric.L2)
Create an empty SizeBoundedGraph.
-
Parameters:
- capacity – The maximal number of vertices of this graph.
- dims – The number of dimensions of each feature vector
- edges_per_vertex – Number of neighbors for each vertex. Defaults to 32.
- metric – The metric to measure distances between features. Defaults to L2-Metric.
- Returns: the number of vertices in the graph
- Returns: the feature space
Translates internal index to external label
- Parameters: external_label – The external label to translate
- Returns: The internal index
has_path(entry_vertex_indices: List[int], to_vertex: int, eps: float, k: int) → List[ObjectDistance]
Returns a path from one of the entry vertex indices to the given to_vertex.
-
Parameters:
- entry_vertex_indices – List of start vertices
- to_vertex – The vertex to find a path to
- eps – Controls how many nodes are checked during search. Lower eps values like 0.001 are faster but less accurate. Higher eps values like 0.1 are slower but more accurate. Should always be greater 0.
- k – TODO
Creates a list of internal indices that can be used as starting point for an anns search.
Translates external labels to internal index
- Parameters: internal_index – The internal index to translate
- Returns: The external label
Save graph to specified file. Creates necessary directories.
- Parameters: path – The path where to save the file.
- Returns: the number of edges of each vertex
Add a new vertex. The neighbor indices will be prefilled with a self-loop, the weights will be 0.
-
Parameters:
- external_label – The label for the new vertex
- feature_vector – The feature vector to add. This numpy array should be c-contiguous, otherwise it has to be reallocated.
- Returns: the internal index of the new vertex
Remove an existing vertex.
- Parameters: external_label – The external label of the vertex that should be removed.
change_edge(internal_index: int, from_neighbor_index: int, to_neighbor_index: int, to_neighbor_weight: float) → bool
Swap a neighbor with another neighbor and its weight.
-
Parameters:
- internal_index – vertex index which neighbors should be changed
- from_neighbor_index – neighbor index to remove
- to_neighbor_index – neighbor index to add
- to_neighbor_weight – weight of the neighbor to add
- Returns: True if the from_neighbor_index was found and changed
Change all edges of a vertex. The neighbor indices/weights and feature vectors will be copied. The neighbor array need to have enough neighbors to match the edge-per-vertex count of the graph. The indices in the neighbor_indices array must be sorted.
-
Parameters:
- internal_index – The index of the vertex for which edges should change
- neighbor_indices – These neighbors will be set as the new neighbors of the specified vertex
- neighbor_weights – These weights will be set as the new weights for the neighbors.
Get weights for each neighbor of the vertex defined by the given index.
-
Parameters:
- internal_index – The index that specifies the vertex
- copy – If True the returned neighbor weights are copied, otherwise they reference internal graph data.
- Returns: The weights of the neighbors
Get the weight from vertex to another vertex. If start vertex is not a neighbor of end vertex, -1.0 is returned.
-
Parameters:
- from_neighbor_index – Internal index of the start vertex
- to_neighbor_index – Internal index of the target vertex
- Returns: If present the weight between start and target vertex, -1.0 otherwise
Get the indices (internal index) of the given vertex.
-
Parameters:
- internal_index – The internal index to get the neighbors of
- copy – If True the returned neighbor indices are a copy, otherwise they reference internal graph data.
- Returns: The internal index
- Returns: whether the given external label is present in the graph.
- Returns: whether the vertex at internal_index has an edge to the vertex at neighbor_index.
explore(entry_vertex_index: int, k: int, include_entry: bool, max_distance_computation_count: int) → ResultSet
An exploration for similar element, limited by max_distance_computation_count
-
Parameters:
- entry_vertex_index – The start point for which similar feature vectors should be searched
- k – The number of similar feature vectors to return
- include_entry – If True, the entry vertex is included in the result set.
- max_distance_computation_count – Limit the number of distance calculations. If set to 0 this is ignored.