Mesh2D¶
from mcot.surface.mesh import Mesh2D
-
class
mcot.surface.mesh.
Mesh2D
(vertices, faces, flip_normal=False)[source]¶ Triangular mesh object describing a 2-dimensional surface in M-dimensional space.
-
__init__
(vertices, faces, flip_normal=False)[source]¶ Defines a triangular mesh in M-dimensional space.
- Parameters
vertices – (M, N) array with the vertices of the curve in M-dimensional space.
faces – (3, K) index array with all the faces.
flip_normal – flips the normal when it is computed (used by Mesh2D.apply_affine, do not set this)
Inheritance diagram
Methods
apply_affine
(affine)Returns a new Mesh to which the affine transformation as been applied.
Returns the filename of a temporary .surf.gii file containing this mesh.
clean
()Returns a clean mesh.
closed
()Check if the mesh is closed (i.e.
closest_vertex
(points)Finds the closest vertices on the surface for a bunch of vertices.
Returns a tuple with (number of connected components, labeling of connected components).
find_intersections
(position, orientation[, …])Finds a ray intersection with the surface.
gradient
(scalar[, atpoint])Computes the gradient orientations of a scalar across the surface.
graph_connection_connection
([weight, dtype])Converts the mesh into a graph, where the nodes are the faces and the edges are between those faces sharing vertices.
graph_connection_point
([dtype])Returns the interactions between vertices and faces as a sparse matrix.
graph_point_point
([weight, dtype, …])Converts the mesh into a graph describing the edges between the individual vertices (nodes).
inflate
([shift, volume])Increases with the given shift or volume.
Find the neighbouring faces.
normal
([atpoint])Calculates the normal of every connection.
plane_projection
([position, orientation])Returns list of ProjectedMesh of the surface projected onto a plane.
read
(gifti_filename)Reads a surface from a surface gifti file (i.e.
render
([color, opacity, view, axes_scale, …])Plots the mesh on the provided vtkRenderWindow.
Compute the size of the faces in the mesh.
Attributes the size of the faces to the vertices they connect.
smooth
(nsteps[, smooth_step, expand_step])Smoothing algorithm with rough volume preservation.
split_mask
(mask)Splits a mask into contiguous surface patches.
surface_edge_distance
([use, method, …])Returns a matrix of the shortest distances across the edges connecting the vertices.
to_vtk_actor
([color, opacity])Returns a vtkPolyDataActor mapping the mesh to an actor, that can plot the mesh.
to_vtk_mapper
([color])Returns a vtkPolyDataMapper mapping the mesh to an object ready for plotting.
to_vtk_polydata
([color])Returns a vtk.vtkPolyData object with the mesh.
volume
()Returns the signed volume of the mesh.
write
(gifti_filename[, scalar_arr])Writes a surface to a surface gifti file.
Attributes
faces
ndim
Dimensionality of the embedding space.
nfaces
Number of surface elements connecting the vertices.
nvertices
Number of vertices on the mesh.
tree
A KD tree used to compute the distance between the vertices defining the surface and any other vertices.
vertices
-
apply_affine¶
-
Mesh2D.
apply_affine
(affine)[source]¶ Returns a new Mesh to which the affine transformation as been applied.
- Parameters
affine – (4, 4) array defining the voxel->mm transformation (i.e. the transformation TOWARDS the space the surface is defined in)
- Returns
new Mesh in the origin space of the affine transformation
- Rtype Mesh2D
as_temp_file¶
clean¶
closed¶
closest_vertex¶
-
Mesh2D.
closest_vertex
(points)¶ Finds the closest vertices on the surface for a bunch of vertices.
- Parameters
points – (ndim, nvertices) array with the reference vertices
- Returns
tuple with
(nvertices, ) distance array
(nvertices, ) index array
connected_components¶
-
Mesh2D.
connected_components
()¶ Returns a tuple with (number of connected components, labeling of connected components).
find_intersections¶
-
Mesh2D.
find_intersections
(position, orientation, return_position=False)[source]¶ Finds a ray intersection with the surface.
If many ray intersections are required grid.GridSurfaceIntersection.ray_intersect will be much faster
- Parameters
position – (M, ) array with the starting point of the ray
orientation – (M, ) array with the hemisphere of the ray
return_position – if True returns the position of the intersection in addition to a boolean indicating whether there is one
- Returns
boolean indicating whether there is an intersection (as well as the position of the intersection if return_position is set to True)
gradient¶
-
Mesh2D.
gradient
(scalar, atpoint=False)[source]¶ Computes the gradient orientations of a scalar across the surface.
- Parameters
scalar – (K, ) array with value of scalar function for every point on the surface.
atpoint – if set interpolate the gradients from the vertices to the vertices.
- Returns
(3, N) array with the gradient for all N vertices.
graph_connection_connection¶
-
Mesh2D.
graph_connection_connection
(weight=None, dtype='bool')¶ Converts the mesh into a graph, where the nodes are the faces and the edges are between those faces sharing vertices.
- Parameters
weight – Weights the boundaries by the distance between the connection centers if set to “distance”
dtype – datatype of the resulting sparse matrix (only used if weight is None)
- Returns
(N, N) sparse matrix for N faces, which is one (or the value set by weight) if the faces share a vertex.
graph_connection_point¶
-
Mesh2D.
graph_connection_point
(dtype='bool')¶ Returns the interactions between vertices and faces as a sparse matrix.
The resulting matrix can be used to multiply a vector of size M faces to get a vector of size N vertices.
The result of this method is cached in _graph (set _graph to None to re-compute the graph).
- Parameters
dtype – data type of the resulting sparse matrix
- Returns
(N, M) sparse matrix for N vertices and M faces, which is one if connection M interacts with N.
graph_point_point¶
-
Mesh2D.
graph_point_point
(weight=None, dtype='bool', include_diagonal=True)¶ Converts the mesh into a graph describing the edges between the individual vertices (nodes).
- Parameters
weight – Weights the boundaries by the distance between the vertices if set to “distance”
dtype – datatype of the resulting sparse matrix (only used if weight is None)
include_diagonal – if set to False exclude the diagonal from the sparse matrix
- Returns
(N, N) sparse matrix for N vertices, which is one (or the value set by weight) if the vertices are connected.
inflate¶
neighbour_faces¶
normal¶
-
Mesh2D.
normal
(atpoint=False)[source]¶ Calculates the normal of every connection.
The result of this method is cached in _normal (set to None to re-compute the normals).
- Parameters
atpoint – interpolates the normals from the vertices to the vertices (as defined by Freesurfer: https://surfer.nmr.mgh.harvard.edu/fswiki/FreeSurferWiki/SurfaceNormal)
- Returns
(Nvertex, 3) (or (Npoint, 3) if atpoint is set) array with the normals
plane_projection¶
-
Mesh2D.
plane_projection
(position=(0, 0, 0), orientation=(0, 0, 1))[source]¶ Returns list of ProjectedMesh of the surface projected onto a plane.
- Parameters
position – origin of the plane on which the ProjectedMesh will be defined
orientation – normal of the plane on which the ProjectedMesh will be defined
- Returns
Each of the ProjectedMesh describes an isolated intersection
- Return type
List[ProjectedMesh]
read¶
render¶
-
Mesh2D.
render
(color=None, opacity=1.0, view='+x', axes_scale=0.0, filename=None, window=None, renderer=None, interact=True)[source]¶ Plots the mesh on the provided vtkRenderWindow.
- Parameters
color – (N, 3) or (N, ) array defining the color across the mesh
opacity – float setting the opacity of the surface
view –
where the object is viewed from; one of ‘+x’, ‘-x’, ‘+y’, ‘-y’, ‘+z’, or ‘-z’ or tuple with
vector pointing from the mesh center to the camera
vector defining the hemisphere that is up from the camera
filename – if set saves the image to the given filename
window (vtk.vtkRenderWindow) – If provded the window on which the mesh will be plotted (otherwise a new window is created)
renderer (vtk.vtkRenderer) – the VTK rendered to which the actor plotting the mesh will be added (default: a new one is created)
interact – if True allows interaction of the window (this will pause the evaulation)
- Returns
the window the mesh is plotted on and the rendered doing the plotting
- Return type
(vtk.vtkRenderWindow, vtk.vtkRenderer)
size_faces¶
size_vertices¶
-
Mesh2D.
size_vertices
()¶ Attributes the size of the faces to the vertices they connect.
smooth¶
-
Mesh2D.
smooth
(nsteps, smooth_step=0.5, expand_step=None)[source]¶ Smoothing algorithm with rough volume preservation.
Implements the algorithm from Rypl and Nerad, “VOLUME CONSERVATION OF 3D SURFACE TRIANGULAR MESH SMOOTHING.” See https://pdfs.semanticscholar.org/2c88/01e50f5ecf0035e8c2bdca7976a3a5d45ee8.pdf . This algorithm iterates between smoothing steps and expansion steps with the expansion step sizes determined by the local curvature as to preserve the local volume.
- Parameters
nsteps – number of smoothing steps
smooth_step – How much the smoothing step moves the vertex to the mean of the neighbour (between 0 and 1)
expand_step – How much the expansion step moves the vertex back out (default: enough to roughly preserve volume)
- Returns
new smooth mesh
split_mask¶
surface_edge_distance¶
-
Mesh2D.
surface_edge_distance
(use=None, method='auto', return_predecessors=False, use_connections=False)¶ Returns a matrix of the shortest distances across the edges connecting the vertices.
This is an upper limit to the true distance across the surface, because the path is limited to following the edges of the triangular mesh.
This is a wrapper around scipy.sparse.csgraph.shortest_path.
- Parameters
use – boolean array indicating which vertices or faces to use (default: use all)
method – method used by scipy.sparse.csgraph.shortest_path.
return_predecessors – whether to return the (N, N) predecessor matrix
use_connections – compute the shortest distance between the faces rather than the vertices.
- Returns
(N, N) matrix of shortest distances across the graph
to_vtk_actor¶
to_vtk_mapper¶
to_vtk_polydata¶
write¶
-
Mesh2D.
write
(gifti_filename, scalar_arr=None, **kwargs)[source]¶ Writes a surface to a surface gifti file.
- Parameters
gifti_filename – output filename
scalar_arr – optionally include a scalar array with same length as number of vertices (as expected by FSL’s probtrackX)
kwargs – any keywords are added to the meta information in the GIFTI file