R: Minimum Spanning Tree and Network

mst {pegas} | R Documentation

## Minimum Spanning Tree and Network

### Description

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).

### Usage

    mst(d)
    msn(d)
    rmst(d, B = NULL, stop.criterion = NULL, iter.lim = 1000,
         quiet = FALSE)

### Arguments

`d` | a distance matrix, either as an object of class `"dist"`, or a (square symmetric) matrix.
`B` | number of randomizations.
`stop.criterion` | the stopping criterion if `B` is not given (see details).
`iter.lim` | the maximum number of iterations.
`quiet` | a logical value specifying whether to indicate progress of calculations.

### Details

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.

### Value

an object of class `"haploNet"`.

### Note

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.

### Author(s)

Emmanuel Paradis

### References

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.

### See Also

`haploNet`, `mjn`

### Examples

    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)

[Package pegas version 1.1 Index]