Minimum Spanning Tree and Network
Computes a minimum spanning tree using Kruskal's algorithm, the minimum spanning network using Bandelt et al.'s algorithm, or the randomized minimum spanning tree (Paradis 2018).
mst(d) msn(d) rmst(d, B = NULL, stop.criterion = NULL, iter.lim = 1000, quiet = FALSE)
d |
a distance matrix, either as an object of class |
B |
number of randomizations. |
stop.criterion |
the stopping criterion if |
iter.lim |
the maximum number of iterations. |
quiet |
a logical value specifying whether to indicate progress of calculations. |
For the RMST, the calculations stop when no new links are found after a
number of successive iterations specified by stop.criterion
. By
default, this number is ceiling(sqrt(n)) where n is the number of
observations. This criterion is ignored if B
is given, or if n
< 6 in which case complete enumeration is done. In all cases, no more
than iter.lim
iterations are done.
an object of class "haploNet"
.
ape has a function named mst
which is older (and used by
other packages) and returns its results in a different form. The
present version is more efficient. If you want to use the older
version after loading pegas, use ape::mst
since ape
will certainly always be loaded before pegas.
Emmanuel Paradis
Bandelt, H. J., Forster, P. and Rohl, A. (1999) Median-joining networks for inferring intraspecific phylogenies. Molecular Biology and Evolution, 16, 37–48.
Kruskal, J. B., Jr. (1956) On the shortest spanning subtree of a graph and the traveling salesman problem. Proceedings of the American Mathematical Society, 7, 48–50.
Paradis, E. (2018) Analysis of haplotype networks: the randomized minimum spanning tree method. Methods in Ecology and Evolution, 9, 1308–1317. DOI: 10.1111/2041-210X.12969.
data(woodmouse) d <- dist.dna(woodmouse, "n") (r <- mst(d)) plot(r) ## a case where the RMST and the MJN are identical: x <- c(">A", "TAAGTGCAT", ">B", "TAAATGCAT", ">C", "TAGGTGCAT", ">D", "TAAGTACAT", ">E", "TAAGTGTAT", ">F", "TAAGTACAC", ">G", "TAAGTACGT", ">H", "CAAGTACAC", ">I", "CAAGCACAC", ">J", "CAAGTACAT", ">K", "CGAGTACAT", ">L", "TAAGTACGC", ">M", "CAAGCACAT") fl <- tempfile() cat(x, file = fl, sep = "\n") x <- read.dna(fl, "f") tr <- rmst(dist.dna(x, "n")) ts <- mjn(x) stopifnot(all.equal(tr, ts)) unlink(fl)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.