使用R语言包(LEA)【LEA示例】

1.R包的下载(R version 3.6)

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("LEA")

如果R版本是老版本的,请查看网站Bioconductor release的要求进行R包下载。
注:具体怎么在R中进行操作在以下网站中有详细说明。
http://membres-timc.imag.fr/Olivier.Francois/tutoRstructure.pdf

2.加载其他函数

source("http://membres-timc.imag.fr/Olivier.Francois/Conversion.R")
source("http://membres-timc.imag.fr/Olivier.Francois/POPSutilities.R")

3导入输入文件

#struct2geno函数的讲解
struct2geno(file = input.file, TESS = FALSE, diploid = TRUE, FORMAT = 2,
extra.row = 0, extra.col = 0, output = "./genotype.geno")

注:input.file(导入文件):structure或tess 2.3格式到LEA所使用的.geno和.lfmm格式。
TESS=FALSE:当额外的列包含所有不包含基因型信息的列时候为FALSE.
TESS=TRUE:当额外的列包含所有不包含基因型信息和地理信息的列时候为FALSE.
diploid=TRUE:代表为二倍体。
FORMAT=2:意味着每个个体使用两行数据对标记进行编码。
FORMAT=1:意味着每个个体使用一行数据对标记进行编码。
extra.row/.col:表示额外行/列数。
"./genotype.geno":输出文件的路径。

4.使用R包进行群体结构分析

4.1example1:Allelic markers(等位基因标记)

  分析在欧洲二次contract后通过空间显式结合模拟所产生的群体遗传数据。在最初的一个分离的阶段后,一个物种开始从遥远的南方殖民到欧洲,一些在伊利比亚群岛,一些在土耳其。第二次contract发生在中世纪的欧洲,靠近德国。数据由10个二倍体个体的60个族群样本组成,用100个等位基因标记对10个二倍体个体进行基因分型。

4.1.1数据的下载和转换

input.file = "http://membres-timc.imag.fr/Olivier.Francois/secondary_contact.str"
struct2geno(file = input.file, TESS = TRUE, diploid = TRUE, FORMAT = 2,
extra.row = 0, extra.col = 0, output = "secondary_contact.geno")

4.1.2k值设置

  k值的设置可以通过LEA包中的snmf函数设置完成。
library(LEA)
obj.snmf = snmf("secondary_contact.geno", K = 3, alpha = 100, project = "new")
qmatrix = Q(obj.snmf, K = 3)

4.1.3 600个个体祖先系数柱状图 {Q-matrix(用barplot呈现)}

barplot(t(qmatrix), col = c("orange","violet","lightgreen"), border = NA, space = 0,
        xlab = "Individuals", ylab = "Admixture coefficients")

4.1.4 通过在欧洲地理地图上叠加饼图法进行admixture群体估计

  为达到这个目标,我们需要读取样本的地理坐标和创建样本标志符。
  共有60个群体样本,10个在每个群体中。
coord = read.table("coordinates.coord")
pop = rep(1:60, each = 10)
K = 3
Npop = length(unique(pop))
qpop = matrix(NA, ncol = K, nrow = Npop)
coord.pop = matrix(NA, ncol = 2, nrow = Npop)
for (i in unique(pop)){
qpop[i,] = apply(qmatrix[pop == i,], 2, mean)
coord.pop[i,] = apply(coord[pop == i,], 2, mean)}
library(mapplots)
plot(coord, xlab = "Longitude", ylab = "Latitude", type = "n")
map(add = T, col = "grey90", fill = TRUE)
for (i in 1:Npop){
add.pie(z = qpop[i,], x = coord.pop[i,1], y = coord.pop[i,2], labels = "",
col = c("orange","violet","lightgreen"))}
pop = scan("mypop.txt")

4.1.5 选择集群数

在LEA里选择集群数是基于交叉熵准则,这一准则也被admixture程序所使用。交叉熵准则基于一部分被掩盖基因型的预测和交叉验证的方法。更小的交叉熵准则的值通常意味着能够更好的运行。我们执行8个K值,然后选择交叉熵的曲线到达平台期时候的K值。
obj.snmf = snmf("/Users/bcl/secondary_contact.geno", K = 1:8, ploidy = 2, entropy = T,
alpha = 100, project = "new")

plot(obj.snmf, col = "blue4", cex = 1.4, pch = 19)

4.2example2:SNP data

接下来我们考虑来自于欧洲的拟南芥的SNP数据.这些数据是从Horton等人所研究的大量数据中抽出来的一部分。调查了一号染色体上1096个近交生态型(52001个SNPs)的群体结构。

4.2.1SNP数据的下载

 数据保存在磁盘中,并且还为每次加入加载单独的坐标。
url = "http://membres-timc.imag.fr/Olivier.Francois/Arabidopsis/A_thaliana_chr1.geno"
download.file(url = url, destfile = "./A_thaliana_chr1.geno")
url = "http://membres-timc.imag.fr/Olivier.Francois/Arabidopsis/at_coord.coord"
download.file(url = url, destfile = "./at_coord.coord")

4.2.2使用snmf函数评估K值

  注:此时我们认为这些物种是这些数据的单倍体。
obj.at = snmf("/Users/bcl/A_thaliana_chr1.geno", K = 1:10, ploidy = 1, entropy = T,
CPU = 1, project = "new")

plot(obj.at, col = "blue4", cex = 1.4, pch = 19)

4.2.3可视化K=5时候祖先系数矩阵

qmatrix = Q(obj.at, K =5)
  因为只有个别数据,没有群体样本。因此我们不能像第一个例子一样使用图表映射。相反我们应该计算admixture系数的空间估计。我们在一个地理图上表示空间预测。为达到这一目的,需要一个代表欧洲的光栅网格。光栅可以从GIS应用程序下载或者网上。
asc.raster="http://membres-timc.imag.fr/Olivier.Francois/RasterMaps/Europe.asc"
grid=createGridFromAsciiRaster(asc.raster)
constraints=getConstraintsFromAsciiRaster(asc.raster, cell_value_min=0)
coord.at = read.table("at_coord.coord")
接下来,我们使用POPSutilities.R函数组中的maps函数来执行祖先系数的空间插值。输出一个漂亮颜色的admixture系数图。使用max选项,只有对祖先的最大贡献在地图的每个地理点上表示。
maps(matrix = qmatrix, coord.at, grid, constraints, method = "max",
main = "Ancestry coefficients", xlab = "Longitude", ylab = "Latitude", cex = .5)
map(add = T, interior = F)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容