合并不同sample的vcf文件,通过bcftools - 组学大讲堂问答社区 (omicsclass.com)
需要批量合并VCF文件,看都不看文件名字,只要是文件夹内叫vcf的都直接合并一个文件,所以基于上面的基础写了个小脚本
# Copyright Contributors to the MLP.
name=$1".merge"
for i in *vcf;do bgzip -c -f -@ 10 $i > $i.gz;done
for da in *vcf.gz;do ~/Biosoft/bcftools-1.14/bcftools index $da;done
echo -n "~/Biosoft/bcftools-1.14/bcftools merge --force-samples --info-rule DP:sum " >> $name.txt;for g in *vcf.gz;do echo -n " $g ">>$name.txt;done;echo -n " -o $name.merge.gz" >>$name.txt
把上面的内容丢入叫test.sh文件之中,然后再写一个文件test2.sh
bash test.sh $1
bash $1".merge.txt"
最后运行
bash test2.sh test3
不过,其实bcftools里面已经提供了批量合并的命令了,bcftools merge -l 便是批量合并的命令,只需要将你要合并的文件名放入一个叫merege.txt的文件里面,参考下面的内容
How to merge 7000 VCF files with bcftools merge? (shicheng-guo.github.io)
ls *.vcf.gz | split -l 500 - subset_vcfs
for i in subset_vcfs*;
do
bcftools merge -0 -l $i -Oz -o merge.$i.vcf.gz;
tabix -p vcf merge.$i.vcf.gz
done
ls merge.*.vcf.gz > merge.txt
bcftools merge -l merge.txt -0 -Oz -o all_merged.vcf.gz
网友评论