slider2d: public version of formerly private Semislide function
procSym: added weights and centerweights to control Procrustes registration
predictRelWarps: added prediction of uniform scores
added support in predictRelWarps for alpha=0
icpmat: added options for weights and centerweight
deformGrid3d: allow exporting resulting 3D object as mesh
cSize now also operates on mesh vertices
bugfixes and minor changes
computeTransform: decreased singularity tolerance for type="tps"
tps2d: added as alias of tps3d to avoid user confusion
equidistantCurve: some minor improvements and fix for 2D case
CreateL: fixed return of Lsubk3 if dim=2
made read.mpp more generic
applyTransform: more efficient normal handling for affine transform
write.* functions: only append file suffix if missing in the filename
Changes in Morpho version 2.4.1 (2016-09-12)
bugfixes and minor changes
fixed amount of covariance estimation
Changes in Morpho version 2.4 (2016-07-29)
New features
added sortCurve and equidistantCurve
added kappa statistic to print.classify
added read/write.fcsv to read write landmark in 3DSlicer format
added prcompfast, a faster and more memory efficient version of prcomp
slider3d: now sliding without specifying surfaces is possible. Surface is estimated by computing normals from point clouds using vcgUpdateNormals
added plot method for slider3d
added fastKmeans a very fast and efficient way to compute kmeans-clustering for 2D and 3D data.
bugfixes and minor changes
fixed c++14 standard requirements
made index in rmVertex unique
showPC: for single PCs vectors of length> 1 are coerced to matrix
added option margin in deformGrid3d and deforGrid2d
unified code for creating bending energy matrix
made relWarps more memory and speed efficient and added option getBasis to disable (computationally expensive) calculation of vector basis.
added dimnames from rownames in vecx
returns Grandmean and Groupmeans as matrix/array for landmark data
correct output in find.outliers if mahalanobis=TRUE and add probability
added reflection=FALSE in find.outliers and corrected reported distances
fixed read.lmdta for single configs
slider3d: fixed case where all file infos are stored in sur.name
fixed print.classify
removed dependency yaImpute using vcgKDtree instead
added unit testing for slider3d
made CreateL and tps3d multi-threaded
added options silent to slider3d and relaxLM
ignore missing values when calculating quantiles and mindist in meshdist
refactored CVA and added test for CVA
fixed predictPLSfromScores for ncomp=1
fixed correct lwd passing in deformGrid3d
fixed procAOVsym for 2D case (correct df)
added unit test for pls2B
speed up pls2B by some orders of magnitude, now suitable for very large landmark configurations
showPC: for single PCs vectors of length> 1 are coerced to matrix
Changes in Morpho version 2.3.1.1 (2016-01-22)
bugfixes and minor changes
fixed c++14 standard requirements
made index in rmVertex unique
Changes in Morpho version 2.3.1 (2015-12-15)
New features
meshPlaneIntersect now also supports normals (as cutSpace)
added default method for applyTransform for 2D and 3D vectors
bugfixes and minor changes
removed bePCs with zero variance from output in relWarps
improved error handling in placePatch
set square=FALSE in qqmat
added message if CSinit = F and orp = T, that orp is disabled
fixed applyTransform for type="tps" and inverse = TRUE
added testthat test for relWarps
tweaked relWarps to work with large amounts of coordinates
fixed wrong bracket position in ProcGPA leading to only a single iteration
CVA: fixed calculation of posterior probs if cv=F
fixed linewidth in CVA example to stop check complaints
set p.adjust.method="none"
only return significant scores in relWarps
named output of plsCoVar
Changes in Morpho version 2.3.0 (2015-06-18)
New features
added function line2plane to calculate intersection of a line and a plane
added option pcAlign in function mirror to improve alignment to original object
added option pcAlign in relWarps and procSym to allow alignment to first specimen rather than PC-axes.
Gregory Jefferis added unit testing setup infrastructure
added new functions getPLSfromScores, getPLSscores predictPLSfromScores,predictPLSfromData and plsCoVar for prediction and handling results from 2-Block PLS regression.
made relaxLM an S3 function and added methods for mesh3d to relax two meshes with corresponding vertices. Added use.lm to specify subset of coordinates for alignment if bending =FALSE
new option 'as.factor' in name2factor
deprecated warp.mesh (use tps3d now for meshes and matrices)
meshDist now allows custom colorramps
added option wireframe in deformGrid2d
added support for registered meshes in computeTransform
added selection of transform type in icpmat
added option use.lm to slider3d to specify subset for alignment if bending =FALSE
added getMeaningfulPCs to determine meaningful Principal Components.
made optimization in pcAlign and mirror run in parallel (not supported on Windows OS).
bugfixes and minor changes
fixed normal handling in mergeMeshes
fixed coefficient scaling in RegScore
added update of normals in meshDist
removed unnecessary function meanMat and replaced it with generic colMeans
fixed calculation of loadings in pls2B
set lambda (regularization) in all tps related functions to 1e-8 to avoid gross distortions in some cases
fixed typo in pcAlign leading to misbehaviour if iterations < 1
Changes in Morpho version 2.2 (2014-12-16)
New features
slider3d, relaxLM and procSym now allow minimizing Procrustes distance
added orientation check in pcAlign to avoid reflections
massive speed improvements in sliding semi-landmarks routines
added options missing/missingList in relaxLM and slider3d to allow using semi-landmarks in "thin-air"
added helper function createMissingList
added function points2plane for projecting a point/pointcloud onto a plane.
pcAlign with y missing now centers a shape and aligns it by its principal axes.
added option pcAlign in procSym and ProcGPA to enable/disable alignment of sample by principal axes
bugfixes and minor changes
renamed conv2backf to invertFaces
renamed crossp to crossProduct
renamed tanplan to tangentPlane
reorient faces if reflections are involved in applyTransform
made read.lmdta more versatile
fixed an issue with argument "size" in deformGrid3d
set default method to "vcg" in meshDist
Changes in Morpho version 2.1 (2014-09-25)
New features
added new function mirror to mirror a landmark configuration or a mesh and registering onto the original one.
added new functions retroDeform3d and retroDeformMesh for removing affine deformation from a 3D-meshes and pointclouds
deformGrid3d now also accepts meshes
added function classify for CVA and groupPCA for creating classification tables
added new function getTrafo4x4, getTrafoRotaxis, computeTransform and applyTransform, for computing and applying affine transformations.
new function pcAlign to align meshes and pointclouds by their principal axes
added function meshPlaneIntersect to find intersection points between a mesh and a plane
added function getFaces to get indices of faces that contain specified vertices
bugfixes and minor changes
fixed issue with argument sep in typprobClass
added option size in deformGrid3d
fixed argument tol in ray2mesh
fixed rhotol in placePatch if inflate=NULL
fixed NA in colors from meshDist
fixed rmVertex in case no faces remain
changed relaxLM to accept 2D configs
replaced workhorse function in projRead by the faster vcgClostKD
made plotNormals to work with homogenous and non-homogeneous coordinates
fixed issue in output of CVAdists (wrong attribution of p-value tables)
Changes in Morpho version 2.0.3 (2014-05-13)
added support for objects stored in a list in bindArr
made rotreverse an S3 function for matrices and mesh3d
fixed bug in slider3d if pairedLM != 0
fixed pooled within covariance matrix (covW) for single group entries
speed up rotonto, rotonmat by vectorizing
removed junk comments
added fix for weighted Grandmean in CVA (thanks to Anne-Beatrice Defour)
added check for empty patches and curves in cExtract (thanks to M. Friess for pointing that out)
added 'cutMeshPlane' and 'cutSpace' to cut a pointcloud into upper and lower part
added function 'solutionSpace' to calculate the basis of the solution space for Ax=b, with det(A)=0
minor changes in asymPermute (docu and table naming)
enabled multigroup support in asymPermute
added groupmean output in asymPermute
updateNormals: if no faces are present, mesh will be returned unchanged now. quadric faces are converted to triangular ones
add new function 'quad2trimesh' for converting quadric meshes into triangular meshes.
made code in pcaplot3d easier to maintain by creating .pcaplot3d
assigned additional attributes to output of procSym
exposed armaGinv, a simple wrapper to call Armadillos pseudo-inverse function.
Changes in Morpho version 2.0.2 (2014-02-24)
added function 'fixLMmirror' to estimate missing bilateral landmarks
wrote C++ versions of some subroutines to speed up Procrustes registration.
added function arrMean3 to calculate fast average of 3D-array
reprojection onto surface in 'slider3d' now can run in parallel (only OS X and Linux)
Changes in Morpho version 2.0.1 (2014-02-07)
'createAtlas' has new option "keep.fix" to specifiy landmarks that should be kept from sliding in case corrCurves are defined.
Changes in Morpho version 2.0 (2014-02-06)
wrote C++ implementation of 'covPCA' (much faster) and added bootstrapping option to compute confidence intervals for PC-scores (removed obsolete options "mc.cores" and "scores")
all functions calling trimesh-tools are now wrappers for much faster implementations from Rvcg
placePatch now runs in parallel
warpmovie3d now allows make movie of deformed mesh AND landmarks
Changes in Morpho version 1.99 (2013-12-18)
R-code
renamed 'adnormals' to 'updateNormals'
'permudist' is now massively faster by using C++ code for permutation. It can handle more than 2 groups now.
as the new 'permudist' is now implemented in 'groupPCA', it gets a boost, too.
added function 'RegScore' to calculate Regression scores as described in Drake & Klingenberg(2008)
covPCA now returns the distances instead of squared distances
added option to revert vecx to translate a matrix back into an array containing landmarks
adapted 'ray2mesh' to work in parallel calls and added option "mc.cores" in 'placePatch' - even in Windows
added optipn "add" in "meshDist" and "render" to add to existing rgl window.
fixed error in in 'placePatch' in case "data" is a matrix
Package documentation
switched to roxygen2
fixed some docu and added examples in 'pcaplot3d' and 'rotonmat'
added link to PDF-manual in Morpho's help page
commented out the answers in find.outliers to be able to run run_examples(...,run=FALSE) without errors
marked more examples as dontrun, as the usage of roxygen2 allows the detailed check of ALL examples by using run_examples(devtools package). This uses less checking time and keeps CRAN from complaining
Misc
translated all FORTRAN routines into C++ using Rcpp/RcppArmadillo
Changes in Morpho version 1.0 (2013-11-04)
R-code
added option "barycoords" in 'closemeshKD' and added normal weighting
made reprojection ind 'slider3d' using multiple cores in case "meshlist" is specified
added option "blockdiag" in 'CreateL' to supress returning blockdiagonal matrix containin Lsubk
significant speedup in calcGamma (responsible for sliding)
added option "meshlist" in 'slider3d' and fixed memory allocation problem for orthogonal projection with large amounts of landmarks in 'procSym' (underlying routine 'orp')
added autonaming of output in write.pts
'mergeMeshes' now allows a list of meshes to merge
fixed error in 'mcNNindex' in case k=1
added landmark matrix to output of 'cExtract'
set pointsize to 10 in 'deformGrid3d' in case "type="p""
added options "silent"/"ignore.stdout" to 'ply2mesh', 'projRead', 'ray2mesh', 'slider3d' and 'warp.mesh' to supress terminal output
added option "pt.size" instead of "radius" in 'checkLM' and 'plotAtlas' to control point/sphere size.
added option "fixRepro" in 'slider3d' and 'relaxLM' to supress reprojection of fix landmarks onto the surface. This can be useful when some fix landmarks are in "thin air".
added support for point cloud export in 'mesh2ply' and 'mesh2obj'
added option "silent" in 'rmUnrefVertex'
fixed error in 'relWarps' preventing it to work for 2D configs
added function 'checkLM'. Useful to visualize if projection by 'placePatch' was successful by browsing through sample.
added functions 'placePatch', 'createAtlas' and 'plotAtlas' for defining templates and functions to project (semi-) landmarks from an atlas onto all specimen in a given sample
fixed missing '-1' subtraction in 'covW'
added function 'mergeMeshes' to concatenate multiple triangular meshes.
made function 'procAOVsym' (procrustes Anova for object symmetry) public.
made functions 'cSize', 'mcNNindex', 'meshcube', 'meshres', 'ProcGPA' public.
added option 'info' in 'read.mpp'
merged 'CreateL' and 'CreateL2D'
rewrote large parts of 'CVA', 'groupPCA' and 'permudist' to make the code more efficient
'covPCA' now allows permutation tests to check if pairwise distances between covariance matrices are significant and reports rownames for two-group case
removed unnecessary complicated check for empty groups by simply using function 'factor' in 'covW' and 'typprobClass'
white space formatting in code
added option "mshape" to function 'orp' to specify a custom pole for projection
made function 'fx', 'PCAcrova' and 'calcTang_U' interntal-only by prefixing function name with '.'
removed unnecessary sinus calculation in 'angle.calc'
Package documentation
added docu and examples for all newly exposed functions (see above)
added examples for 'find.outliers'
added more examples for covPCA, performing permutation tests
added docu for function 'barycenter'
added a lot of examples to docu and documented data(nose)
added documentation for 'angle.calc'
added example in 'relaxLM'
added section "details" in procSym, added example in slider3d
added example for procAOVsym
changed parameters in examples for 'pls2B' and 'relaxLM' to decrease completion time
Misc
changed doParallel from Dependency to Import - needs 'doParallel' >= 1.06
removed obsolete Fortran code
added minimum version for imported package 'Matrix'(>= 1.0-1)
changed foreach, parallel and rgl (needs rgl version >= 0.93.963) from 'Depends' to 'Imports' (affecting DESCRIPTION and NAMESPACE)
massive NAMESPACE editing by switching to manual export instead of regular expression export
Changes in Morpho version 0.25-1 (2013-08-02)
R-code
replaced abind with 'bindArr' in 'fixLMtps' and 'procSym'
moved Distance calculation in 'CVA' to '.CVAdists' and radically cleaned code;
removal of redundant variables in 'groupPCA'
added option 'reflect' to 'procSym' (and underlying functions) and added copyright note for code copied from shapes package
Package documentation
added docu for new data set "boneData"
added examples in 'procSym'
added example for 'tps3d'
Misc
added additional example data (landmarks and a bone surface mesh)
updated DESCRIPTION and README
updated README added sourceforge and github download links
added README.Rd
added NEWS.Rd
Changes in Morpho version 0.25 (2013-07-24)
R-code
simplified code in 'CVA' and 'CVA.crova'
fixed issue when n-groups > n variables in 'CVA' and 'CVA.crova'
replaced 'nn2' (RANN) with 'ann' (yaImpute) because RANN got (temporarily) banned from CRAN because of violation of policy
added 'readLandmarks.csv' to read landmarks stored in spreadsheet text files (e.g. comma separated)
added check for empty groups in 'typprobClass' and 'covW'
changed cube creation in 'deformGrid3d' (much faster now).
added options weights and centerweight in 'rotonmat'
added confirmation for plotting spheres in 'deformGrid3d' when n > 1000 (can be slow)
'pcaplot3d' now works if data has only 1 PC
removed useless code remains
added 'bindArr' to concatenate matrices/arrays
changed default core value in 'closemeshKD' from detectCores() to 1.
added option 'keep' in 'rmVertex'
changed default method in 'meshDist.mesh3d' from vcglib to morpho
renamed 'regdist.raw' to 'regdist' and removed original 'regdist' (too prone to user error)
Package documentation
finally mentioned Marta Rufino for providing all examples in docu for 'CVA' (sorry Marta, I simply forgot)
fixed some docu and added examples in 'pcaplot3d' and 'rotonmat'
added docu for 'anonymize', 'r2morphoj', 'r2morphologika', 'NNshapeReg', 'kendalldist'
Misc
updated COPYRIGHT file
switched from depends to import for colorRamps, MASS, RANN