snpgdsAdmixProp: Estimate ancestral proportions from the eigen-analysis

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

View source: R/PCA.R

Description

Estimate ancestral (admixture) proportions based on the eigen-analysis.

Usage

1
snpgdsAdmixProp(eigobj, groups, bound=FALSE)

Arguments

eigobj

an object of snpgdsEigMixClass from snpgdsEIGMIX, or an object of snpgdsPCAClass from snpgdsPCA

groups

a list of sample IDs, such like groups = list( CEU = c("NA0101", "NA1022", ...), YRI = c("NAxxxx", ...), Asia = c("NA1234", ...))

bound

if TRUE, the estimates are bounded so that no component < 0 or > 1, and the sum of proportions is one

Details

The minor allele frequency and missing rate for each SNP passed in snp.id are calculated over all the samples in sample.id.

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"

ibdmat

the IBD matrix

Author(s)

Xiuwen Zheng

References

Zheng X, Weir BS. Eigenanalysis on SNP Data with an Interpretation of Identity by Descent. Theoretical Population Biology. 2015 Oct 23. pii: S0040-5809(15)00089-1. doi: 10.1016/j.tpb.2015.09.004. [Epub ahead of print]

See Also

snpgdsEIGMIX, snpgdsPCA, snpgdsAdmixPlot

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
51
52
53
# 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)


# draw
snpgdsAdmixPlot(prop, group=pop_code)


# 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)
Working space: 279 samples, 8,722 SNPs
    using 1 (CPU) core
Eigen-analysis:    the sum of all selected genotypes (0,1,2) = 2446510
CPU capabilities: Double-Precision SSE2
Wed Jun  6 09:33:39 2018    (internal increment: 408)

[..................................................]  0%, ETC: ---    
[==================================================] 100%, completed in 0s
Wed Jun  6 09:33:39 2018    Begin (eigenvalues and eigenvectors)
Wed Jun  6 09:33:39 2018    Done.
  [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.