Skip to content

graph_utils

Match vertices of MeshNeuron to nodes of TreeNeuron.

PARAMETER DESCRIPTION
mesh
    MeshNeuron to match.

TYPE: MeshNeuron

skeleton
    Skeleton to match.

TYPE: TreeNeuron

RETURNS DESCRIPTION
np.ndarray

Array of skeleton node IDs for each vertex in the mesh.

Source code in navis/graph/graph_utils.py
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
def match_mesh_skeleton(mesh, skeleton):
    """Match vertices of MeshNeuron to nodes of TreeNeuron.

    Parameters
    ----------
    mesh :      MeshNeuron
                MeshNeuron to match.
    skeleton :  TreeNeuron
                Skeleton to match.

    Returns
    -------
    np.ndarray
                Array of skeleton node IDs for each vertex in the mesh.

    """
    if not isinstance(mesh, core.MeshNeuron):
        raise TypeError(f"Expected MeshNeuron, got {type(mesh)}")

    if not isinstance(skeleton, core.TreeNeuron):
        raise TypeError(f"Expected TreeNeuron, got {type(skeleton)}")

    # Generate a KDTree for the skeleton
    tree = graph.neuron2KDTree(skeleton)

    # Find closest node for each vertex
    dist, ix = tree.query(mesh.vertices, k=1)

    return skeleton.nodes.node_id.values[ix]