This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Extract columns from VCF file using bcftools preserving all the header info

I am trying to extract only the columns I need from VCF preserving VCF structure, its header, its formatting. I am using bcftools. I tried doing:

bcftools annotate -c CHROM,POS,ID,REF,ALT,QUAL,FILTER,INFO/AF,INFO/AC,INFO/AN Holland.vcf -o Holland_selected_cols.vcf

But the output file just stays the same. Then I tried query:

bcftools query -f'[%CHROM\t%POS\t%ID\t%REF\t%ALT\t%QUAL\t%FILTER\t%INFO/AF;%INFO/AC;%INFO/AN\n]' -H Holland.vcf -o Holland_selected_cols.vcf

But it does not preserve VCF header. What would be the right bcftools command for that?

bcftools vcf

1 answer

Use bcftools annotate -x to remove all fields, except those you want to keep:

bcftools annotate -x ^INFO/AF,^INFO/AC,^INFO/AN,^FORMAT input.vcf

It can also be added that if genotypes need to be removed, then a different command bcftools view -G input.vcf > output.vcf can be used. Genotypes are also sort of columns.

Log in to answer this question.