VCF-ANNOTATE(1)

πŸ’– VCF-ANNOTATE πŸ’–

okay bestie, so like β€” this is the manual page for vcf-annotate, one of the User Commands, and it is literally about to become your new hyperfixation. sit down, grab a strawberry πŸ“, and let's get into it.


✨ NAME ✨

vcf-annotate β€” annotate a VCF file, add filters or custom annotations. it's giving glow-up for your variants πŸ’…


🌈 SYNOPSIS 🌈

cat in.vcf | vcf-annotate [OPTIONS] > out.vcf

πŸ¦‹ DESCRIPTION πŸ¦‹

About: it annotates a VCF file, adding filters or custom annotations. it requires a tabix indexed file with annotations β€” no index, no service, periodt.

Currently it annotates only the INFO column, but bestie it will be extended on demand. so like, if you need more, ask, and it shall be done πŸ™ˆ


πŸ‘‘ OPTIONS πŸ‘‘

  • -a, --annotations <file.gz> β€” the tabix indexed file that holds all the annotations. the format is CHR\tFROM[\tTO][\tVALUE]+. yes that's a real format, yes the backslashes are doing something, iykyk.
  • -c, --columns <list> β€” the list of columns in the annotation file, like for real for real. e.g. CHROM,FROM,TO,-,INFO/STR,INFO/GN. that little dash in there? that's saying "ignore the third column, she's not invited πŸ’€". and if TO is not present, it just assumes TO equals FROM. chill of it honestly.
  • -d, --description <file|string> β€” header annotation, bestie. e.g. key=INFO,ID=HM2,Number=0,Type=Flag,Description='HapMap2 membership'. you can also read the descriptions from a file, one annotation per line. options on options, we love to see it 🫢
  • -f, --filter <list> β€” apply filters. the list goes in this format: flt1=value/flt2/flt3=value/etc.
  • -h, -?, --help β€” this help message. hi πŸ‘‹

πŸŽ€ Filters πŸŽ€

  • + β€” apply all filters with default values. and yes it can be overridden, see the example below, don't worry I got you ✨
  • -X β€” exclude the filter X. bye girl πŸ‘‹ not you.

  1. 1, StrandBias β€” FLOAT β€” min P-value for strand bias (given PV4) [0.0001]
  2. 2, BaseQualBias β€” FLOAT β€” min P-value for baseQ bias [1e-100]
  3. 3, MapQualBias β€” FLOAT β€” min P-value for mapQ bias [0]
  4. 4, EndDistBias β€” FLOAT β€” min P-value for end distance bias [0.0001]
  5. a, MinAB β€” INT β€” minimum number of alternate bases [2]
  6. c, SnpCluster β€” INT1,INT2 β€” filters clusters of 'INT1' or more SNPs within a run of 'INT2' bases [[] β€” yeah, empty, no default, she's a blank slate 🧚]
  7. D, MaxDP β€” INT β€” maximum read depth [10000000]
  8. d, MinDP β€” INT β€” minimum read depth [2]
  9. q, MinMQ β€” INT β€” minimum RMS mapping quality for SNPs [10]
  10. Q, Qual β€” INT β€” minimum value of the QUAL field [10]
  11. r, RefN β€” reference base is N [[] β€” again, no default, just vibes]
  12. W, GapWin β€” INT β€” window size for filtering adjacent gaps [10]
  13. w, SnpGap β€” INT β€” SNP within INT bp around a gap to be filtered [10]

🌸 Example 🌸

here's the moment you've been waiting for, the example, the main character of this manpage:

zcat in.vcf.gz | vcf-annotate -a annotations.gz -d descriptions.txt | bgzip -c >out.vcf.gz
zcat in.vcf.gz | vcf-annotate -f +/-a/c=3,10/q=3/d=5/-D -a annotations.gz -d descriptions.txt | bgzip -c >out.vcf.gz

see that +/-a/c=3,10/q=3/d=5/-D? that's the override moment β€” + grabs all the filters, -a and -D kick out MinAB and MaxDP, and the rest get their custom values. she ate πŸ”₯


πŸ“ Where descriptions.txt contains:

key=INFO,ID=GN,Number=1,Type=String,Description='Gene Name'
key=INFO,ID=STR,Number=1,Type=Integer,Description='Strand'

πŸ’€ real talk though bestie: the annotation file must be tabix indexed or nothing works. that's not a vibe, that's a requirement.

and that's the whole page, no cap. this manual is for vcf-annotate version 0.1.5, dated July 2011 β€” an absolute icon, an elder, a legend, and honestly? still slaying. go annotate something, you're gonna do great πŸ«Άβœ¨πŸ’–