-
Notifications
You must be signed in to change notification settings - Fork 1
/
Qsuber_PCA.R
69 lines (54 loc) · 2.12 KB
/
Qsuber_PCA.R
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Copyright 2021 Francisco Pina Martins <[email protected]>
# This file is part of Population structure in Quercus suber L. revealed by nuclear microsatellite markers.
# Qsuber_PCA is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Qsuber_PCA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Qsuber_PCA. If not, see <http://www.gnu.org/licenses/>.
library(adegenet)
library(pcaMethods)
# Read the genepop file
my_geno = read.genepop("17_pops_13_loci_DIPLOID.gen", ncode=3)
geno_data = my_geno$tab
popnames = gsub("_", "", gsub("[[:digit:]]", "", row.names(geno_data)))
pops = unique(popnames)
pop_colours = as.numeric(factor(popnames, levels=pops))
msst_pca = pca(geno_data, scale="vector", method="nipals")
svg("All_loci_PCA.svg")
par(xpd=T, mar=par()$mar+c(0,0,0,4))
slplot(msst_pca,
scol=pop_colours,
scoresLoadings=c(T,F),
sl=NULL,
spch=pop_colours)
legend(1.005, 1.05,
legend=pops,
pch=unique(pop_colours),
col=unique(pop_colours))
dev.off()
print(msst_pca@R2)
# Read the neutral loci genepop file
my_neutral_geno = read.genepop("17_pops_11_loci_DIPLOIDS_NEUTRAL.gen", ncode=3)
neutral_geno_data = my_neutral_geno$tab
popnames = gsub("_", "", gsub("[[:digit:]]", "", row.names(neutral_geno_data)))
pops = unique(popnames)
pop_colours = as.numeric(factor(popnames, levels=pops))
msst_pca = pca(neutral_geno_data, scale="vector", method="nipals")
svg("Neutral_loci_PCA.svg")
par(xpd=T, mar=par()$mar+c(0,0,0,4))
slplot(msst_pca,
scol=pop_colours,
scoresLoadings=c(T,F),
sl=NULL,
spch=pop_colours)
legend(1.005, 1.05,
legend=pops,
pch=unique(pop_colours),
col=unique(pop_colours))
dev.off()
print(msst_pca@R2)