Skip to content

Releases: samtools/bcftools

1.24

Choose a tag to compare

@daviesrob daviesrob released this 09 Jul 15:03
1.24

Download the source code here: bcftools-1.24.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


Changes affecting the whole of bcftools, or multiple commands:

  • Calculation of MAC and MAF in -i/-e filtering expressions

    • Minor allele count and minor allele frequency were calculated incorrectly at multiallelic sites.

Changes affecting specific commands:

  • bcftools +af-dist

    • New -s, --samples to print per-sample HWE probability, geometric mean
  • bcftools annotate

    • Fix a bug in annotation renaming via --rename-annots and -c NEW:=OLD, where renaming INFO/TAG would simultaneously rename also FORMAT/TAG (#2489)

    • Allow annotation of Number=A,R INFO tags from tab-delimited files when alleles are split across multiple records.

  • bcftools cnv

    • Fix off-by-one error in reporting HMM qualities
  • bcftools convert

    • Make --gvcf2vcf work around malformed gVCF records where INFO/END overlaps the next record
  • bcftools csq

    • Fix a start_lost issue in haplotype mode: suppress formatting of amino-acid changes of variants that follow on the same haplotype, but still print DNA changes (#2543)

    • Add a new -G, --greedy option which forces the program to check intronic consequences after feature hits (#2548)

  • bcftools +fill-tags

    • Fix custom functions to use rounding instead of truncation when converting to integer, so that -t 'MAC:1=float(MAF*AN)' and -t 'MAC:1=int(MAF*AN)' return consistent values.

    • Support per-population annotation for embedded functions, such as in -t 'MAC:1=int(MAF*AN)' -S groups.txt (#2514)

  • bcftools +mendelian2

    • Number of fixes and improvements, including a fix in assigning 1X vs 2X inheritance rules with -p (#2545)
  • bcftools merge

    • Fixes in memory access with localized alleles, it could result in printing printing trailing garbage in localized FORMAT fields (#2520)

    • Add new -m exact mode to merge only records with the exact same alleles (#2498)

  • bcftools mpileup

    • Remove unused experimental INFO/MIN_PL_SUM annotation

    • Add new FORMAT/QM annotation, to be used with the new bcftools +trio-dnm3 --use-ALM model.

  • bcftools norm

    • Fix a bug in splitting Type=String FORMAT fields via -a and -m (#2476)

    • Fix erroneous INFO/END recalculation of symbolic alleles (#2500).

    • Added --no-realign[=NUM] to skip realignment during normalization; when NUM is given, only events longer than NUM bp are skipped. This deprecates the option --do-not-normalize (equivalent to --no-realign=0). See also #2500.

    • Convert ambiguous IUPAC bases to their lexicographically first concrete base, as required by the VCF specification (#2551)

  • bcftools +prune

    • When pruning by window length in base pairs, one out-of-window record would be incorrectly accessed. Not only this by-one error would calculate LD in unwanted pair of records, it also led to unexpected behavior when the first out-of-window record would change by filtering (#2475)
  • bcftools roh

    • Fix off-by-one error in reporting HMM qualities
  • bcftools +split-vep

    • Add support for SnpEff output, add a new option --csq-field, --consequence-field which allows to override the default consequence field name 'Consequence' (#2566)

    • Stop converting consequence severity to lower case

  • bcftools stats

    • Fix per-sample stats when samples provided in different order via -s/-S (#2534)
  • bcftools +tag2tag

    • Make the advertised default for -t, --threshold match the implementation: 0, not 0.1. Also clarify that the value is the maximum allowed GP error (call if GP >= 1 - FLOAT), not a minimum GP threshold (#2564)
  • bcftools +trio-dnm3

    • Add a new TrioDNM model and make it the new default. To prevent confusion, the old +trio-dnm2 plugin was removed and replaced with +trio-dnm3. The original +trio-dnm3 model can be run as
      bcftools +trio-dnm3 --use-ALM
  • bcftools view

    • Fix the -v/V, --types/--exclude-types option to work with ref and extend for all types supported by htslib: snps,indels,mnps,ref,bnd,other,overlap (#2567)

Download the source code here: bcftools-1.24.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

1.23.2

Choose a tag to compare

@daviesrob daviesrob released this 10 Jul 15:18
1.23.2

Download the source code here: bcftools-1.23.2.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


This release bundles HTSlib 1.23.2, which includes many important bug fixes. There are no changes to BCFtools. Please see htslib/NEWS for details.

1.22.2

Choose a tag to compare

@daviesrob daviesrob released this 10 Jul 15:15
1.22.2

Download the source code here: bcftools-1.22.2.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


This release bundles HTSlib 1.22.3, which includes many important bug fixes. There are no changes to BCFtools. Please see htslib/NEWS for details.

1.21.2

Choose a tag to compare

@daviesrob daviesrob released this 10 Jul 15:13
1.21.2

Download the source code here: bcftools-1.21.2.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


This release bundles HTSlib 1.21.2, which includes many important bug fixes. There are no changes to BCFtools. Please see htslib/NEWS for details.

1.23.1

Choose a tag to compare

@daviesrob daviesrob released this 18 Mar 17:08
1.23.1

Download the source code here: bcftools-1.23.1.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


Changes affecting the whole of bcftools, or multiple commands:

  • This release bundles HTSlib 1.23.1, which includes many important bug fixes. Please see htslib/NEWS for details.

  • Fix silent output truncation due to missing checks for read errors in the annotate, cnv, concat, convert, consensus, csq, filter, gtcheck, isec, merge, norm, query and stats commands; and all plugins. They will now print an error and return a non-zero exit code if an error is encountered when reading input data. (PR #2503)


Download the source code here: bcftools-1.23.1.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

1.22.1

Choose a tag to compare

@daviesrob daviesrob released this 18 Mar 16:50
1.22.1

Download the source code here: bcftools-1.22.1.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


Changes affecting the whole of bcftools, or multiple commands:

  • This release bundles HTSlib 1.22.2, which includes many important bug fixes. Please see htslib/NEWS for details.

  • Fix silent output truncation due to missing checks for read errors in the annotate, cnv, concat, convert, consensus, csq, filter, gtcheck, isec, merge, norm, query and stats commands; and all plugins. They will now print an error and return a non-zero exit code if an error is encountered when reading input data. (#2503)

Changes affecting specific commands:

  • bcftools consensus

    • Fix a bug which prevented reading fasta files containing empty lines in their entirety (#2424)

    • Fix a bug which causes --absent miss some absent positions

  • bcftools +fill-tags

    • Fix header formatting error for INFO/F_MISSING which must be Number=1 (#2442)

    • Make -t 'F_MISSING' work with -S groups.txt (#2447)

  • bcftools gtcheck

    • Fix an error in parsing -i/-e command line options where the qry: and gt: prefix was not stripped (#2432)
  • bcftools +split-vep

    • Fix the option -A, --all-fields, it was not working properly and could lead to a segfault (#2473)

Download the source code here: bcftools-1.22.1.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

1.21.1

Choose a tag to compare

@daviesrob daviesrob released this 18 Mar 16:34
1.21.1

Download the source code here: bcftools-1.21.1.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


Changes affecting the whole of bcftools, or multiple commands:

  • This release bundles HTSlib 1.21.1, which includes many important bug fixes. Please see htslib/NEWS for details.

  • Fix silent output truncation due to missing checks for read errors in the annotate, cnv, concat, convert, consensus, csq, filter, gtcheck, isec, merge, norm, query and stats commands; and all plugins. They will now print an error and return a non-zero exit code if an error is encountered when reading input data. (#2503)

Changes affecting specific commands:

  • bcftools annotate

    • Fix Number in the header definition of transferred FILTER and ID tags (#2335)
  • bcftools consensus

    • Fix a bug which prevented reading fasta files containing empty lines in their entirety (#2424)

    • Fix a bug which causes --absent miss some absent positions

  • bcftools +fill-tags

    • Fix header formatting error for INFO/F_MISSING which must be Number=1 (#2442)

    • Make -t 'F_MISSING' work with -S groups.txt (#2447)

  • bcftools gtcheck

    • Fix an error in parsing -i/-e command line options where the qry: and gt: prefix was not stripped (#2432)
  • bcftools merge

    • Fix a bug where an incorrectly formatted gVCF file with overlapping blocks would trigger an infinite loop in the program (#2410)
  • bcftools +split-vep

    • Fix the option -A, --all-fields, it was not working properly and could lead to a segfault (#2473)

Download the source code here: bcftools-1.21.1.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

1.23

Choose a tag to compare

@daviesrob daviesrob released this 16 Dec 15:27
1.23

Download the source code here: bcftools-1.23.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)


Changes affecting the whole of bcftools, or multiple commands:

  • The -i/-e filtering expressions and -f formatting in query

    • Add a new function smpl_COUNT()/sCOUNT() which returns the number of elements (#2423)

Changes affecting specific commands:

  • bcftools annotate

    • Make dynamic variables read from a tab-delimited annotation file (#2151) work also for regions. For example, while the first command below was functional, the second was not (#2441)
      bcftools annotate -a ann.tsv.gz -c CHROM,POS,-,SCORE,~STR -i'TAG={STR}' -k in.vcf
      bcftools annotate -a ann.tsv.gz -c CHROM,BEG,END,SCORE,~STR -i'TAG={STR}' -k in.vcf
  • bcftools consensus

    • Fix a bug which prevented reading fasta files containing empty lines in their entirety (#2424)

    • Fix a bug which causes --absent miss some absent positions

  • bcftools csq

    • Add support for complex substitutions, such as AC>TAA
  • bcftools +fill-tags

    • Fix header formatting error for INFO/F_MISSING which must be Number=1 (#2442)

    • Make -t 'F_MISSING' work with -S groups.txt (#2447)

  • bcftools gtcheck

    • The program is now able to process gVCF blocks. Newly, monoallelic sites are excluded only when the site is monoallelic in both query and genotype file. The new option --keep-refs allows to always include monoallelic sites.

    • Fix an error in parsing -i/-e command line options where the qry: and gt: prefix was not stripped (#2432)

  • bcftools mpileup

    • Make -d, --max-depth 0 set the depth to unlimited (#2435)
  • bcftools norm

    • Make the -i/-e filtering option work for all options, such as line merging and duplication removal (#2415)
  • bcftools query

    • Numerical functions, such as SUM(INFO/DP), would previously return the value 0 when executed on missing values. This was incorrect, newly a missing value is printed.
  • bcftools reheader

    • Add options --samples-list and --samples-file to allow renaming samples from a list of samples on command line, rather than from a file of sample names (#2383)
  • bcftools +split-vep

    • Fix the option -A, --all-fields, it was not working properly and could lead to a segfault (#2473)

Download the source code here: bcftools-1.23.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

1.22

Choose a tag to compare

@daviesrob daviesrob released this 30 May 10:16
1.22

Download the source code here: bcftools-1.22.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

Changes affecting the whole of bcftools, or multiple commands:

  • Add support for matching lines by ID via the --pair-logic and --collapse options (#1739)

  • The -i/-e filtering expressions

    • The expressions now properly match the regex negation of missing values, e.g. -i 'TAG!~"\."' (#2355)

    • Added support for Fisher's exact test

  • Add the option -v, --verbosity INT to all bcftools commands and plugins. Verbosity values bigger than 3 are passed to the underlying HTSlib library so that the user can investigate network issues and other problems occurring at the library level.

Changes affecting specific commands:

  • bcftools annotate

    • Fix Number in the header definition of transferred FILTER and ID tags (#2335)
  • bcftools call

    • The -s, --samples option was not working properly, now also supporting sample negation as advertised in the manual page, e.g. -s ^sample1,sample2 to include all samples but sample1 and sample2 (#2380)
  • bcftools consensus

    • Preserve entire missing gVCF blocks with --missing (#2350)

    • Fixed a bug, the -S, --samples-file option is no longer ignored (#2398)

  • bcftools convert

    • The command convert --gvcf2vcf was not filling the REF allele when BCF was output (#243)
  • bcftools csq

    • Check the input GFF for features outside transcript boundaries and extend the transcript to contain the feature fully (#2323)

    • Add experimental support for alternative genetic code tables, accessible via a new option -C, --genetic-code (#2368)

    • Change in the --unify-chr-names option, no automatic sequence name modification is attempted anymore, the prefixes to trim must be given explictly. For example, if run with --unify-chr-names chr,Chromosome,-, the program will trim the "chr" prefix in the VCF, "Chromosome" in the GFF, leaving the fasta unchanged (#2378)

  • bcftools +fill-tags

    • Thanks to the extension of filtering expressions with Fisher's exact test, the plugin can now be used to add FT annotation (#1582)
  • bcftools merge

    • Preserve phasing in half-missing genotypes (#2331)

    • The option --merge none is expected to create no new multiallelic sites, but it should allow to merge, say, A>C with A>C,AT (#2333)

    • Make --merge both work with indel-only records; for example, the multiallelic site G>GT,T should be merged with G>GT (#2339)

    • Do not merge symbolic alleles unless they have not just the same type, eg. <DEL>, but also length, i.e the INFO/END coordinate (#2362)

    • Fix a bug where an incorrectly formatted gVCF file with overlapping blocks would trigger an infinite loop in the program (#2410)

  • bcftools mpileup

    • The -r/-R option newly merge overlapping regions, preventing the output of duplicate sites
  • bcftools norm

    • Print the number of removed duplicate sites in the final statistics (#2346)

    • Preserve the original alleles in --old-rec-tag when --check-ref s requested (#2357)

    • Print a warning when INFO/SVLEN is not defined as Number=A (#2371)

  • plot-vcfstats

    • Make the option -s, --sample-names functional again (#2353)
  • bcftools +prune

    • New option to remove or annotate clusters of sites within a window
  • bcftools query

    • The functions used in -i/-e filtering expressions (such as SUM, MEDIAN, etc) can be now used in formatting expressions (#2271). If the VCF contains INFO/AD and FORMAT/AD, try:
      bcftools query test.vcf -f '%CHROM:%POS \t [ %AD] \t [ %sSUM(FMT/AD)]'
      bcftools query test.vcf -f '%CHROM:%POS \t [ %AD] \t [ %SUM(FMT/AD)]'
      bcftools query test.vcf -f '%CHROM:%POS \t [ %AD] \t   %SUM(FMT/AD)'
      bcftools query test.vcf -f '%CHROM:%POS \t [ %AD] \t   %SUM(INFO/AD)'
      
    • Make it possible to refer to the ID column from the FORMAT expression (#2337)
      bcftools query test.vcf -f 'ID=%ID  ID=[ %/ID]  vs  FMT_ID=[ %ID]'
      
  • bcftools roh

    • New visualization tool misc/roh-viz, see below
  • bcftools +setGT

    • Support for setting missing genotypes with arbitrary ploidy via -n c:./. (#2303)
  • bcftools +split-vep

    • The -s, --select option was extended to print only one consequence. Previously it was possible to select a single transcript (e.g., the one with the worst consequence), and it was possible to filter by consequence severity (e.g., missing or worse), but in some cases multiple consequences are reported within a single transcript (e.g., start_lost&splice_region). The extended option allows to print the worst part, for example as --select primary:missense+:worst
  • bcftools +trio-dnm2

    • Fix a problem with --strictly-novel option which would neglect the presence of the apparent de novo allele in the father for male offspring

    • Fix a problem with uncalled mosaic chrX variants in males

  • roh-viz

    • HTML/JavaScript visualization of bcftools/roh output and homozygosity rate.
  • bcftools +vrfs

    • New experimental plugin for scoring variants and assess site noisiness (variant read frequency profiles) from a large number of unaffected parental samples

Download the source code here: bcftools-1.22.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)

1.21

Choose a tag to compare

@daviesrob daviesrob released this 12 Sep 15:55
1.21

Download the source code here: bcftools-1.21.tar.bz2.


Changes affecting the whole of bcftools, or multiple commands:

  • Support multiple semicolon-separated strings when filtering by ID using -i/-e (#2190). For example, -i 'ID="rs123"' now correctly matches rs123;rs456

  • The filtering expression ILEN can be positive (insertion), negative (deletion), zero (balanced substitutions), or set to missing value (symbolic alleles).

  • bcftools query

  • bcftools +split-vep

    • The columns indices printed by default with -H (e.g., #[1]CHROM) can be now suppressed by giving the option twice -HH (#2152)

Changes affecting specific commands:

  • bcftools annotate

    • Support dynamic variables read from a tab-delimited annotation file (#2151) For example, in the two cases below the field STR from the -a file is required to match the INFO/TAG in VCF. In the first example the alleles REF,ALT must match, in the second example they are ignored. The option -k is required to output also records that were not annotated:
    bcftools annotate -a ann.tsv.gz -c CHROM,POS,REF,ALT,SCORE,~STR -i'TAG={STR}' -k in.vcf
    bcftools annotate -a ann.tsv.gz -c CHROM,POS,-,-,SCORE,~STR     -i'TAG={STR}' -k in.vcf
    
    • When adding Type=String annotations from a tab-delimited file, encode characters with special meaning using percent encoding (;, = in INFO and : in FORMAT) (#2202)
  • bcftools consensus

    • Allow to apply a reference allele which overlaps a previous deletion, there is no need to complain about overlapping alleles in such case

    • Fix a bug which required -s - to be present even when there were no samples in the VCF (#2260)

  • bcftools csq

    • Fix a rare bug where indel combined with a substitution ending at exon boundary is incorrectly predicted to have 'inframe' rather than 'frameshift' consequence (#2212)
  • bcftools gtcheck

    • Fix a segfault with --no-HWE-prob. The bug was introduced with the output format change in 1.19 which replaced the DC section with DCv2 (#2180)

    • The number of matching genotypes in the DCv2 output was not calculated correctly with non-zero -E, --error-probability. Consequently, also the average HWE score was incorrect. The main output, the discordance score, was not affected by the bug

  • bcftools +mendelian2

    • Include the number of good cases where at least one of the trio genotypes has an alternate allele (#2204)

    • Fix the error message which would report the wrong sample when non-existent sample is given. Note that bug only affected the error message, the program otherwise assigns the family members correctly (#2242)

  • bcftools merge

    • Fix a severe bug in merging of FORMAT fields with Number=R and Number=A values. For example, rows with high-coverage FORMAT/AD values (bigger or equal to 128) could have been assigned to incorrect samples. The bug was introduced in version 1.19. For details see #2244.
  • bcftools mpileup

    • Return non-zero error code when the input BAM/CRAM file is truncated (#2177)

    • Add FORMAT/AD annotation by default, disable with -a -AD

  • bcftools norm

    • Support realignment of symbolic <DUP.*> alleles, similarly to <DEL.*> added previously (#1919,#2145)

    • Fix in reporting reference allele genotypes with --multi-overlaps . (#2160)

    • Support of duplicate removal of symbolic alleles of the same type but different SVLEN (#2182)

    • New -S, --sort switch to optionally sort output records by allele (#1484)

    • Add the -i/-e filtering options to select records for normalization. Note duplicate removal ignores this option.

    • Fix a bug where --atomize would not fill GT alleles for atomized SNVs followed by an indel (#2239)

  • bcftools +remove-overlaps

    • Revamp the program to allow greater flexibility, with the following new options:
 -M, --mark-tag TAG   Mark -m sites with INFO/TAG
 -m, --mark EXPR      Mark (if also -M is present) or remove sites [overlap]
                  dup       .. all overlapping sites
                  overlap   .. overlapping sites
                  min(QUAL) .. mark sites with lowest QUAL until overlaps are resolved
 --missing EXPR   Value to use for missing tags with -m 'min(QUAL)'
                  0   .. the default
                  DP  .. heuristics, scale maximum QUAL value proportionally to INFO/DP
 --reverse        Apply the reverse logic, for example preserve duplicates instead of removing
 -O, --output-type t  t: plain list of sites (chr,pos), tz: compressed list
  • bcftools +tag2tag

    • The conversions --LXX-to-XX, --XX-to-LXX were working but specific cases such as --LAD-to-AD were not.

    • Print more informative error message when source tag type violiates VCF specification

  • bcftools +trio-dnm2

    • Better handling of the --strictly-novel functionality, especically with respect to chrX inheritance

Download the source code here: bcftools-1.21.tar.bz2.(The "Source code" downloads are generated by GitHub and are incomplete as they don't bundle HTSlib and are missing some generated files.)