snpgdsEIGMIX {SNPRelate} | R Documentation |
Eigen-analysis on IBD matrix based SNP genotypes.
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), ...)
gdsobj |
an object of class |
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 |
remove.monosnp |
if |
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 |
eigen.cnt |
output the number of eigenvectors; if |
diagadj |
|
ibdmat |
if |
verbose |
if |
x |
a |
eig |
indices of eigenvectors, like |
... |
the arguments passed to or from other methods, like
|
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 |
diagadj |
the argument |
Xiuwen Zheng
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
snpgdsAdmixProp
, snpgdsAdmixPlot
,
snpgdsPCA
, snpgdsPCASNPLoading
,
snpgdsPCASampLoading
# 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) # 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)