基于重测序数据计算 iHS 选择信号

Integrated Haplotype Score (iHS) (Voight et al., 2006) 是基于单倍型的选择信号检测软件。iHS 通过比较单倍型频率的衰减速度来检测选择信号。具体来说,iHS 衡量了与一个给定等位基因相关的单倍型的连锁不平衡(LD)在追溯时的变化率。如果一个基因座在群体中受到了强烈的正向选择,那么与该基因座相关的单倍型将显示出不平衡的追溯,即高频等位基因的单倍型将保持相对较高的频率。

GitHub - szpiech/selscan: Haplotype based scans for selection

(https://github.com/szpiech/selscan)

从上面链接可以下载软件 selscan,这个软件可以计算 iHS、EHH、XP-EHH、iHH12、nSL、XP-nSL,本文着重介绍 iHS 的计算过程,其余的看情况也会尝试。

selscan 软件是免编译的,下载可以直接使用。使用方法为:

selscan --ihs --hap <haplotypes> --map <mapfile> --out <outfile>

我们需要准备 --hap 文件和 --map 文件。

通常,我们很难获得单倍型的文件,重测序数据的 VCF 文件也可以,但在此之前需要对文件进行 phasing。

1.1 VCF 文件预处理

基于单倍型的计算只需要种对中一个群体的数据,计算的是种内的单倍型情况.

从总 VCF 文件中调出单个群体的 VCF 文件,XX.list 是该群体的样本列表:

bcftools view XX.vcf.recode.vcf -Oz -o XX.vcf.gz

bcftools index XX.vcf.gz

bcftools view -S   XX.list   XX.vcf.gz > XX.vcf

而后,按染色体将文件分割:

#!/bin/bash

chr_list=("chr01" "chr02" "chr03" "chr04" "chr05" "chr06" "chr07" "chr08" "chr09" "chr10" "chr11" "chr12")

for i in "${chr_list[@]}"

do

    vcftools --vcf nNEP.vcf --chr "$i" --recode --out "$i.vcf"

done

使用 vcftools 对文件进行按染色体分割,每条染色体分开计算。



这部分基本就可以进行 phasing 了,但我在计算的时候,不知道什么原因,部分缺失位点的基因型,理论上应该是  ./.   ,但部分位点变成了      ,这会导致 phasing 过程无法读取文件,我也没查到怎么解决,就直接写了个 perl 脚本将   的基因型改为了  ./.   。

脚本见 :修改 VCF 文件中错误编码的基因型

这一段可以忽略,大家可能不会遇到这个问题。



1.2 Beagle 软件进行 phasing

软件官网:

http://faculty.washington.edu/browning/beagle/

同样,下载下来就可以直接使用,不需要编译安装。

java   -Xmx10g   -jar      beagle.18May20.d20.jar      gt=XX.vcf    map=XX.map      out=xx.phased         nthreads=6

上述是计算示例,分别对每条染色体进行计算,得到的结果是一个压缩文件,不需要解压,后面直接读取即可。

gt 指定的是基因型文件,即 VCF 文件;但这里需要指定一个 map 文件,如果是模式植物的话比较好说,给一个遗传图谱即可,物理距离对应遗传距离。

第一列是染色体;第二列是位点ID,任意指定;第三列是遗传位置;第四列是物理位置。

如果没有遗传图谱也可以,默认按 1Mb 为 1cM 进行计算。

1.3 计算位点的遗传距离

在 selscan 计算的时候仍需要一个 map 文件,但这个要求每个位点的遗传距离。

如果没有遗传图谱,可以根据物种总的遗传距离算每个 bp 平均的遗传距离,而后使用物理距离推算。如果有的话,也需要根据遗传图谱中的标记推断每个 SNP 的遗传位置。

标记之间插值填补(interpolate_data.pl)

我写了一个 perl 脚本对遗传图谱中两个标记之间的间隙进行插值填补,获得所有位点的遗传距离。而后可以根据自己的文件中的位点,生成一个 map 文件,进行计算。

perl      interpolate_data.pl    chr01.map    chr01.map.out

zcat   XX_phased.vcf.gz   |   awk '{print $1, $2}' | sed '1,9d' >   chr01 

# 获得VCF文件中所有位点的信息(去除表头)

perl     join.pl     chr01     chr01.map.out     chr01_new.map

# 使用我自己写的一个 perl 脚本确定 VCF 文件中每个位点的遗传位置

awk '{print $1, ".", $3, $2}'   chr01_new.map   >  chr01_new.map.out

# 得到需要的 map 文件格式。

比较两个文件内容,匹配的行写入新的文件(join.pl )


2. 计算 iHS

selscan --ihs --vcf   <haplotypes> --map <mapfile> --out <outfile>

现在直接计算就行。

vcf 文件是 phasing 后的压缩文件;

map 文件是每个位点的遗传位置,包括四列:染色体、位点ID、遗传位置、物理位置。

3. 结果文件解读

<locusID > <physicalPos > <’1’ freq > <ihh1 > <ihh0 > < unstandardized iHS >

结果文件包括 6 列,分别是以上内容,而后就按自己的要求来找受选择的区域了。



欢迎评论交流,批评指正!

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

推荐阅读更多精彩内容