bcftools 提取vcf(snp/indel)文件子集
做群体变异检测后,通常会有提取子集的操作,之前没有发现bcftools有这个功能,都是自己写脚本操作,数据量一上来,速度真的是让人无语凝噎。这里记录下提取子vcf文件的用法,软件版本:bcftools-1.5
一、根据个体提取子集
根据样品名提取vcf文件,准备要保留的个体名文件 keep.list,一行一个个体(参考第三步)。
无痛处理,速度超快,命令如下:
1 bcftools view -S keep.list test.vcf >sub_indv.vcf
二、根据染色体位置提取子集
注意:这里vcf要使用gbzip压缩并且构建索引才行,而且vcf文件位置顺序不能乱(别问我怎么知道的😔);
准备好染色体及位置文件chr_pos.list,文件内容示例如下:
chr1 27639 chr1 60383 chr2 60469 chr3 60516 chr4 60534
#或者直接给区间也行
chr1 1 1000
chr1 2000 4500
后续命令如下,速度快,内存消耗还小:
1 bgzip test.vcf 2 tabix -p vcf test.vcf.gz 3 bcftools view -R chr_pos.list test.vcf.gz >new.pos.vcf
三、直接提取测序个体样品名
1 bcftools query -l test.vcf >ind.list
1 head -100 test.vcf |grep "#C"|cut -f10-|xargs -n 1 >ind.list # 不调用软件这样也行
ind.list文件中一行一个样品名
作者:天使不设防
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.