群体遗传笔记(一):群体间选择信号的检测及GO注释

从获取下机数据做质控、比对,到calling snp获得vcf文件这一步,网上已经有非常详细的教程,有GATK4.0和全基因组数据分析实践(上),还有Samtools+bcftools Call SNP等等。但是在群体遗传的研究中,我们经常需要比较不同群体的vcf文件,鉴定不同群体间基因组水平上发生分化的区域,并注释其发生分化的基因,网上对于这类群体选择信号分析的分享还比较少。

我通过计算Fst和TajimaD这两个经典的指数,来进行选择信号的分析。话不多说,先走一遍流程吧!

1、工具和文件的准备

工具:vcftools;snpEff;

文件:突变型群体的vcf文件(DA.vcf);包含了突变型和野生型两个群体的vcf文件(all.vcf);突变型群体信息(DA.txt);野生型群体信息(non_DA.txt);参考基因组的GFF注释文件(如果GFF注释文件中没有对应的GO编号信息,则还需要该物种基因ID与GO编号的对应信息文件annot.go.tab)

2、滑窗计算Fst和TajimaD值

vcftools可以通过设置窗口大小来计算染色体(或scaffolds)上指定区域的Fst和TajimaD的值,但不足的是在计算TajimaD值时,不能设置步长(可使用VCF-kit进行可设置步长的计算),因此,为了方便后续的分析,我在这里计算Fst和TajimaD时,只设置了窗口大小(10000),未设置步长。

vcftools --vcf all.vcf --weir-fst-pop DA.txt --weir-fst-pop non_DA.txt --fst-window-size 10000 --out da_nonda

生成da_nonda.windowed.weir.fst 文件

CHROM BIN_START BIN_END N_VARIANTS WEIGHTED_FST MEAN_FST

1      1      10000  7      0.0976319      0.0971726

1      10001  20000  61      0.0511299      0.0499982

1      20001  30000  49      0.0372642      0.0402562

1      30001  40000  49      0.0679565      0.073192

1      40001  50000  17      0.0299695      0.0355619

1      50001  60000  56      0.101204        0.105008

1      60001  70000  180    0.0951801      0.100651

1      70001  80000  21      0.07005 0.0728101

1      80001  90000  60      0.170809        0.178863

1      90001  100000  21      0.0920029      0.10329

vcftools --vcf DA.vcf --TajimaD 10000 --out DA

生成DA.Tajima.D文件

CHROM BIN_START N_SNPS TajimaD

1      0      9      2.88793

1      10000  40      3.12075

1      20000  70      2.90904

1      30000  90      3.37423

1      40000  49      3.24297

1      50000  88      3.31503

1      60000  329    3.52148

1      70000  26      2.38513

1      80000  82      2.30261

1      90000  82      2.37531

1      100000  12      2.48976

1      110000  86      2.43792

1      120000  52      2.95367

1      130000  57      3.03159

1      140000  71      3.06152

1      150000  142    3.478

1      160000  0      nan

1      170000  2      0.34569

1      180000  0      nan

3、对Fst和TajimaD值进行筛选、排序

首先对生成Fst文件进行排序,将文件按照第六列,也就是MEAN_FST这列值,从大到小进行排序

sort -nr -k6 da_nonda.windowed.weir.fst 

1 12910001 12920000 1 2.47818e-17 2.47818e-17

11      11750001        11760000        1      2.47818e-17    2.47818e-17

11      3990001 4000000 2      2.18381e-18    2.29795e-18

10      7260001 7270000 1      2.10168e-17    2.10168e-17

7      16280001        16290000        2      1.0842e-17      1.23909e-17

1      13520001        13530000        2      1.0842e-17      1.23909e-17

7      23470001        23480000        1      0.9375  0.9375

8      18430001        18440000        1      0.931034        0.931034

1      8430001 8440000 1      0.845361        0.845361

9      9550001 9560000 1      0.833333        0.833333

9      5930001 5940000 1      0.833333        0.833333

9      13450001        13460000        1      0.833333        0.833333

排序之后发现,由于有些值过小,在使用科学计数法时排在了正常计数值的前面,为了去掉这个错误,先把使用科学计数法的值,统一归为0,再进行排序

awk '{if($6~/e/)$6=0}1' da_nonda.windowed.weir.fst > da_nonda.window.clean.fst && sort -rn -k6 da_nonda.windowed.clean.fst  > da_nonda.windowed.sort.fst

对文件第2列做减1处理,方便后面与TajimaD匹配

awk '{$2 = $2-1;print$0}' sp1_da.window.sort.fst > sp1_da.sort.fst

统计da_nonda.sort.fst有多少行

wc -l da_nonda.sort.fst

17824

取Fst值最大的前10%窗口,作为候选选择区域

head -n 1782 da_nonda.sort.fst > da_nonda.top0.1.fst


对于TajimaD文件,先清除掉第4列为nan的行,再对其进行排序,取前5%和后5%的值

sed -e '/nan/d' DA.Tajima.D > DA.clean.tajimaD && sort -nr -k4 DA.clean.tajimaD > DA.sort.tajimaD

wc -l DA.sort.tajimaD

19484

head -n 974 DA.sort.tajimaD > DA.top0.05.tajimaD

tail -n 974 DA.sort.tajimaD > DA.bot0.05.tajimaD

取Fst前10%区域和TajimaD前5%(后5%)区域的交集,并按照染色体(scaffolds)顺序排序,将得到的这些窗口作为受选择区域

cat DA.top0.05.tajimaD da_nonda.top0.1.fst > DA.top && awk 'pass==1 { count[$1,$2]++ } pass==2 { if(count[$1,$2]>1) print }' pass=1 DA.top pass=2 DA.top > DA.top.site

wc -l DA.top.site

40

head -n 20 DA.top.site > DA.top.keep.site

sort -n -k1 DA.top.keep.site > DA.top.sort.site

得到的文件如下

1 17540000 2 1.9458

1      28520000        3      1.96716

2      17140000        5      2.41094

2      19520000        2      2.03336

2      19620000        2      1.97256

2      19630000        2      2.03336

2      21790000        2      1.92526

2      28710000        2      2.03336

3      12170000        12      2.63244

3      14190000        12      2.74771

3      25930000        4      1.94295

3      4700000 4      2.25325

4      8030000 5      2.04905

5      8680000 16      2.6894

6      13390000        7      2.06337

6      22180000        3      2.0041

7      23620000        2      1.92526

8      8650000 3      2.24976

11      5080000 3      2.04485

12      1160000 6      2.23514

4、使用snpEff对DA.vcf文件进行注释

snpEff的教程很多,先SnpEff 配置基因组注释文件,再snpEFF注释vcf-笔记,最终得到包含注释信息的DA.annotation.vcf

#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT sample12 sample13 sample14 sample15 sample16 sample17 samp

le18        sample19        sample20        sample21

1      3923    .      T      C      98      PASS    BQB=0.169762;HOB=0.5;ICB=1;MQ=40;MQ0F=0.0322581;MQB=0.000633889;MQSB=0.975265;RPB=0.103031;SGB=-0.662043;VDB=0.07878

29;DP=198;DP4=60,33,30,28;AN=10;AC=5;ANN=C|intergenic_region|MODIFIER|CHR_START-VJ01Gene00001|CHR_START-VJ01Gene00001|intergenic_region|CHR_START-VJ01Gene00001|||n.3923T>C|

|||||  GT:AD:ADF:ADR:DP:PL:SP  ./.:.:.:.:.:.:. 0/1:12,9:8,6:4,3:21:55,0,255:0  0/1:27,14:17,8:10,6:41:132,0,255:1      ./.:.:.:.:.:.:. 0/1:15,11:9,6:6,5:28:108,0,255:0

        0/1:18,13:11,5:7,8:31:105,0,255:5      ./.:.:.:.:.:.:. 0/1:21,9:15,4:6,5:30:70,0,255:6 ./.:.:.:.:.:.:. ./.:.:.:.:.:.:.

5、从物种的基因ID到GO ID

得到分化区域内SNP的注释信息,并去掉intron区和同义突变的位点

awk '$3 = "vcftools --vcf DA.annotation.vcf --chr"" " $1" " "--from-bp"" "$2" " "--to-bp"" "$2+10000" " "--recode --recode-INFO-all --out"" "$1"_"$2 {print $3}' DA.top.sort.site > vcf.sh

sh vcf.sh

grep -v "int" *.recode.vcf|grep -v "synonymous_variant" > non_int_synon.vcf

提取SNP位点所对应的基因ID信息

awk '{print $8}' non_int_synon.vcf|grep -o 'VJ01Gene[0-9][0-9][0-9][0-9][0-9]' > geneID.txt

去重复

sort -n geneID.txt | uniq > clean_geneID.txt

将物种的基因ID与GO数据库的ID对应

awk 'ARGIND==1{a[$1]=$0} ARGIND==2 && ($1 in a) {print $0}' clean_geneID.txt annot.go.tab > geneID_goID.txt

提取GO ID

awk '{print $2}' geneID_goID.txt > goID.txt

less goID.txt

GO:0004725

GO:0006570

GO:0035335

GO:0004190

GO:0006508

GO:0004190

GO:0005764

GO:0006508

这样就得到了Fst top0.1和TajimaD top 0.05两者都存在的GO ID,即受到平衡选择的基因,TajimaD bot 0.05筛选的是受到定向选择的基因,做法也是一样的。

最后,对我们得到的基因进行GO富集分析,在线GO富集的工具有很多,基迪奥在线云分析平台和遗传所王秀杰课题组开发的GOEAST平台都很方便做。基迪奥平台的富集分析结果如下


GO富集


写在最后:从去年11月拿到下机的重测序数据,并简单搭建了服务器分析环境,一路摸着石头过河,战战兢兢,在度娘和github两位老师的指导下才逐步入门,希望和更多做群体重测序的小伙伴交流啊!QQ:657231499



 

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

推荐阅读更多精彩内容