snpgdsEIGMIX: Eigen-analysis on SNP genotype data

Description Usage Arguments Value Author(s) References See Also Examples

View source: R/PCA.R

Description

Eigen-analysis on IBD matrix based SNP genotypes.

Usage

1
2
3
4
5
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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)

Example output

Loading required package: gdsfmt
SNPRelate -- supported by Streaming SIMD Extensions 2 (SSE2)
Eigen-analysis on genotypes:
Excluding 365 SNPs on non-autosomes
Excluding 1 SNP (monomorphic: TRUE, MAF: NaN, missing rate: NaN)
    # of samples: 279
    # of SNPs: 8,722
    using 1 thread
Eigen-analysis:    the sum of all selected genotypes (0,1,2) = 2446510
CPU capabilities: Double-Precision SSE2
Thu Jul  1 09:48:16 2021    (internal increment: 408)

[..................................................]  0%, ETC: ---        
[==================================================] 100%, completed, 1s
Thu Jul  1 09:48:17 2021    Begin (eigenvalues and eigenvectors)
Thu Jul  1 09:48:17 2021    Done.
List of 7
 $ sample.id: chr [1:279] "NA19152" "NA19139" "NA18912" "NA19160" ...
 $ snp.id   : int [1:8722] 1 2 3 4 5 6 7 8 9 10 ...
 $ eigenval : num [1:279] 20.173 10.005 0.881 0.743 0.697 ...
 $ eigenvect: num [1:279, 1:32] -0.0813 -0.0833 -0.08 -0.0862 0.0264 ...
 $ afreq    : num [1:8722] 0.6989 0.2043 0.0484 0.9402 0.8817 ...
 $ ibd      : NULL
 $ diagadj  : logi TRUE
 - attr(*, "class")= chr "snpgdsEigMixClass"
  [1] 20.1730520 10.0046139  0.8806819  0.7429476  0.6968208  0.6874427
  [7]  0.6525443  0.6054765  0.5295101  0.5076562  0.4967220  0.4906583
 [13]  0.4781425  0.4763934  0.4612989  0.4592947  0.4474031  0.4418133
 [19]  0.4385189  0.4334209  0.4283672  0.4226959  0.4194047  0.4108246
 [25]  0.4002398  0.3969773  0.3919273  0.3856560  0.3823628  0.3789550
 [31]  0.3786969  0.3748523        NaN        NaN        NaN        NaN
 [37]        NaN        NaN        NaN        NaN        NaN        NaN
 [43]        NaN        NaN        NaN        NaN        NaN        NaN
 [49]        NaN        NaN        NaN        NaN        NaN        NaN
 [55]        NaN        NaN        NaN        NaN        NaN        NaN
 [61]        NaN        NaN        NaN        NaN        NaN        NaN
 [67]        NaN        NaN        NaN        NaN        NaN        NaN
 [73]        NaN        NaN        NaN        NaN        NaN        NaN
 [79]        NaN        NaN        NaN        NaN        NaN        NaN
 [85]        NaN        NaN        NaN        NaN        NaN        NaN
 [91]        NaN        NaN        NaN        NaN        NaN        NaN
 [97]        NaN        NaN        NaN        NaN        NaN        NaN
[103]        NaN        NaN        NaN        NaN        NaN        NaN
[109]        NaN        NaN        NaN        NaN        NaN        NaN
[115]        NaN        NaN        NaN        NaN        NaN        NaN
[121]        NaN        NaN        NaN        NaN        NaN        NaN
[127]        NaN        NaN        NaN        NaN        NaN        NaN
[133]        NaN        NaN        NaN        NaN        NaN        NaN
[139]        NaN        NaN        NaN        NaN        NaN        NaN
[145]        NaN        NaN        NaN        NaN        NaN        NaN
[151]        NaN        NaN        NaN        NaN        NaN        NaN
[157]        NaN        NaN        NaN        NaN        NaN        NaN
[163]        NaN        NaN        NaN        NaN        NaN        NaN
[169]        NaN        NaN        NaN        NaN        NaN        NaN
[175]        NaN        NaN        NaN        NaN        NaN        NaN
[181]        NaN        NaN        NaN        NaN        NaN        NaN
[187]        NaN        NaN        NaN        NaN        NaN        NaN
[193]        NaN        NaN        NaN        NaN        NaN        NaN
[199]        NaN        NaN        NaN        NaN        NaN        NaN
[205]        NaN        NaN        NaN        NaN        NaN        NaN
[211]        NaN        NaN        NaN        NaN        NaN        NaN
[217]        NaN        NaN        NaN        NaN        NaN        NaN
[223]        NaN        NaN        NaN        NaN        NaN        NaN
[229]        NaN        NaN        NaN        NaN        NaN        NaN
[235]        NaN        NaN        NaN        NaN        NaN        NaN
[241]        NaN        NaN        NaN        NaN        NaN        NaN
[247]        NaN        NaN        NaN        NaN        NaN        NaN
[253]        NaN        NaN        NaN        NaN        NaN        NaN
[259]        NaN        NaN        NaN        NaN        NaN        NaN
[265]        NaN        NaN        NaN        NaN        NaN        NaN
[271]        NaN        NaN        NaN        NaN        NaN        NaN
[277]        NaN        NaN        NaN
  sample.id pop         EV1         EV2
1   NA19152 YRI -0.08134977 -0.01800612
2   NA19139 YRI -0.08332236 -0.01552648
3   NA18912 YRI -0.07999713 -0.01544285
4   NA19160 YRI -0.08619874 -0.02043080
5   NA07034 CEU  0.02638517  0.07853139
6   NA07055 CEU  0.02730423  0.08396931

SNPRelate documentation built on Nov. 8, 2020, 5:31 p.m.