使用Hapbin基于EHH、iHS、XP-EHH方法检测基因组中的选择信号

2021-09-22 12:18:50 浏览数 (1)

EHH(Extended Haplotype Homozygosity)、iHS(Integrated Haplotype Score) 和 XP-EHH(Cross Population Extended Haplotype Homozogysity)是常用的基于 haplotype 分析基因组受选择情况的方法。其中,EHH 和 iHS 是检测一个群体中的选择信号,而 XP-EHH 是在两个群体中进行比较。

Hapbin 是一个 C 写的工具,可以计算 EHH、iHS 和 XP-EHH。类似工具还有 selscan、rehh 等,而 hapbin 的操作更为方便,速度也非常快。下面简单介绍一下它的使用方法。

编译

Hapbin 需要从源码编译成可执行文件:

代码语言:javascript复制
git clone https://github.com/evotools/hapbin.git
cd hapbin/build/
cmake ../src/
make

编译成功后,把 build 目录加在环境变量配置文件 .bash_profile.bashrc 中即可:

代码语言:javascript复制
export PATH=/shiyanhe/softwares/hapbin/build:$PATH

编译过程依赖 GCC 4.7 以上版本,如果上面的编译失败,需要安装新版本的 GCC 再重新编译:

代码语言:javascript复制
# 在 Ubuntu 上安装 GCC
 sudo apt-get update
 sudo apt-get install git cmake libcr-dev mpich libmpich-dev
 
# 在 CentOS 7 上安装 GCC
 sudo yum install cmake git gcc-c  

输入文件

需要两类输入文件:

「hap files (--hap):」 IMPUTE2 的 HAP / LEGEND / SAMPLE 格式中的 hap 文件,一行代表一个SNP,一列代表一个haplotype。如果是 haps haplotype 文件,可以用 SHAPEIT 转换格式:shapeit -convert --input-haps gwas.phased --output-ref gwas.phased.hap gwas.phased.leg gwas.phased.sam。如果是 vcf 格式,可以用 vcftools 转换格式:vcftools --gzvcf genotypes.vcf.gz --IMPUTE

「map files (--map):」 跟 plink 的 ped/map 格式的 map 文件一样,顺序需要与 hap 文件的 SNP 顺序对应。

注意,不同染色体的 hap 和 map 文件需要分开。另外,如果是在两个群体中计算 XP-EHH,hap 文件需要按群体分开来存放。

运行

计算 EHH:

代码语言:javascript复制
ehhbin --hap [.hap file] --map [.map file] --locus [locus] --out [output prefix]

计算 iHS:

代码语言:javascript复制
ihsbin --hap [.hap file] --map [.map file] --out [output prefix]

计算 XP-EHH:

代码语言:javascript复制
xpehhbin --hapA [Population A .hap file]] --hapB [Population B .hap file]] --map [.map file] --out [output prefix] 

例子,计算 A 和 B 两个群体 1 号染色体的 XP-EHH:

代码语言:javascript复制
xpehhbin --hapA popA_chr1.hap --hapB popB_chr1.hap --map chr1.map --out results_chr1

计算时也是分染色体进行。如果要跑全基因组,写个循环脚本批量跑即可。

0 人点赞