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 需要從源碼編譯成可執行文件:
git clone https://github.com/evotools/hapbin.git
cd hapbin/build/
cmake ../src/
make
編譯成功后,把 build
目錄加在環境變量配置文件 .bash_profile
或 .bashrc
中即可:
export PATH=/shiyanhe/softwares/hapbin/build:$PATH
編譯過程依賴 GCC 4.7 以上版本,如果上面的編譯失敗,需要安裝新版本的 GCC 再重新編譯:
# 在 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:
ehhbin --hap [.hap file] --map [.map file] --locus [locus] --out [output prefix]
計算 iHS:
ihsbin --hap [.hap file] --map [.map file] --out [output prefix]
計算 XP-EHH:
xpehhbin --hapA [Population A .hap file]] --hapB [Population B .hap file]] --map [.map file] --out [output prefix]
例子,計算 A 和 B 兩個群體 1 號染色體的 XP-EHH:
xpehhbin --hapA popA_chr1.hap --hapB popB_chr1.hap --map chr1.map --out results_chr1
計算時也是分染色體進行。如果要跑全基因組,寫個循環腳本批量跑即可。