cortex.polyutils.Surface

class cortex.polyutils.Surface(pts, polys)[source]

Represents a single cortical hemisphere surface. Can be the white matter surface, pial surface, fiducial (mid-cortical) surface, inflated surface, flattened surface, etc.

Implements some useful functions for dealing with functions across surfaces.

Parameters
pts2D ndarray, shape (total_verts, 3)

Location of each vertex in space (mm). Order is x, y, z.

polys2D ndarray, shape (total_polys, 3)

Indices of the vertices in each triangle in the surface.

Methods

__init__(self, pts, polys)

Initialize self.

approx_geodesic_distance(self, verts[, m])

Computes approximate geodesic distance (in mm) from each vertex in the surface to any vertex in the collection verts.

call_vtp_geodesic(self, vertex)

Compute geodesic distance using VTP method

create_biharmonic_solver(self, boundary_verts)

Set up biharmonic equation with Dirichlet boundary conditions on the cortical mesh and precompute Cholesky factorization for solving it.

create_subsurface(self[, vertex_mask, …])

Create subsurface for efficient operations on subset of Surface

edge_collapse(self, p1, p2, target)

exact_geodesic_distance(self, vertex)

Compute exact geodesic distance along surface

extract_chunk(self[, nfaces, seed, auxpts])

Extract a chunk of the surface using breadth first search, for testing purposes

extract_geodesic_chunk(self, origin, radius)

Extract a chunk of the surface that is within radius of the origin by geodesic distance.

geodesic_distance(self, verts[, m, fem])

Minimum mesh geodesic distance (in mm) from each vertex in surface to any vertex in the collection verts.

geodesic_path(self, a, b[, max_len, d])

Finds the shortest path between two points a and b.

get_connected_vertices(self, vertex, mask[, …])

return vertices connected to vertex that satisfy mask

get_euclidean_ball(self, xyz, radius)

return vertices within some 3d euclidean distance of an xyz coordinate

get_euclidean_patch(self, vertex, radius[, …])

return connected vertices within some 3d euclidean distance of a vertex

get_geodesic_patch(self, vertex, radius[, …])

return vertices within some 2d geodesic distance of a vertex (or vertices)

get_geodesic_patches(self, radius[, seeds, …])

create patches of cortex centered around each vertex seed

get_geodesic_strip_patch(self, v0, v1, radius)

return patch that includes v0, v1, their geodesic path, and all points within some radius

get_graph(self)

get_strip_coordinates(self, v0, v1[, …])

get 2D coordinates of surface from v0 to v1

interp(self, verts, vals)

Interpolates a function between N knot points verts with the values vals.

lift_subsurface_data(self, data[, vertex_mask])

expand vertex dimension of data to original surface’s size

mean_curvature(self)

Compute mean curvature of this surface using the Laplace-Beltrami operator.

patches(self[, auxpts, n])

plot_subsurface_rotating_gif(self, path[, …])

create a rotating gif of subsurface

polyhedra(self, wm)

Iterates through the polyhedra that make up the closest volume to a certain vertex

smooth(self, scalars[, factor, iterations])

Smooth vertex-wise function given by scalars across the surface using mean curvature flow method (see http://brickisland.net/cs177fa12/?p=302).

surface_gradient(self, scalars[, at_verts])

Gradient of a function with values scalars at each vertex on the surface.

Attributes

adj

Sparse vertex adjacency matrix.

avg_edge_length

Average length of all edges in the surface.

boundary_vertices

return mask of boundary vertices

connected

Sparse matrix of vertex-face associations.

cotangent_weights

Cotangent of angle opposite each vertex in each face.

edge_lengths

return vector of edge lengths

face_areas

Area of each face.

face_normals

Normal vector for each face.

furthest_border_points

return pair of points on surface border that have largest pairwise geodesic distance

graph

NetworkX undirected graph representing this Surface.

iter_surfedges

iter_surfedges_weighted

iterate through edges

laplace_operator

Laplace-Beltrami operator for this surface.

ppts

3D matrix of points in each face: n faces x 3 points per face x 3 coords per point.

subsurface_vertex_inverse

vertex_normals

Normal vector for each vertex (average of normals for neighboring faces).

weighted_distance_graph