首先看一下bcftools view用法
我们重点关注Subset 和output选项
我们仅使用-o -O -s -S 这四个选项
-o 输出为标准的vcf文件,如果输出为vcf.gz文件,需要加管道符 | gzip -c > output.vcf.gz
-O 输出指定格式的文件,b代表压缩的BCF;u代表不压缩的BCF;z代表压缩的VCF;v代表不压缩的VCF.
命令为 -Oz
-s 后面跟着样品名称,在样品名称前加^前缀则表示筛掉这些样品,不加则表示保留这些样品
命令为-s sample1,sample2 -s ^sample1,sample2
-S 后面跟着包含样本名称的文件,在样品名称前加^前缀则表示筛掉这些样品,不加则表示保留这些样品,文件格式为下,每行一个样品名称。
SAMN03031171_SAMN03031171
SAMN03031172_SAMN03031172
SAMN03031173_SAMN03031173
SAMN03031174_SAMN03031174
我的目标是把一个有21个个体的文件拆分成分别有10个个体的两个文件
bcftools view AWB_new_XYMT_zk_tc.vcf.gz -S pop1.txt -o pop1.vcf
最初使用这个命令会报错,如下
它提示我们要用tabix建立索引
按照提示
tabix -p vcf AWB_new_XYMT_zk_tc.vcf.gz
会生成这个文件AWB_new_XYMT_zk_tc.vcf.gz.tbi
再运行命令bcftools view AWB_new_XYMT_zk_tc.vcf.gz -S pop2.txt -o pop2.vcf
或者bcftools view AWB_new_XYMT_zk_tc.vcf.gz -S pop2.txt | gzip -c > pop2.vcf.gz
没有出现错误,并输出了结果,表示我的目标达成
使用 bcftools view AWB_new_XYMT_zk_tc.vcf.gz -S pop1.txt -Oz pop1.vcf.gz 会出现下面的结果
经过我两分钟的思考,我想出了问题所在 -Oz只是一个命令参数不能作为输出参数
所以正确的命令为
bcftools view AWB_new_XYMT_zk_tc.vcf.gz -Oz -S pop1.txt -o pop1.vcf.gz
果然不出我所料!
至此,看完这篇文章,你是否掌握了bcftools view 拆分为不同样本文件的方法呢,希望你有所收获。