Skip to content

Change Log

v6.0.0 (2026-05-26)

Fixed - apply_variants_to_transcript now refuses an insertion abutting another edit at the same cDNA offset. The previous overlap check only caught range overlap and the two-insertions-at-the-same-offset case, so an insertion paired with a substitution or deletion starting at the same offset slipped through and produced an order-dependent joint cDNA. User-visible impact: phased haplotype / germline pipelines (varcode/phasing.py, varcode/germline.py) that previously returned a silently order-dependent joint effect for these inputs now return independent per-variant effects computed against the reference instead. - IUPAC ambiguity codes (R, Y, S, W, K, M, D, V, H, B) in a reverse-strand variant's alleles are now reverse-complemented via the full IUPAC translation table. The private helper in varcode/mutant_transcript.py only covered A/C/G/T/N and silently passed ambiguity codes through unchanged; _resolve_variant_edit now delegates to varcode.nucleotides.reverse_complement.

Added - Added RNAReadPhasingSource, a BAM-backed ReadPhasingSource implementation for RNA read/fragment co-occurrence. It is consumed through MolecularPhaseResolver(source) and lives behind the optional varcode[rna] / pysam dependency. ReadPhaseResolver remains as the varcode 5.0 compatibility name. - SpliceOutcomeSet.effect_if_splicing_unchanged — the canonical "alternative outcome" accessor: the coding consequence that applies if splicing proceeds normally (the NormalSplicing candidate's coding_effect). Unlike the legacy ExonicSpliceSite.alternate_effect, it works for intronic splice disruptions — returning None when the nucleotide change leaves the protein untouched (i.e. there is no coding consequence to attach). Sits alongside most_likely_effect and candidates as the three-accessor surface on SpliceOutcomeSet (#391).

Breaking - SpliceOutcomeSet is now always-on for splice-disrupting variants (#391). Every variant that lands in the canonical splice window — SpliceDonor, SpliceAcceptor, ExonicSpliceSite, IntronicSpliceSite — is wrapped in a SpliceOutcomeSet carrying the candidate mechanisms. Specifically: - The splice_outcomes=True flag on Variant.effects() / VariantCollection.effects() / predict_variant_effects() is removed. Callers passing it explicitly get a TypeError. Migration: drop the keyword — wrapping is unconditional. - Variant.effect_on_transcript(transcript) and the FastEffectAnnotator / ProteinDiffEffectAnnotator per-transcript paths return a SpliceOutcomeSet for splice-disrupting variants instead of the raw ExonicSpliceSite / SpliceDonor / etc. class. Migration: replace isinstance(effect, ExonicSpliceSite) with isinstance(effect, SpliceOutcomeSet) and effect.disrupted_signal_class is ExonicSpliceSite. effect.alternate_effect still works as a back-compat alias for effect.effect_if_splicing_unchanged, so attribute access keeps working through the wrapper. - SpliceOutcomeSet.modifies_protein_sequence is hardcoded to True (a splice disruption is always potentially protein- modifying via a non-NormalSplicing candidate). Closes a long- standing filter bug where drop_silent_and_noncoding() silently dropped exonic-splice-site variants whose NormalSplicing.coding_effect happened to be Silent. - Candidate construction is lazy: only the cheap NormalSplicing candidate is built eagerly; ExonSkipping, IntronRetention, CrypticDonor / CrypticAcceptor materialise on first .candidates access. Pipelines that filter on modifies_protein_sequence / effect_priority and never read .candidates pay only the eager cost. - SpliceOutcomeSet is now a TranscriptMutationEffect subclass (alongside MultiOutcomeEffect), so it carries gene / transcript and matches the standard isinstance(effect, TranscriptMutationEffect) filter used by downstream consumers. - Unified the multi-outcome machinery: SpliceCandidate deleted; MultiOutcomeEffect.outcomes accessor + _with_extra_outcomes helper + _extra_outcomes slot removed (#382). - SpliceOutcomeSet.candidates now returns tuple[EffectCandidate, ...] — the same shape every other MultiOutcomeEffect subclass exposes. Each entry wraps an inner SpliceMechanismEffect (NormalSplicing, ExonSkipping, IntronRetention, CrypticDonor, or CrypticAcceptor). Mechanism identity now lives on type(candidate.effect), and the mechanism object carries fields like affected_exon, side, cryptic_genomic_position, aa_ref, aa_alt, and mutant_transcript. The previous candidate.outcome / candidate.plausibility / candidate.coding_effect / candidate.predicted_class_name / candidate.mutant_transcript / candidate.has_protein fields are gone — read provenance off the EffectCandidate (.source, .evidence) and mechanism/protein state off the inner effect (candidate.effect, candidate.effect.mutant_transcript). candidate.plausibility has no one-for-one semantic replacement: it was the old splice-specific name for a DNA-only ordering heuristic, not evidence. There is no shared EffectCandidate.probability; producer-specific support belongs in candidate.evidence under explicit names. - MultiOutcomeEffect.candidates is the single accessor on every subclass (SpliceOutcomeSet, StructuralVariantEffect, PhaseCandidateSet, ExonicSpliceSite, HaplotypeEffect). A new MultiOutcomeEffect.effects convenience property unwraps to tuple(c.effect for c in self.candidates) for callers that don't need provenance. - The post-hoc attachment slot renamed _extra_outcomes_extra_candidates; the merge helper renamed _with_extra_outcomes_combine_with_extra_candidates. apply_rna_evidence_to_effects still uses _extra_candidates for non-splice multi-outcome effects; splice mechanism sets now reconcile RNA evidence into a replacement set with rna_evidence, added_candidates, excluded_candidates, and candidate_rna_evidence audit fields. External integrations that touched these private names must rename. - StructuralVariantEffect.__init__ parameter renamed candidates=primary_effects= (carries the inner MutationEffect tuple; the candidates accessor now lifts to EffectCandidate automatically). Same on LargeDeletion, LargeDuplication, GeneFusion. - MultiOutcomeEffect.most_likely is removed. Replaced by four explicit accessors so callers never confuse "wrapped vs unwrapped" or "likeliest vs most-disruptive": - .most_likely_candidateEffectCandidate (same as candidates[0]) - .most_likely_effect → inner MutationEffect of the above - .highest_priority_candidateEffectCandidate with the highest effect_priority among candidates (worst-case classification, independent of producer order) - .highest_priority_effect → inner MutationEffect of the above Callers doing effect.most_likely.mutant_protein_sequence or effect.most_likely.aa_ref should switch to effect.most_likely_effect.mutant_protein_sequence etc.; callers that want the wrapper (with .source, .evidence) use effect.most_likely_candidate. - Splice mechanisms promoted to first-class MutationEffect classes, each carrying its own protein vocab (aa_ref / aa_alt / mutant_protein_sequence / mutant_transcript) on the instance — no more wrapping a separate coding effect. New hierarchy: - SpliceMechanismEffect(TranscriptMutationEffect) — base, carries splice_signal referencing the underlying SpliceDonor / SpliceAcceptor / IntronicSpliceSite / ExonicSpliceSite so each mechanism knows where the disruption was. - NormalSplicing — splice signal hit but splicing proceeds; carries coding_effect for the underlying nucleotide-level change (or None for purely intronic disruption). - ExonSkipping — affected exon excluded; carries affected_exon and in_frame. - IntronRetention — intron retained; carries retained_intron_start, retained_intron_end, side. - CrypticDonor / CrypticAcceptor — cryptic site replaces canonical; carry affected_exon, cryptic_genomic_position, motif_score, exon_length_delta. Unresolved state is "protein fields are None" — no parallel placeholder class hierarchy. Class identity = mechanism; consumers dispatch on isinstance(candidate.effect, ExonSkipping) instead of evidence-key checks. Resolved mechanisms retain their classified protein consequence as protein_effect so severity queries (effect_priority, modifies_protein_sequence) behave like ordinary coding effects while preserving mechanism identity. - Deleted: SpliceOutcome enum (replaced by class identity), PredictedIntronRetention (subsumed by IntronRetention), PredictedCrypticSpliceSite (split into CrypticDonor + CrypticAcceptor), SpliceOutcomeSet.to_dict / .from_dict overrides (no enum left to stringify), evidence["splice_outcome"] / evidence["placeholder"] / evidence["description"] keys (info now lives on the mechanism Effect — type(candidate.effect), candidate.effect.resolved, candidate.effect.short_description), _placeholder_effect_for_outcome and _make_splice_candidate helpers. - SpliceOutcomeSet.candidate_proteins now keys by mechanism class (e.g. proteins[ExonSkipping]) instead of SpliceOutcome enum value. - varcode.Outcome renamed to varcode.EffectCandidate. The helper outcomes_from_candidates renamed to candidates_from_effects. The module varcode.outcomes renamed to varcode.effect_candidates. The test file tests/test_outcomes.py renamed to tests/test_effect_candidates.py. The description field on the wrapper class is removed — use candidate.effect.short_description (it was always a passthrough). Also removed from make_rna_outcome(description=...). No deprecation alias; update imports. The class ships with a module docstring explaining why the wrapper exists: the same MutationEffect instance can appear in multiple multi-outcome contexts with different per-context provenance (e.g. a splice candidate re-surfaced by the SV annotator with a different source tag and sv_type in evidence); putting metadata on the wrapper instead of the Effect lets the Effect stay shared while the labels diverge. (Per #382, .outcomes has since been removed and MultiOutcomeEffect.candidates is the single accessor across every subclass.) Aspirational "isovar" / "exacto" / "longread_assembly" example tags scrubbed from varcode docstrings. - Phasing API generalized; Isovar-named identifiers removed from the varcode public surface (#378). Varcode no longer imports or names any upstream tool — implementations of the new generic Protocols live in their respective packages (e.g. isovar.IsovarReadPhasing, openvax/isovar#183). - IsovarAssemblyProvider (Protocol) removed, split into: - ReadPhasingSource with has_evidence(variant) -> bool and partners_in_cis(variant) -> Sequence[Variant]. - MutantTranscriptSource with mutant_transcript(variant, transcript) -> Optional[MutantTranscript]. - IsovarPhaseResolver renamed to ReadPhaseResolver. Constructor accepts any ReadPhasingSource; routes mutant_transcript(...) to the wrapped source when it also satisfies MutantTranscriptSource. Returns None otherwise instead of raising. - Resolver source tag changed from "isovar" to "read_phasing" on ReadPhaseResolver. Consumers filtering effects by phase source need to update their filter values. - varcode.effects.effect_classes.PhaseAmbiguousEffect renamed to PhaseCandidateSet. No deprecation alias — update imports (#376). Per #382, the public surface is .candidates (a tuple[EffectCandidate, ...] with per-hypothesis evidence keys), .most_likely_candidate / .most_likely_effect / .highest_priority_candidate / .highest_priority_effect, and .short_description.

Changed - SpliceOutcomeSet serialization migrated onto serializable>=1.1.0's standard introspection (the parallel SpliceCandidate dataclass that also lived on this path has since been deleted per #382). The __effect_class__ tagging and hand-rolled class registries (_CODING_EFFECT_CLASS_REGISTRY, _SPLICE_SIGNAL_CLASS_REGISTRY, _rehydrate_coding_effect) are gone; JSON round-trip now flows through serializable.helpers' standard __class__ / __module__ stamping (#343). SpliceOutcomeSet.to_dict / from_dict are overridden to stringify the SpliceOutcome enum stored under candidate.evidence["splice_outcome"] (and rehydrate it on the way back) without mutating self mid-call, and to emit a single candidates key on the wire (no parallel _candidates). The JSON wire format is unchanged, but the pre-#305 migration shim for the internal _ExonSkipFrameshiftEffect class has been removed. JSON produced by varcode 2.4.x or earlier (which could contain "__effect_class__": "_ExonSkipFrameshiftEffect" tags) will no longer rehydrate; re-emit from the current annotator or hand-patch those tags to FrameShift before loading. Anyone still reading such payloads can pin varcode<4.7 or resurrect the shim in user code.

Changed - README "Effect Types" section rewritten: 14 missing concrete effect classes added (Failure, the splice mechanisms, the structural-variant effects, CrypticExonCandidate, HaplotypeEffect, PhaseCandidateSet), grouped into 7 sub-tables by biological context, with a new intro explaining MultiOutcomeEffect and how multi-possibility effects are represented. Each class name links to its source definition via GitHub text-fragment URLs that survive line-number drift. - Documented and streamlined the splice-effect model: clarified that SpliceSite effects (SpliceDonor / SpliceAcceptor / IntronicSpliceSite / ExonicSpliceSite) describe where a splice signal was hit and carry no protein consequence on their own, while SpliceMechanismEffect subclasses describe what the spliceosome does and carry the protein change. SpliceSite (previously an undocumented marker base) is now the documented, load-bearing type: enumerate_splice_outcomes gates on isinstance(effect, SpliceSite) rather than enumerating the four subclasses. Documented the SpliceOutcomeSet.disrupted_signal_class (a SpliceSite subclass, i.e. a type, for priority lookup) vs each candidate's effect.splice_signal (a SpliceSite instance) distinction. No behavior change.

Added - Docs site now has an "Effect types" page that auto-renders every class in varcode.effects.effect_classes via mkdocstrings, so the documented catalog stays in sync with the code (previously only the abstract bases were in the API reference, while the full list lived only in the hand-maintained README table). - Exported the splice-signal disruption effects at the package root for parity with the already-public splice mechanism effects: SpliceSite (the shared base), SpliceDonor, SpliceAcceptor, IntronicSpliceSite, and ExonicSpliceSite. from varcode import SpliceSite now works, so isinstance(effect, SpliceSite) can be used to catch any splice-site disruption without reaching into varcode.effects.effect_classes.

v2.3.0 (2026-04-13)

Added - Per-sample genotype / zygosity access (#267). Genotype frozen dataclass, Zygosity enum (ABSENT/HETEROZYGOUS/HOMOZYGOUS/MISSING), new VariantCollection methods .samples, .genotype(variant, sample), .zygosity(variant, sample), .for_sample(name), .heterozygous_in(name), .homozygous_alt_in(name). Multi-allelic aware: each split Variant reports zygosity relative to its own alt. - varcode.SampleNotFoundError(KeyError) raised on typoed sample names.

v2.2.1 (2026-04-13)

Fixed - Ref-vs-genome mismatches now raise a dedicated varcode.ReferenceMismatchError (subclass of ValueError) with an actionable message naming the likely causes and pointing at raise_on_error=False (#215, #246).

v2.2.0 (2026-04-12)

Added - from_csv now accepts either chr or contig as the contig column name on both VariantCollection and EffectCollection, so CSVs are interchangeable between the two types (#274). - from_csv warns on major varcode_version drift recorded in the CSV header (#275).

Changed - from_csv docstrings now point users at from_json for byte-for-byte round-trip or larger collections (#276).

v2.1.0 (2026-04-12)

Added - VariantCollection.from_csv and EffectCollection.from_csv for round-trip deserialization (#273). - to_csv prepends a # key=value metadata header by default (varcode_version, reference_name); from_csv reads it so the genome argument becomes optional. Pass include_header=False for legacy consumers.

Fixed - VariantCollection.variants and EffectCollection.effects now match the collection's iteration order instead of holding the raw pre-sort / pre-dedup input list (#220).

v2.0.0 (2026-04-11)

Major release — several backward-incompatible fixes. See #263 and #265 for full details.

Breaking - Silent.short_description returns HGVS p.{ref}{pos}= (e.g. p.R6=) instead of the literal "silent" (#217). - Silent.aa_pos no longer includes the shared-prefix offset; it now points at the actual synonymous codon (#208). - PrematureStop.short_description returns p.{pos}ins{alt}* when aa_ref is empty instead of the ambiguous p.{pos}{alt}* (#216). - EffectCollection is sorted by effect priority (most severe first) by default. Pass sort_key=False to disable or a custom callable to override (#227). - Intronic splice classification is sequence-aware: variants at +1/+2 or -1/-2 with a non-canonical reference base are classified as IntronicSpliceSite rather than SpliceDonor/SpliceAcceptor (#262).

Fixed - SNV in the stop codon with a stop-prefixed 3' UTR is correctly classified as StopLoss instead of Insertion (#250, #205). - Insertion before the stop codon that produces an identical protein is correctly classified as Silent (#201). - changes_exonic_splice_site now applies the mutation before checking the splice pattern (#262). - VCF loader skips symbolic alleles (<DEL>, <CN0>, <INS:ME:ALU>, ...) and breakend notation with a visible warning instead of crashing (#88). Full SV support is tracked in #264.

v0.5.15 (2017-04-28)

Full Changelog

Closed issues:

  • Allow contig to be empty to allow parsing of MAF with faulty mutation(s) #210

Merged pull requests:

  • Fixes to load_maf #223 (tavinathanson)
  • added raise_on_error option to load_maf and load_maf_dataframe #221 (iskandr)
  • Optionally allow duplicated mutations when using load_vcf or load_maf. Fixes #211 #212 (tuomastik)

v0.5.14 (2017-04-05)

Full Changelog

Merged pull requests:

  • Adding 'distinct' as a parameter to load_vcf. #222 (julia326)

v0.5.13 (2017-04-01)

Full Changelog

Closed issues:

  • Effect prediction throws error (even if raise_on_error=False) #213
  • Optionally allow duplicated mutations when using load_vcf or load_maf #211

Merged pull requests:

  • install ensembl 87 on travis #219 (iskandr)
  • Allow user to affect the sorting of variants when loading a VCF or MAF. #218 (tuomastik)

v0.5.12 (2017-01-18)

Full Changelog

Closed issues:

  • Make Varcode correctly infer genome for b37-decoy string #207
  • Longer indels in random variants #47
  • Predict coding sequence of StartLoss mutations #4

Merged pull requests:

v0.5.11 (2016-12-05)

Full Changelog

Fixed bugs:

  • Varcode noncoding variant in a drop_silent_and_noncoding() list #200

Merged pull requests:

  • Adding aa_ref argument to StopLoss for variants which delete codons before stop #203 (iskandr)

v0.5.10 (2016-10-19)

Full Changelog

Fixed bugs:

  • Variant pickling won't work for not-human and non-EnsemblRelease Genomes #147

Closed issues:

  • Link on PyPI badge broken #191
  • Reference incorrectly inferred when "b36" in reference file path #181
  • Premature stop codon error #166

Merged pull requests:

  • explicit args to __init__ of Intronic splice effects fixes serialization #199 (iskandr)
  • Update RELEASING.md, fixing tagging instructions #198 (julia326)

v0.5.9 (2016-10-11)

Full Changelog

Fixed bugs:

  • StopLoss pickling is broken #188

Closed issues:

  • One logger per module #196
  • SNV results in deletion #193

Merged pull requests:

  • One logger per module. #197 (julia326)
  • Fix edge case where PrematureStop in last amino acid got interpreted as a Deletion #194 (iskandr)
  • Fix inferred-reference-bug #182 (jburos)

v0.5.8 (2016-09-28)

Full Changelog

Merged pull requests:

v0.5.7 (2016-09-28)

Full Changelog

v0.5.3 (2016-09-28)

Full Changelog

Merged pull requests:

v0.5.2 (2016-09-28)

Full Changelog

Closed issues:

  • Make sure Variant works with any Genome (not just a human EnsemblRelease) #127

Merged pull requests:

  • Move extraneous variables to properties for normalization #190 (tavinathanson)
  • Use is_protein_coding property of pyensembl.Transcript and pyensembl.Gene #180 (iskandr)

v0.5.1 (2016-09-16)

Full Changelog

Merged pull requests:

v0.5.0 (2016-09-13)

Full Changelog

Implemented enhancements:

  • Support collection.as_dataframe() #128

Closed issues:

  • Substitution mis-annotated as stop-loss #176
  • Wrong aa_mutation_end_offset for insertion of stop codon #175
  • Wrong aa_ref for insertion of stop codon #174
  • Insertions after the stop codon annotated as plain Insertions #172
  • Mutations before the stop codon confused as StopLosses #171
  • StopLosses do not translate into 3' UTR #170
  • Insertion of stop codon is annotated as simple Insertion and not PrematureStop #169
  • Synonimous FrameShift over stop codon not annotated as silent #168
  • Wrong offset for insertion of StopCodon #167
  • Document release process #154
  • compare variants that use different references #83
  • Annotate with predicted pathogenicity #46

Merged pull requests:

  • Reorganize effect prediction code, fixed annotation bugs/issues #173 (iskandr)

v0.4.19 (2016-09-12)

Full Changelog

Fixed bugs:

  • original_start doesn't get pickled #141

Closed issues:

  • replace load\_vcf with load\_vcf\_fast ? #144
  • Add annotate\_random\_variants commandline script #49
  • support filtering a variant collection to variants overlapping specified gene names #32
  • Use SPANR to identify splicing misregulation #2

v0.4.18 (2016-08-08)

Full Changelog

Closed issues:

  • vcf unit tests broken in python 3 (?) #164
  • maximum recursion depth exceeded when loading a vcf from a URL #163

Merged pull requests:

  • In load_vcf, when passed a URL download it first to a local file then… #165 (timodonnell)
  • Removed Collection from varcode, moved to separate 'sercol' repo instead #162 (iskandr)

v0.4.17 (2016-08-05)

Full Changelog

Merged pull requests:

  • Commandline interface, simplified serialization, merging VariantCollections #161 (iskandr)

v0.4.16 (2016-07-30)

Full Changelog

v0.4.15 (2016-07-15)

Full Changelog

Fixed bugs:

Closed issues:

  • load_vcf_fast fails when sample names contain spaces #158

Merged pull requests:

  • Fix load_vcf_fast for sample names containing a space character #160 (timodonnell)

v0.4.14 (2016-06-07)

Full Changelog

Merged pull requests:

v0.4.12 (2016-05-28)

Full Changelog

v0.4.13 (2016-05-28)

Full Changelog

Merged pull requests:

v0.4.11 (2016-05-27)

Full Changelog

v0.4.10 (2016-05-27)

Full Changelog

v0.4.9 (2016-05-27)

Full Changelog

Closed issues:

  • Add serialization for EffectCollection and VariantCollection #71

Merged pull requests:

  • Reorganized coding effects to use KnownAminoAcidChange base class #153 (iskandr)

v0.4.8 (2016-05-27)

Full Changelog

Fixed bugs:

  • Potentially wrong translated sequence from frameshift on mm10 #151

Closed issues:

  • ExonicSpliceSite mutations are classified as Noncoding #136
  • Filter field is not saved after loading a VCF #89
  • investigate porting read evidence module to use impala #69
  • Attach genotypes and other sample information to Variants #30
  • support determining the evidence for a variant in a bam #26

Merged pull requests:

  • Added unit tests for Klf6 frameshift, fix bug in frameshift translation #152 (iskandr)
  • Add as_dataframe to EffectCollection #150 (arahuja)
  • Use versioneer to manage version number #149 (arahuja)
  • Fix pyvcf error from passing _parse_samples a tuple instead of a list #148 (timodonnell)
  • Fix variant pickling #146 (tavinathanson)
  • Parse and expose sample info, including for multisample VCFs #145 (timodonnell)
  • Preserve contig name #140 (iskandr)
  • Quotes around nucleotides in Variant representation #139 (iskandr)
  • added is_deletion, is_insertion, and is_indel properties to variants #138 (iskandr)

v0.4.2 (2016-02-25)

Implemented enhancements:

  • VariantCollection.high_priority_effect != Variant.top_effect #58
  • Improves the documentation for varcode #110 (armish)
  • Convert effect-type section into a sorted table #104 (armish)
  • Start highlighting Python syntax in README #103 (armish)

Fixed bugs:

  • Varcode requires pandas >= 0.13.1, however it uses 0.15 functionality #12 #92
  • Varcode version 0.3.10 cannot be imported when installed through pip #90
  • pip installing Varcode doesn't seem to work lately #84
  • AttributeError: 'FrameShiftTruncation' object has no attribute 'aa_alt' #70
  • Use find_packages correctly #85 (tavinathanson)

Closed issues:

  • memoize a bit less #131
  • Intragenic variants do not have a short_description field #129
  • move read_evidence module and Locus class to varlens #124
  • Support Structural Variants #122
  • PrematureStop called as Silent #116
  • PrematureStop called as a Deletion #111
  • UnboundLocalError in in_frame_coding_effect.py #107
  • Double mutations in a MAF file cause error #105
  • varcode.load_vcf_fast used 0.16.1 Pandas options #101
  • Configuring datacache default cache directory #98
  • Improve the README to include some examples of working with Varcode in IPython #95
  • support loading VCFs over HTTP #91
  • Travis should include setup.py testing #86
  • Make Variants pickle-able #77
  • modifies_coding_sequence is always false #64
  • AssertionError: aa_ref and aa_alt can't both be empty string #63
  • Too many open files on error on getting top effect #62
  • KeyError: 'reference' in load_vcf #60
  • Issue with n_skip? #56
  • Optional random seed argument for generating random variants #48
  • An argument for using == and not >= for requirements? #43
  • deploy a test coverage tool #38
  • Replace raise_on_error parameter to property of VariantCollection #36
  • assertion error in infer_coding_effect #33
  • add a memoized "highest_priority_effect" property to Variant #31
  • support deep reloading varcode module #25
  • handle multiallelic variants #22
  • vcf.load_vcf should provide an option to load all variants, regardless of whether filter is PASS #21
  • empty variant collection when loading strelka vcf #16
  • Incorrect handling of variants which run past the beginning/end of an exon's boundary #14
  • Reference amino acid sequence sometimes empty for coding variants #12
  • handle single-sample VCFs with INFO fields containing list values of size > 1 #9
  • Do FrameShift (or StopGain) mutations affect splicing? #6
  • What to do with mutations that span the 5' UTR / CDS boundary? #5
  • Annotate essential splice site mutations #1

Merged pull requests:

* This Change Log was automatically generated by github_changelog_generator