群体遗传学统计指标——群体间分歧度检验(Fst)

基本概念

Fst:群体间遗传分化指数,是种群分化和遗传距离的一种衡量方法,分化指数越大,差异越大。适用于亚群体间多样性的比较。用于衡量种群分化程度,取值从0到1,为0则认为两个种群间是随机交配的,基因型完全相似;为1则表示是完全隔离的,完全不相似。它往往从基因的多样性来估计,比如SNP。是一种以哈温平衡为前提的种群遗传学统计方法。

在群体遗传学中衡量群体间的遗传分化的程度的指标有许多种,较为常见的就是遗传分化指数(Fst),fst是由F统计量演变而来,F统计量主要有三种(FIS,FIF,FST)。Fst是针对一对等位基因,如果基因座上存在复等位基因,则需要用Gst衡量,基因差异分化系数(gene differentiation coefficient,Gst)。假定有s个地方群体,第k个地方群体相对大小为wk,k地方群体中第i个等位基因频率为qk(i),杂合体频率观察值为hk,那么,整个群体中观察到的杂合体频率平均值HI,地方群体为理想群体的期望杂合体频率平均值HS,整个群体为理想群体的期望杂合体频率HT,分别为:

FIS,是HI相对于HS减少量的比值,即地方群体的平均近交系数。

FST,是HS相对于HT减少量的比值,即有亲缘关系地方群体间的平均近交系数。

FIT,是HI相对于HT减少量的比值,即整个群体的平均近交系数。

简单来说,两个种群之间遗传差异的基本测量就是统计量FST。在遗传学中,F一词通常代表“近亲繁殖”,它倾向于减少群体中的遗传变异。遗传变异可以用杂合度来衡量,所以F一般表示群体中杂合性的减少。 FST是与它们所属的总群体相比,亚群体中杂合性的减少量。

具体可以用下面的公式表示:

Fst= (Ht-Hs)/ Ht

Hs:亚群体中的平均杂合度

Ht:复合群体中的平均杂合度

Fst值的取值范围是【0,1】,最大值为1表明两个群体完全分化,最小值为0表明群体间无分化。

在实际的研究中Fst值为0--0.05时说明群体间遗传分化很小,可以不做考虑;

为0.05--0.15时,表明群体间存在中等程度的遗传分化;

为0.15--0.25时群体间存在较大的遗传分化;

为0.25以上的时候群体间就存在很大的遗传分化了。

不用看太懂的数学公式

理论上计算Fst的步骤

1)找出每个亚群的等位基因频率。

2)查找复合群体的平均等位基因频率

3)计算每个亚群的杂合度(2pq)

4)计算这些亚群杂合度的平均值,这是HS。

5)根据总体等位基因频率计算杂合度,这是HT。

6)最后,计算FST =(HT-HS)/ HT

举个例子:

基因SLC24A5是黑色素表达途径的关键部分,其导致皮肤和毛发色素沉着。与欧洲较轻的皮肤色素密切相关的SNP是rs1426654。 SNP有两个等位基因A和G,其中G与轻度皮肤相关,在犹他州的欧裔美国人中,频率为100%。美洲印第安人与美国印第安人混血儿的SNP在频率上有所不同。墨西哥的样本有38%A和62%G;在波多黎各,频率分别为59%A和41%G,查尔斯顿的非裔美国人样本中有19%A和81%G.这个例子中的FST是什么?

手动计算Fst步骤

怎么做?

看了眼花缭乱的理论知识,感觉云里雾里的应该是正常的感受。总结一下,其实Fst分析就是看两个群体之间分化程度的一种方法,Fst值越大(越接近1)表明两个群体间分化程度越高,亲缘关系越远;Fst值越小(越接近0)表明群体间分化程度越低,亲缘关系越近。

一般我们用于分析的序列都很长,样本量也很大,靠笔算可能比西天取经还难。所以我们用强大的VCF分析工具——vcftools软件来计算Fst值。

计算FST值有两种情况:

SNP单点计算

vcftools --vcf YourDataName.vcf --weir-fst-pop population_1.txt --weir-fst-pop population_2.txt --out YourDataName_1_2

按照区域(窗口模式)计算

vcftools --vcf YourDataName.vcf --weir-fst-pop population_1.txt --weir-fst-pop population_2.txt --out YourDataName_1_2 --fst-window-size 500000 --fst-window-step 50000

其中--vcf 是输入vcf格式文件,里面保存的是全部样品的位点信息,具体细节大家自己查一查。

--weir-fst-population 这个命令是告诉计算机需要计算的群体ID名,该文件必须是txt格式,每个ID占一行,每次计算两个群之间的关系,因此需要population_1.txt和population_2.txt两个文件。

单点计算就是每个SNP位点单独计算,窗口模式就是按照预先设定的步长,多个SNP位点计算一次,两者的区别就是在后面加上窗口的大小和步长参数:--fst-window-size 500000 --fst-window-step 50000 ,这里窗口设置为500kb,步长设置为50kb,窗口的设置没有一个固定的标准和要求,都是按照自己的需要而定。

数据可视化

数据可视化换句话说就是清(hua)楚(shi)的展示你的结果。回头看看,在Fst分析中,Fst值越大(越接近1)表明两个群体间分化程度越高,亲缘关系越远;Fst值越小(越接近0)表明群体间分化程度越低,亲缘关系越近。那么我们所画的图,应该要清晰的展示两个群体Fst值的大小。因此,我们会选择散点图,它可以展示在整个基因组上,每个区域两个群体Fst值的大小。当然,如果你要比较多个群体之间的关系,也可以把整个基因组看作一个整体,用箱图展示群体之间的Fst值大小关系。

废话太多,先上个某文章的经典图片:

红番茄和粉番茄的比较

文章对它的描述如下:A major genomic signature of modern processing tomatoes and three causative variants for pink fruit. FST values for all SNP sites between tomatoes for fresh consumption and modern processing tomatoes. Blue dots above the horizontal dashed line indicate highly divergent SNPs (top 1%; FST = 0.4464).

怎么画?

我是用R画的,当然你也可以直接把数据导入EXCEL,用EXCEL画也是非常漂亮的。

我的数据整理后长这样,用到的是窗口模式返回结果的WEIGHTED_FST列数据(这里我重新命名为Sample):

整理后用于作图的数据

分享一下我写得一个R:(大家需要自己根据自己的数据就行调整,但是万变不离其中,你们可以的!)

#读入数据;

dt1<- read.delim("Fst.txt",sep="\t", header = T, check.names = F)

# 加载ggplot2包;

library(ggplot2)

#建立颜色与数据的关系,这里让点按照数据大小显示不同的颜色;

p1<-ggplot(dt1, aes(No, Sample,color= factor(Chr)))+geom_point(color=dt1$Color)

#设置x轴范围,避免点的溢出绘图区(我的基因组全长9M,8条染色体,所以根据各染色体的大小设置了如下参数)

p1<-p1+scale_x_continuous(limits = c(-1000, 9059582),breaks = c(440000, 1370000, 2410000, 3515000, 4610000,5800000,7095000,8399791),label = c("1","2","3","4","5","6","7","8"))

#设置y轴范围

p1<-p1+scale_y_continuous(limits = c(-0.005,1.005),breaks = c(0,0.25,0.50,0.75,1),labels = c("0.00","0.25","0.50","0.75","1.00"))

#设置图例、坐标轴、图表的标题;

p1<-p1+labs(y="Fst",x="Chr")

#自定义图表主题,对图表做精细调整;

top.mar=0.2

right.mar=0.2

bottom.mar=0.2

left.mar=0.2

mytheme<-theme(panel.grid.major =element_blank(),

              panel.grid.minor = element_blank(),

              panel.background = element_blank(),

              panel.border = element_blank(),

              axis.line.y = element_line(color = "black"),

              axis.line.x = element_line(color = "white"),

              axis.title.y = element_text(size = rel(1.2)),

              axis.title.x = element_text(size = rel(1.2),color = "black"),

              axis.text.y = element_text(size=rel(1.2),color="black"),

              axis.text.x = element_text(size=rel(1.2),color="black"),

              plot.margin=unit(x=c(top.mar,right.mar,bottom.mar,left.mar),units="inches"))

p1<-p1+mytheme

参考:

Vcftools Manual

Genomic analyses provide insights into the history of tomato breeding

Fst的计算原理与实战

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342