Recent Releases of vembrane

vembrane - v2.2.0

2.2.0 (2025-07-17)

Features

  • new subcommand for sorting VCF files via one or multiple Python expressions (#197) (528b41c)

Bug Fixes

  • handle SV record for vembrane fhir (21c543b)
  • improve error handling (6eec426)
  • improve error handling (9725e06)

Documentation

  • add missing help text to commands (#203) (bac54e9)
  • complete vep options for vembrane fhir (8148a43)
  • separate documentation into smaller parts (#206) (5808c36)

- Python
Published by github-actions[bot] 7 months ago

vembrane - v2.1.0

2.1.0 (2025-06-13)

Features

  • subcommand for generating FHIR from VCF (#187) (7ebd37f)

Documentation

  • improve explanation of specifying (and using) alternative --annotation-keys (#193) (17506ff)

- Python
Published by github-actions[bot] 9 months ago

vembrane - v2.0.0

2.0.0 (2025-05-31)

⚠ BREAKING CHANGES

ANN["Annotation"] and sequence ontology terms (#173)

The annotation field in ANN now always is a list of terms/strings instead of a singular string. That means that code similar to python ANN["Annotation"] == "inframe_deletion" will stop working.

To get the same behaviour as before, replace the equality check with a contains check: python "inframe_deletion" in ANN["Annotation"]

To make use of the sequence ontology graph's relationships between terms, use: python ANN["Annotation"].any_is_a("inframe_deletion") This expression will also cover the term's child terms, such as disruptive_inframe_deletion or conservative_inframe_deletion.

vembrane table default format (#189)

vembrane table now defaults to --long format, and --long has been replaced by --wide (#189)

Features

  • table 'ALL' pseudo-expression for converting all VCF information to long table formats; table now defaults to --long format, and --long has been replaced by --wide (#189) (d93b817)
  • new subcommand for generating structured output from vcf using a yte template (#184) (a07bb85)
  • Sequence ontology support (#173) (a307316)
  • flexible VCF reader/writer backend: users can now choose between pysam and cyvcf2 #160. Defaults to cyvcf2 (changed from pysam). Allows for easy integration of new backends (e.g., if someone wants to contribute python bindings for noodles-vcf/noodles-bcf).

Bug Fixes

  • for long table output, deal with VCF files without SAMPLES by including an empty SAMPLE column (#191) (7cf1e2d)

- Python
Published by github-actions[bot] 9 months ago

vembrane - v1.0.7

What's Changed

  • chore: update project deps for 1.x branch by @tedil in https://github.com/vembrane/vembrane/pull/180
  • fix: properly handle MATEID presented as single-item by @johanneskoester, @tedil in https://github.com/vembrane/vembrane/pull/179

Full Changelog: https://github.com/vembrane/vembrane/compare/v1.0.6...v1.0.7

- Python
Published by tedil over 1 year ago

vembrane - v1.0.6

  • when Number=R but value=. (one MISSING value), behave as if value=.,. (a list/array of MISSING values) (https://github.com/vembrane/vembrane/issues/171)

- Python
Published by tedil over 1 year ago

vembrane - v1.0.5

Changes

  • Add parsers for SpliceAI and AlphaMissense VEP plugins @FelixMoelder (#170)

- Python
Published by github-actions[bot] almost 2 years ago

vembrane - v1.0.4

Changes

  • Custom parser for INTRON now also defaults to a range-total, instead of a number-total (#164 ) @christopher-schroeder

- Python
Published by github-actions[bot] about 2 years ago

vembrane - v1.0.3

Changes

  • fix: For SVTYPE=BND records, check if MATEID and EVENT are specified in the VCF header prior to accessing the fields @tedil (#152)

- Python
Published by github-actions[bot] over 2 years ago

vembrane - v1.0.2

Changes

  • fix: handle missing ANN-field for vembrane table @FelixMoelder (#148)

- Python
Published by github-actions[bot] over 2 years ago

vembrane - v1.0.1

Changes

  • fix: When a record is missing an entry for ANN, replace with ||||… @tedil (#146)

- Python
Published by github-actions[bot] almost 3 years ago

vembrane - v1.0.0

Breaking changes

  • Command line arguments and options now use key=value syntax consistently (where applicable):
    • auxiliary set option --aux / -a previously used whitespace to separate key and value but now uses = instead: sh vembrane filter --aux known_genes=known_genes.txt "ID in AUX['known_genes']" input.vcf
    • The same holds for --overwrite-number-info and --overwrite-number-format options: sh vembrane filter --overwrite-number-format DP=1 "FORMAT['DP']['Sample'] == 0" input.vcf
    • This also holds for the new tag subcommand (see below)
  • The deprecated --overwrite-number option was removed (#140)

    Features

  • Add tag subcommand (#126): The tag subcommand allows specifying multiple --tag name=expression arguments. If a record passes an expression, the corresponding tag is added to its FILTER field. To instead tag records which fail an expression, either invert the expressions or use the --tag-mode fail option. Example: sh vembrane tag --tag quality_at_least_30="QUAL >= 30" input.vcf

  • Introduce get(item, default=NA) methods for INFO, ANN and FORMAT[field] (#139) This is a convenience function for handling missing values (in existing fields), which will be replaced by the provided default value (which itself defaults to NA) Example: sh vembrane filter "ANN.get('Impact', 'HIGH')" Note that this will still KeyError when no such field has been defined in the header (e.g. "ANN.get('nonexistent_key')")

  • Add '.raw' getter property to custom types to get original annotation string (#137) Because vembrane has custom types for certain annotations, their string representation may be different from the string they were parsed from. These types now have a .raw property to access the original string, e.g. ANN["EXON"].raw

  • Attribute access on NA values results in NA (#136) Example: sh vembrane table "ANN['EXON'].range.start" input.vcf will no longer cause an AttributeError when the ANN['EXON'] field is empty. This is because NA.arbitrary_attribute is now equivalent to NA.

  • Support --aux for vembrane table. (#142) Previously, the table subcommand did not support auxiliary files -- now it does!

  • Add support for new-ish gnomADe* and gnomADg* entries from VEP (#134) There have been some upstream changes with respect to gnomAD naming conventions, which are now split into exome (e) and genome (g) populations. This simply adds support for the new names.

Fixes

  • Fix regex for checking tag names, add more help to tag option (#141)
  • Add testcase for table --aux (#144)
  • PosRange specific fixes (#138)

Housekeeping

  • Update dependencies (#145)
  • Address some mypy errors and hints (#143)

- Python
Published by github-actions[bot] almost 3 years ago

vembrane - v0.14.0

Changes

  • No more custom ANN names: always use names from VEP / snpEff as is @tedil (#135). If you have expressions making use of cDNA, CDS or Protein, change to cDNA_position, CDS_position and Protein_position(VEP) or cDNA.pos / cDNA.length, CDS.pos / CDS.length and AA.pos / AA.length (SnpEff).

Housekeeping

  • Update pre commit hook and poetry tool versions @tedil (#133)
  • Add "Citation" section with information on how / what to cite @tedil (#132)

- Python
Published by github-actions[bot] almost 3 years ago

vembrane - v0.13.2

Changes

  • Add examples for working with sample specific values and genotypes @tedil, @dlaehnemann (#130)
  • Slightly better handling of the ##vembraneCmd=… VCF meta line @tedil (#131) (should no longer truncate multi-line expressions)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.13.1

Changes

  • Improve some type annotations @EQt (#127)
  • Fix: False HeaderWrongColumnNumber error when comma in non-top-level expression @christopher-schroeder (#129)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.13.0

Changes

  • feat: support for accessing END position @johanneskoester (#128)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.12.1

Changes

  • Explicitly clear builtins in Environment @tedil (#125)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.12.0

Changes

  • filter: better support for BNDs without "EVENTS" tag but with "MATEID" @tedil (#120)
  • table: add --long option for long format tsv output (e.g. vembrane table --long "CHROM, POS, FORMAT['DP'][SAMPLE]" in.vcf) @tedil (#114)

Maintenance

  • Simplify error types @EQt (#124)
  • Mention possibility of NA in annotation. @EQt (#123)
  • TypeVar instead of Any @EQt (#122)
  • Some documentation improvements @EQt (#121)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.11.2

Changes

  • return NA in case of MISSING (".") ALT @tedil (#119)
  • print the record itself in addition to the record index when encountering exceptions @tedil (#118)

Maintenance

  • Minor formatting/Sort imports @EQt (#116)
  • Make black and isort work together nicely @tedil (#117)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.11.1

Changes

  • Allow comparisons to InfoTuple @tedil (#115)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.11.0

Changes

  • Replace float constants in expressions with IEEE-754-1985 32bit float constants. @tedil (#111)
  • --overwrite-number deprecated and replaced with --overwrite-number-info and --overwrite-number-format respectively @tedil (#112)
  • Do not output records unconditionally when --preserve-order is activated @tedil (#113)
  • docs: add ID to list of available fields in README.md @dlaehnemann (#109)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.10.1

Changes

  • pyproject.toml adjustments, bump patch version @tedil (#108)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.10.0

Changes

  • Update numpy version (to address dependabot warning) @tedil (#107). This requires python >= 3.8.
  • Also update versions of other dependencies.

Chores

  • update github actions to automatically consider all current python versions starting from 3.8 for testing

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.9.0

Changes

  • Add without_na, replace_na and common functions from python's statistics module @tedil (#104)
  • Enable --overwrite-number option for table subcommand as well @tedil (#106)

- Python
Published by github-actions[bot] over 3 years ago

vembrane - v0.8.0

Changes

  • In vep's "EXON" annotation field, range/totals like 4-6/27 are allowed, where we previously always assumed number/totals like 4/27 only. With this change, both range/total and number/total format are treated as range/total, and the field names on the type are now range and total , changed from number and total, possibly breaking existing filter/table expressions (e.g. 5 in ANN["EXON"].range and ANN["EXON"].total == 27). @dlaehnemann (#103)

- Python
Published by github-actions[bot] almost 4 years ago

vembrane - v0.7.1

Changes

  • Add more annotation types @dlaehnemann (#102)

- Python
Published by github-actions[bot] almost 4 years ago

vembrane - v0.7.0

Changes

Features

  • Annotate @christopher-schroeder (#98)

Bug Fixes

  • Fix subsequent ALT accesses yielding list not str @mbargull (#101)
  • fix and test table args handling @dlaehnemann (#95)

Maintenance

  • Fix tests to check all expected entries/headers @mbargull (#100)

- Python
Published by github-actions[bot] over 4 years ago

vembrane - v0.6.1

Changes

  • Add __len__ to InfoTuple @tedil (#94)

Bug Fixes

  • A flag should be a single boolean value, not a tuple with 1 entry @tedil (#96)

- Python
Published by github-actions[bot] almost 5 years ago

vembrane - v0.6.0

Changes

  • Better handling of Number=1 and NoValue @tedil (#93)
  • Implement hash for NoValue @tedil (#92)
  • Add option for auxiliary files containing sets of symbols @tedil (#91)

- Python
Published by github-actions[bot] about 5 years ago

vembrane - v0.5.3

Changes

  • Format containment fix @tedil (#90)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.5.2

Changes

  • Add --version option @tedil (#88)

Features

  • Add INDEX to available fields for filter/table @christopher-schroeder (#89)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.5.1

Changes

  • More custom VEP annotation types @tedil (#84)
  • Small performance improvement for keep_unmatched @tedil (#83)
  • make FILTER a list @tedil @christopher-schroeder (#82)

We also added function families for working with genotypes (FORMAT["GT"]): count_hom, count_het, count_any_ref, count_any_var, count_hom_ref, count_hom_var and is_hom, is_het, is_hom_ref, is_hom_var, has_ref, has_var. These are similar in semantics to the countHom etc functions found in SnpSift with the exception that unknown genotype information (i.e. . in VCF notation) is not considered to be REF (i.e. 0 in VCF notation) but... unknown. Consider the following VCF snippet with 27 triploid samples in all possible combinations of 0 (ref) allele, 1 (first alternative) allele and . (missing information):

```

CHROM POS ID REF ALT QUAL FILTER INFO FORMAT S1 S2 S3 S4 S5 S6 S7 S8 S9 T1 T2 T3 T4 T5 T6 T7 T8 T9 U1 U2 U3 U4 U5 U6 U7 U8 U9

chr18 27963423 . G A 276 PASS GT ././. 1/1/. 0/0/. 0/1/. 1/0/. ./0/. ./1/. 1/./. 0/./. ././0 1/1/0 0/0/0 0/1/0 1/0/0 ./0/0 ./1/0 1/./0 0/./0 ././1 1/1/1 0/0/1 0/1/1 1/0/1 ./0/1 ./1/1 1/./1 0/./1 `` vembrane reports the following counts: -counthom() == 2(only0/0/0and1/1/1are considered homozygous) -counthet() == 12 -countanyref() == 19 -countanyvar() == 19 -counthomref() == 1 -counthomvar() == 1`

SnpSift reports the following counts: - countHom() == 3 (././. is considered homozygous in addition to 0/0/0 and 1/1/1) - countHet() == 24 - countRef() == 8 (since . is considered 0) - countVariant() == 19

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.5.0

Changes

  • vembrane "expression" input is now vembrane filter "expression" input

Features

  • vembrane now supports filtering VCF files with breakends (BNDs). This requires two passes if you wish to keep the order of the input, which can be enabled with the --preserve-order option. @christopher-schroeder (#80)
  • since we already evaluate expressions, we might as well use this to write tabular output: vembrane table "expression" input evaluates the given expression and writes tabular data as tsv, check vembrane table --help for more information @christopher-schroeder (#79)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.4.1

Changes

  • Fix error if there are no INFO/FORMAT entries; add test @christopher-schroeder @tedil (#77)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.4.0

Changes

  • Only allow one ALT allele per record, error if more than one is encountered @tedil (#73) This change affects expression syntax and VCF input requirements:
    • VCF files need to be split such that each record has only one ALT allele, this can be achieved with e.g. the following tools:
    • This makes filter expressions way less verbose and easier to use; instead of ALT[0] == "C" and INFO["gnomad_AF"][0] > 0.01 (where 0 is the index of the first ALT allele), use ALT == "C" and INFO["gnomad_AF"] > 0.01. (This does reduce expressiveness a bit since you cannot reason about, say, the sum of alternate allele frequencies anymore)
    • (Also consider splitting your VCF files before annotating with snpeff/vep/etc.)
  • Export NA to enable checks such as INFO["DP"] is NA @tedil (#74)
  • bool(NA) = False @christopher-schroeder (#72)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.3.2

Changes

  • Remove header.info from globals @mbargull (#70)
  • Use NA as default for INFO fields which appear in the header but not in the record @mbargull (#70)
  • Allow more builtins @christopher-schroeder (#67) (#68) @mbargull (#69)

Features

  • move globals_whitelist to own module @mbargull (#69)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.3.1

Changes

  • Swap order of access for FORMAT from sample → field to field → sample @tedil (#65)
  • Try evaluating the filter expression for the first record before writing the VCF header @tedil (#66)
  • Swap expression and VCF input positional arguments, make input default to stdin @tedil (#62)

Features

  • Parse info/annotation entries only on dict lookup @mbargull (#63).

    Bug Fixes

  • Replace hardcoded "ANN" in statistics with ann_key @tedil (#60)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.2.1

Changes

  • Check for annotation_key in the filter expression via walking the ast @tedil (#54)

Bug Fixes

  • Replace usages of "ANN" with annotation-key specified on the CLI @tedil (#53)

Maintenance

  • Fix github workflow for publishing to PyPI @tedil (#59)
  • Use the maintenance label for github and packaging related work @tedil (#55)
  • Add missing template for release draft GitHub workflow @tedil (#52)
  • Manage version via pyproject.toml only @tedil (#51)
  • Add release drafter GitHub workflow @tedil (#50)
  • Github workflow for building the vembrane dists and publishing them to PyPI @tedil (#49)

- Python
Published by github-actions[bot] over 5 years ago

vembrane - v0.2.0

  • add support for VEP annotation fields
  • unify access to VCF fields (all uppercase: FORMAT, QUAL, INFO, etc and ANN
  • only evaluate expression once if no ANN annotation is used
  • code refactoring
  • better error disambiguation
  • additional tests

- Python
Published by tedil over 5 years ago

vembrane - v0.1.0

Initial release of vembrane.

- Python
Published by tedil over 5 years ago