A toolbox providing methods for data-acquisition, visualisation and statistical methods related to Geometric Morphometrics and shape analysis | Morpho-package Morpho |
align new data to an existing Procrustes registration | align2procSym |
calculate angle between two vectors | angle.calc |
Test whether the direction of two vectors is similar | angleTest |
Replace ID-strings of data and associated files. | anonymize |
apply affine transformation to data | applyTransform applyTransform.default applyTransform.matrix applyTransform.mesh3d |
compute the area of an n-dimensional hypersphere | areaSphere |
compute the area of an n-dimensional hypersphere cap | areaSpherePart |
calculate Pseudo-inverse of a Matrix using RcppArmadillo | armaGinv |
reverts list2array, converting an array to a list of matrices | array2list |
calculate mean of an array | arrMean3 |
Assess differences in amount and direction of asymmetric variation (only object symmetry) | asymPermute |
calculates the barycenters for all faces of a triangular mesh | barycenter |
concatenate multiple arrays/matrices | bindArr |
Landmarks and a triangular mesh | boneData boneLM skull_0144_ch_fe.mesh |
calculate common allometric component | CAC |
extract information about fixed landmarks, curves and patches from and atlas generated by "landmark" | cExtract |
Visually browse through a sample rendering its landmarks and corresponding surfaces. | checkLM |
check for NA values in a matrix (of landmarks) | checkNA |
classify specimen based on between-group PCA or CVA or typprobClass | classify classify.bgPCA classify.CVA classify.typprob |
Project coordinates onto a target triangular surface mesh. | closemeshKD |
predefined colors for bone and skin | bone1 bone2 bone3 colors skin1 skin2 skin3 skin4 |
Compute area enclosed within an irregular polygon | computeArea |
calculate an affine transformation matrix | computeTransform |
calculates distances and PC-coordinates of covariance matrices | covDist covPCA |
calculate the pooled within groups covariance matrix | covW |
Create an atlas needed in placePatch | createAtlas |
Create Matrices necessary for Thin-Plate Spline | CreateL |
create a list with empty entries to be used as missingList in slider3d | createMissingList |
calculate the orthogonal complement of a 3D-vector | crossProduct tangentPlane |
calculate Centroid Size for a landmark configuration | cSize |
cut a mesh by a hyperplane and remove parts above/below that plane | cutMeshPlane |
separate a 3D-pointcloud by a hyperplane | cutSpace |
Canonical Variate Analysis | CVA |
creates 3D shapes from data to be saved as triangular meshes | data2platonic |
visualise differences between two superimposed sets of 2D landmarks | deformGrid2d |
visualise differences between two superimposed sets of 3D landmarks | deformGrid3d |
make a curve equidistant (optionally up/downsampling) | equidistantCurve |
calculate variance of a distribution stemming from prediction models | exVar exVar.lm exVar.mvr |
fast kmeans clustering for 2D or 3D point clouds | fastKmeans |
Import 3D surface mesh files | file2mesh obj2mesh ply2mesh |
Graphical interface to find outliers and/or to switch mislabeld landmarks | find.outliers |
estimate missing landmarks from their bilateral counterparts | fixLMmirror fixLMmirror.array fixLMmirror.matrix |
estimate missing landmarks | fixLMtps |
find indices of faces that contain specified vertices | getFaces |
get number of meaningful Principal components | getMeaningfulPCs |
Get viewpoints on a sphere around a 3D mesh | getOuterViewpoints |
Obtain PC-scores for new landmark data | getPCscores |
determine the minimum ratio for two subsequent eigenvalues to be considered different | getPCtol |
Get the linear combinations associated with the common shape change in each latent dimension of a pls2B | getPLSCommonShape |
compute changes associated with 2-Block PLS-scores | getPLSfromScores |
compute 2-Block PLS scores for new data | getPLSscores |
Get a point along a line with a given distance from the start of the line | getPointAlongOutline |
try to identify bilateral landmarks and sort them by side | getSides |
get 4x4 Transformation matrix | getTrafo4x4 getTrafo4x4.rotonto |
compute a 4x4 Transformation matrix for rotation around an arbitrary axis | getTrafoRotaxis |
find vertices visible from a given viewpoints | getVisibleVertices |
Perform PCA based of the group means' covariance matrix | groupPCA |
plot histogram for multiple groups. | histGroup |
match two landmark configurations using iteratively closest point search | icpmat |
Inscribe the maximum ellipse into any arbitrary 2D polygon | inscribeEllipse |
Inscribe the maximum ellipse into any arbitrary 2D polygon including rotations | inscribeEllipseRot |
invert faces' orientation of triangular mesh | invertFaces |
Calculates the Riemannian distance between two superimposed landmark configs. | kendalldist |
get intersection between a line and a plane | line2plane |
plot lines between landmarks | lineplot |
converts a list of matrices to an array | list2array |
convert data from LPS to RAS space and back | LPS2RAS |
find nearest neighbours for 2D and 3D point clouds | mcNNindex |
merge multiple triangular meshes into a single one | mergeMeshes |
convert a colored mesh to greyscale. | mesh2grey |
export mesh objects to disk | mesh2obj mesh2ply |
calculate the corners of a mesh's bouning box | meshcube |
calculates and visualises distances between surface meshes or 3D coordinates and a surface mesh. | meshDist meshDist.matrix meshDist.mesh3d |
get intersections between mesh and a plane | meshPlaneIntersect |
calculate average edge length of a triangular mesh | meshres |
mirror landmarks or triangular mesh in place | mirror mirror.matrix mirror.mesh3d |
mirror points or mesh on an arbitrary plane | mirror2plane mirror2plane.matrix mirror2plane.mesh3d |
extract data from array names | name2factor name2num |
Estimate the shape by averaging the shape of the nearest neighbours. | NNshapeReg |
landmarks and a triangular mesh representing a human nose | longnose.lm nose shortnose.lm shortnose.mesh |
align two 3D-pointclouds/meshes by their principal axes | pcAlign pcAlign.matrix pcAlign.mesh3d |
visualization of shape variation | pcaplot3d pcaplot3d.nosymproc pcaplot3d.symproc |
correlation between a reduced space and the original space | PCdist |
performs permutation testing for group differences. | permudist |
perfom permutation testing on angles and distances between subgroups of two major groups. | permuvec |
Project semi-landmarks from a predefined atlas onto all specimen in a sample | placePatch |
plot the result of slider3d | plot.slider3d |
visualize an atlas defined by createAtlas | plotAtlas |
plots the normals of a triangular surface mesh. | plotNormals |
Two-Block partial least square regression. | pls2B |
Get the shape changes from pls2B associated with each latent variable | plsCoVar |
Compute the shape changes along the common axis of deformations | plsCoVarCommonShape |
projects a 3D coordinate orthogonally onto a plane | points2plane |
fast Principal Component Analysis (PCA) | prcompfast |
Compute between-group-PC scores from new data | predict.bgPCA |
Compute CV-scores from new data | predict.CVA |
predict 2 Block-PLS from new data | predictPLSfromData |
predict data from 2-Block PLS-scores | predictPLSfromScores |
predict relative warps for data not included in the training data set | predictRelWarps |
Predict shapes based on linear models calculated from PCscores | predictShape.lm |
calculate weights inverse to the distances from the specified observation. | proc.weight |
Procrustes ANOVA for structures with object symmetry | procAOVsym |
Workhorse function for procSym, responsible for Procrustes registration | ProcGPA |
Procrustes registration | procSym |
Project points onto the closest point on a mesh | projRead |
Q-Q plot to assess normality of data | qqmat |
converts a mesh containing quadrangular faces into one only consisting of triangles | quad2trimesh |
Export data to MorphoJ and Morphologika | r2morphoj r2morphologika |
projects the vertices of a mesh along its normals onto the surface of another one. | ray2mesh |
batch import data from files | read.csv.folder |
read fiducials from slicer4 | read.fcsv |
read dta files | read.lmdta |
Read saved pick-points from meshlab | read.mpp |
reads pts files | read.pts |
read Landmarks from Slicer in Json format | read.slicerjson |
Import landmarks and outlines from TPS files | readallTPS |
import landmark data from csv files | readLandmarks.csv |
correlation between shape space and tangent space | regdist |
calulate regression scores for linear model | RegScore |
relax one specific landmark configuration against a reference | relaxLM relaxLM.matrix relaxLM.mesh3d |
calculate relative Warp analysis | relWarps |
plot or save the results of meshDist | export export.meshDist render render.matrixDist render.meshDist |
Resample a curve equidistantly | resampleCurve |
restore original data from PCA | restoreFromPCA |
restore shapes from PC-Scores or similar projections | restoreShapes |
symmetrize a bilateral landmark configuration | retroDeform3d |
symmetrize a triangular mesh | retroDeformMesh |
Rotate an object (matrix or mesh) around an arbitrary axis in 3D | rotaxis3d rotaxis3d.matrix rotaxis3d.mesh3d |
calculate a rotation matrix around an arbitrary axis through the origin in 3D | rotaxisMat |
rotate ,scale and translate a mesh based on landmark information. | rotmesh.onto |
rotate matrix of landmarks | rotonmat |
rotates, translates and scales one matrix onto an other using Procrustes fitting | rotonto rotreverse rotreverse.matrix rotreverse.mesh3d |
scale a mesh of class "mesh3d" | scalemesh |
slides Semilandmarks along curves 2D by minimising bending energy of a thin-plate spline deformation. | slider2d |
slides Semilandmarks along curves and surfaces in 3D by minimising bending energy of a thin-plate spline deformation. | slider3d |
returns the solution space (basis and translation vector) for an equation system | solutionSpace |
sort curvepoints by using the subsequent neighbours | sortCurve |
create a perfectly symmetric version of landmarks | symmetrize |
thin plate spline mapping (2D and 3D) for coordinates and triangular meshes | tps2d tps3d |
calculate typicality probabilities | typprob typprobClass |
some little helpers for vertex operations on triangular meshes | rmUnrefVertex rmVertex unrefVertex vert2points |
update a vector of indices after removal of some referenced items | updateIndices |
Compute face or vertex normals of a triangular mesh | facenormals updateNormals |
convert an 3D array into a matrix and back | vecx |
remove all parts of a triangular mesh, not visible from a set of viewpoints | virtualMeshScan |
Creates a sequence of images showing predefined steps of warping two meshes or landmark configurations (2D and 3D) into each other | warpmovie2d warpmovie3d warpmovie3d.matrix warpmovie3d.mesh3d |
write fiducials in slicer4 format | write.fcsv |
exports a matrix containing landmarks into .pts format | write.pts |
Export landmarks (or any 3D coordinates) to the new slicer json format | write.slicerjson |