使用Shapeit5基因分型定相时遇HTSlib格式支持错误求助
解决Shapeit5读取1000GP Phase3 hap.gz文件的格式问题
核心原因
1000GP Phase3提供的hap.gz是牛津定制的hap/legend/sample文本格式,并非HTSlib支持的标准VCF/BAM等二进制格式,Shapeit5默认依赖HTSlib读取输入,因此直接调用会触发格式不支持的错误。
解决步骤
1. 将牛津hap/legend/sample格式转换为VCF格式
使用PLINK完成格式转换,命令如下:
plink --hap 1000GP_Phase3_chr22.hap.gz --legend 1000GP_Phase3_chr22.legend.gz --sample 1000GP_Phase3.sample --make-bed --out 1000GP_Phase3_chr22_temp plink --bfile 1000GP_Phase3_chr22_temp --recode vcf-iid bgz --out 1000GP_Phase3_chr22_vcf
- 第一行将hap/legend/sample转为PLINK二进制格式(bed/bim/fam)
- 第二行将二进制格式转为bgzip压缩的VCF,这是HTSlib支持的标准格式
2. 对转换后的VCF建立索引
Shapeit5需要索引文件才能高效读取,用tabix命令创建:
tabix -p vcf 1000GP_Phase3_chr22_vcf.vcf.gz
3. 修改Shapeit5命令使用转换后的VCF
将原命令中指向1000GP_Phase3_chr22.hap.gz的参数替换为1000GP_Phase3_chr22_vcf.vcf.gz即可正常运行。
替代方案:使用Shapeit5专用转换工具
若已安装完整Shapeit5工具链,可直接用内置转换命令:
shapeit5 convert \ --input-haps 1000GP_Phase3_chr22.hap.gz,1000GP_Phase3_chr22.legend.gz,1000GP_Phase3.sample \ --output-vcf 1000GP_Phase3_chr22_vcf.vcf.gz
转换后同样需要用tabix建立索引。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

