snpgdsEIGMIX {SNPRelate} | R Documentation

## Eigen-analysis on SNP genotype data

### Description

Eigen-analysis on IBD matrix based SNP genotypes.

### Usage

    snpgdsEIGMIX(gdsobj, sample.id=NULL, snp.id=NULL, autosome.only=TRUE,
        remove.monosnp=TRUE, maf=NaN, missing.rate=NaN, num.thread=1L,
        eigen.cnt=32L, diagadj=TRUE, ibdmat=FALSE, verbose=TRUE)
    ## S3 method for class 'snpgdsEigMixClass'
    plot(x, eig=c(1L,2L), ...)

### Arguments

`gdsobj` | an object of class `SNPGDSFileClass`, a SNP GDS file
`sample.id` | a vector of sample id specifying selected samples; if NULL, all samples are used
`snp.id` | a vector of snp id specifying selected SNPs; if NULL, all SNPs are used
`autosome.only` | if `TRUE`, use autosomal SNPs only; if it is a numeric or character value, keep SNPs according to the specified chromosome
`remove.monosnp` | if `TRUE`, remove monomorphic SNPs
`maf` | to use the SNPs with ">= maf" only; if NaN, no MAF threshold
`missing.rate` | to use the SNPs with "<= missing.rate" only; if NaN, no missing threshold
`num.thread` | the number of (CPU) cores used; if `NA`, detect the number of cores automatically
`eigen.cnt` | output the number of eigenvectors; if `eigen.cnt < 0`, returns all eigenvectors; if `eigen.cnt==0`, no eigen calculation
`diagadj` | `TRUE` for diagonal adjustment by default
`ibdmat` | if `TRUE`, returns the IBD matrix
`verbose` | if `TRUE`, show information
`x` | a `snpgdsEigMixClass` object
`eig` | indices of eigenvectors, like `1:2` or `1:4`
`...` | the arguments passed to or from other methods, like `pch`, `col`

### Value

Return a `snpgdsEigMixClass` object, and it is a list:

`sample.id` | the sample ids used in the analysis
`snp.id` | the SNP ids used in the analysis
`eigenval` | eigenvalues
`eigenvect` | eigenvactors, "# of samples" x "eigen.cnt"
`afreq` | allele frequencies
`ibd` | the IBD matrix when `ibdmat=TRUE`
`diagadj` | the argument `diagadj`

### Author(s)

Xiuwen Zheng

### References

Zheng X, Weir BS. Eigenanalysis on SNP Data with an Interpretation of Identity by Descent. Theoretical Population Biology. 2016 Feb;107:65-76. doi: 10.1016/j.tpb.2015.09.004

### See Also

`snpgdsAdmixProp`, `snpgdsAdmixPlot`, `snpgdsPCA`, `snpgdsPCASNPLoading`, `snpgdsPCASampLoading`

### Examples

    # open an example dataset (HapMap)
    genofile <- snpgdsOpen(snpgdsExampleFileName())

    # get population information
    #   or pop_code <- scan("pop.txt", what=character())
    #   if it is stored in a text file "pop.txt"
    pop_code <- read.gdsn(index.gdsn(genofile, "sample.annot/pop.group"))

    # get sample id
    samp.id <- read.gdsn(index.gdsn(genofile, "sample.id"))

    # run eigen-analysis
    RV <- snpgdsEIGMIX(genofile)
    RV

    # eigenvalues
    RV$eigenval

    # make a data.frame
    tab <- data.frame(sample.id = samp.id, pop = factor(pop_code),
        EV1 = RV$eigenvect[,1],    # the first eigenvector
        EV2 = RV$eigenvect[,2],    # the second eigenvector
        stringsAsFactors = FALSE)
    head(tab)

    # draw
    plot(tab$EV2, tab$EV1, col=as.integer(tab$pop),
        xlab="eigenvector 2", ylab="eigenvector 1")
    legend("topleft", legend=levels(tab$pop), pch="o", col=1:4)

    # define groups
    groups <- list(CEU = samp.id[pop_code == "CEU"],
        YRI = samp.id[pop_code == "YRI"],
        CHB = samp.id[is.element(pop_code, c("HCB", "JPT"))])

    prop <- snpgdsAdmixProp(RV, groups=groups)

    # draw
    plot(prop[, "YRI"], prop[, "CEU"], col=as.integer(tab$pop),
        xlab = "Admixture Proportion from YRI",
        ylab = "Admixture Proportion from CEU")
    abline(v=0, col="gray25", lty=2)
    abline(h=0, col="gray25", lty=2)
    abline(a=1, b=-1, col="gray25", lty=2)
    legend("topright", legend=levels(tab$pop), pch="o", col=1:4)

    # close the genotype file
    snpgdsClose(genofile)

[Package SNPRelate version 1.26.0 Index]