R: Hadamard Matrices and Fast Hadamard Multiplication

hadamard {phangorn} | R Documentation

## Hadamard Matrices and Fast Hadamard Multiplication

### Description

A collection of functions to perform Hadamard conjugation. Hadamard matrix H with a vector v using fast Hadamard multiplication.

### Usage

    hadamard(x)

    fhm(v)

    h4st(obj, levels = c("a", "c", "g", "t"))

    h2st(obj, eps = 0.001)

### Arguments

`x` | a vector of length 2^n, where n is an integer.
`v` | a vector of length 2^n, where n is an integer.
`obj` | a data.frame or character matrix, typical a sequence alignment.
`levels` | levels of the sequences.
`eps` | Threshold value for splits.

### Details

`h2st` and `h4st` perform Hadamard conjugation for 2-state (binary, RY-coded) or 4-state (DNA/RNA) data. `write.nexus.splits` writes splits returned from `h2st` or `distanceHadamard` to a nexus file, which can be processed by Spectronet or Splitstree.

### Value

`hadamard` returns a Hadamard matrix. `fhm` returns the fast Hadamard multiplication.

### Author(s)

Klaus Schliep klaus.schliep@gmail.com

### References

Hendy, M.D. (1989). The relationship between simple evolutionary tree models and observable sequence data. Systematic Zoology, 38 310–321.

Hendy, M. D. and Penny, D. (1993). Spectral Analysis of Phylogenetic Data. Journal of Classification, 10, 5–24.

Hendy, M. D. (2005). Hadamard conjugation: an analytical tool for phylogenetics. In O. Gascuel, editor, Mathematics of evolution and phylogeny, Oxford University Press, Oxford

Waddell P. J. (1995). Statistical methods of phylogenetic analysis: Including hadamard conjugation, LogDet transforms, and maximum likelihood. PhD thesis.

### See Also

`distanceHadamard`, `lento`, `plot.networx`

### Examples

    H <- hadamard(3)
    v <- 1:8
    H %*% v
    fhm(v)

    data(yeast)

    # RY-coding
    dat_ry <- acgt2ry(yeast)
    fit2 <- h2st(dat_ry)
    lento(fit2)

    # write.nexus.splits(fit2, file = "test.nxs")
    # read this file into Spectronet or Splitstree to show the network
    ## Not run:
    dat <- as.character(yeast)
    dat4 <- phyDat(dat, type="USER", levels=c("a","c", "g", "t"), ambiguity=NULL)
    fit4 <- h4st(dat4)
    old.par <- par(no.readonly = TRUE)
    par(mfrow=c(3,1))
    lento(fit4[[1]], main="Transversion")
    lento(fit4[[2]], main="Transition 1")
    lento(fit4[[3]], main="Transition 2")
    par(old.par)

    ## End(Not run)

[Package phangorn version 2.6.2 Index]