Skip to content

v6.0.0

  • v6.0.0
  • 6c2aeac
  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
  • Choose a tag to compare

  • v6.0.0
  • 6c2aeac
  • Choose a tag to compare

  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
@iskandr iskandr tagged this 26 May 15:38
Every splice-disrupting variant now wraps in a SpliceOutcomeSet at the user-facing API. No more `splice_outcomes=True` opt-in flag. Cost is amortised via lazy candidate computation; legacy access patterns keep working through compat shims.

**What landed**
- Always-on SpliceOutcomeSet: Variant.effects() / Variant.effect_on_transcript(t) / VariantCollection.effects() always wrap splice-disrupting variants. The splice_outcomes= parameter is removed.
- Lazy candidates: only NormalSplicing is built eagerly; ExonSkipping / IntronRetention / cryptic candidates materialise on first .candidates access and are cached.
- Three-accessor surface on SpliceOutcomeSet: most_likely_effect, effect_if_splicing_unchanged, candidates.
- Silent-splice filter bug fixed: SpliceOutcomeSet.modifies_protein_sequence = True. Variants whose NormalSplicing.coding_effect happens to be Silent are no longer dropped by drop_silent_and_noncoding().
- SpliceOutcomeSet is a TranscriptMutationEffect subclass — carries gene/transcript and matches downstream isinstance(effect, TranscriptMutationEffect) filters.

**Compat shims**
- SpliceOutcomeSet.alternate_effect aliases effect_if_splicing_unchanged.
- select_between_exonic_splice_site_and_alternate_effect unwraps SpliceOutcomeSet → alternate_effect when the disrupted signal is ExonicSpliceSite and the alternate outranks the signal.
- FastEffectAnnotator.annotate_on_transcript returns raw splice classes so protein_diff's dual dispatch keeps working.
- enumerate_splice_outcomes(splice_set, genomic_sequence=...) rebuilds an already-wrapped set with a new provider.

**Migration**
Replace `isinstance(effect, ExonicSpliceSite)` with `isinstance(effect, SpliceOutcomeSet) and effect.disrupted_signal_class is ExonicSpliceSite`. Attribute access patterns keep working through the wrapper.

Closes #391.
Assets 2
Loading