varcode 9.2.2__tar.gz → 9.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {varcode-9.2.2/varcode.egg-info → varcode-9.2.3}/PKG-INFO +1 -1
- varcode-9.2.3/tests/test_nonlocal_sv_transcripts.py +83 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_osteosarc_fusions.py +9 -1
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_symbolic_sv_padding.py +1 -1
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/structural.py +9 -3
- varcode-9.2.3/varcode/version.py +1 -0
- {varcode-9.2.2 → varcode-9.2.3/varcode.egg-info}/PKG-INFO +1 -1
- {varcode-9.2.2 → varcode-9.2.3}/varcode.egg-info/SOURCES.txt +1 -0
- varcode-9.2.2/varcode/version.py +0 -1
- {varcode-9.2.2 → varcode-9.2.3}/LICENSE +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/MANIFEST.in +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/README.md +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/pyproject.toml +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/requirements.txt +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/setup.cfg +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_annotator_divergence_scenarios.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_annotator_parity_adversarial.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_annotators.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_cli_effects.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_cli_genes.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_cli_without_pkg_resources.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_collection_filtering.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_collection_variants_attr_consistency.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_common.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_cosmic_mutations.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_cryptic_exons.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_csv_roundtrip.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_dbnsfp_validation.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_default_structural_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_annotation_errors.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_candidates.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_classes.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_collection.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_collection_serialization.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_collection_sort_order.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effect_hypotheses.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_effects_from_mutagenix_variants.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_exacto_fusions.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_exonic_splice_site.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_fast_path.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_frameshift_cterminus_regression.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_frameshift_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_genome_contig_validation.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_genome_sequence.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_genomic_layout.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_genotype.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_genotype_from_vcf.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_germline_context.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_germline_effects.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_haplotype_effect.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_maf.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_mitochondrial.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_mm10_klf6_frameshift.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_mouse.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_mutant_transcript.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_mutate.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_no_duplicate_variants.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_partial_annotators.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_premature_stop_short_description.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_problematic_variants.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_protein_diff_parity.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_read_phase_resolver.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_real_world_callers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_reference.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_reference_mismatch_error.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_reference_segments.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_rna_evidence.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_rna_haplotype_sequences.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_rna_read_phasing_source.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_selenocysteine.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_silent_aa_pos.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_silent_hgvs_description.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_splice_graph.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_splice_outcomes.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_splice_site_effects.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_stop_codon_classification_bugs.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_string_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_structural_variant_annotator.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_structural_variants.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_sv_tabular_metadata.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_symbolic_alleles.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_timings.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_transcript_layout.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_transcript_model.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_transforms_left_align.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_transforms_pair_breakends.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_variant.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_variant_collection.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_vcf.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_vcf_output.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_vcf_parsing.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_vcf_phase_resolver.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/tests/test_vcf_spec_examples.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/__init__.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/annotators/__init__.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/annotators/fast.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/annotators/protein_diff.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/annotators/registry.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cli/__init__.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cli/effects_script.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cli/genes_script.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cli/logging.conf +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cli/variant_args.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cli/version_info.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/common.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/cryptic_exons.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/csv_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effect_candidates.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effect_hypotheses.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/__init__.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/classify.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/codon_tables.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/common.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_classes.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_collection.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_ordering.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_prediction.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_prediction_coding.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_prediction_coding_frameshift.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/effect_prediction_coding_in_frame.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/fast_path.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/mutate.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/transcript_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/effects/translate.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/errors.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/exacto.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/genome.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/genome_sequence.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/genomic_layout.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/genotype.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/germline.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/maf.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/mutant_transcript.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/nucleotides.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/phasing.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/realized_effects.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/reference.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/rna_evidence.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/rna_read_phasing.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/splice_graph.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/splice_outcomes.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/string_helpers.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/structural_variant.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/sv_allele_parser.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/transcript_layout.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/transcript_model.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/transforms/__init__.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/ucsc_reference_names.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/util.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/variant.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/variant_collection.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/vcf.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/vcf_output.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode/vcf_parsing.py +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode.egg-info/dependency_links.txt +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode.egg-info/entry_points.txt +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode.egg-info/requires.txt +0 -0
- {varcode-9.2.2 → varcode-9.2.3}/varcode.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"""A partial overlap cannot establish a local DUP/INV transcript (#405)."""
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
from pyensembl import cached_release
|
|
5
|
+
|
|
6
|
+
from varcode import StructuralVariant, parse_symbolic_alt
|
|
7
|
+
from varcode.effects import Inversion, LargeDuplication
|
|
8
|
+
from varcode.effects import structural
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture(params=["ENST00000003084", "ENST00000357654"])
|
|
12
|
+
def transcript(request):
|
|
13
|
+
return cached_release(81).transcript_by_id(request.param)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.fixture(autouse=True)
|
|
17
|
+
def no_optional_candidates(monkeypatch):
|
|
18
|
+
# Isolate the span fallback; fusion preservation also has real esvee tests.
|
|
19
|
+
monkeypatch.setattr(structural, "_fusion_partner", lambda *args: None)
|
|
20
|
+
monkeypatch.setattr(structural, "_enumerate_and_attach_cryptics", lambda *args: None)
|
|
21
|
+
monkeypatch.setattr(structural, "_enumerate_and_attach_splice_outcomes", lambda *args: None)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def make_sv(transcript, kind, outside, symbolic=False, assembly=None):
|
|
25
|
+
start, end = transcript.start + 50, transcript.end - 50
|
|
26
|
+
if outside in ("left", "both"):
|
|
27
|
+
start = transcript.start - 100
|
|
28
|
+
if outside in ("right", "both"):
|
|
29
|
+
end = transcript.end + 100
|
|
30
|
+
if symbolic:
|
|
31
|
+
return parse_symbolic_alt(
|
|
32
|
+
transcript.contig, start, "N", "<%s>" % kind,
|
|
33
|
+
info={"END": end}, genome=transcript.genome)
|
|
34
|
+
return StructuralVariant(
|
|
35
|
+
transcript.contig, start, kind, end=end,
|
|
36
|
+
genome=transcript.genome, alt_assembly=assembly)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@pytest.mark.parametrize("kind,cls", [("DUP", LargeDuplication), ("INV", Inversion)])
|
|
40
|
+
@pytest.mark.parametrize("outside", ["left", "right", "both"])
|
|
41
|
+
@pytest.mark.parametrize("symbolic", [False, True])
|
|
42
|
+
def test_nonlocal_event_keeps_type_without_inventing_transcript(
|
|
43
|
+
transcript, kind, cls, outside, symbolic):
|
|
44
|
+
sv = make_sv(transcript, kind, outside, symbolic)
|
|
45
|
+
effect = sv.effect_on_transcript(transcript)
|
|
46
|
+
assert isinstance(effect, cls)
|
|
47
|
+
assert effect.mutant_transcript is None
|
|
48
|
+
assert all(c.effect.mutant_transcript is None for c in effect.candidates)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@pytest.mark.parametrize("kind", ["DUP", "INV"])
|
|
52
|
+
@pytest.mark.parametrize("outside", ["left", "right", "both"])
|
|
53
|
+
def test_nonlocal_event_preserves_supplied_assembly(transcript, kind, outside):
|
|
54
|
+
assembly = "ATG" + "GCT" * 10 + "TAA"
|
|
55
|
+
sv = make_sv(transcript, kind, outside, assembly=assembly)
|
|
56
|
+
effect = sv.effect_on_transcript(transcript)
|
|
57
|
+
assert effect.mutant_transcript.cdna_sequence == assembly
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@pytest.mark.parametrize("kind", ["DUP", "INV"])
|
|
61
|
+
def test_wholly_internal_event_retains_local_model(transcript, kind):
|
|
62
|
+
sv = make_sv(transcript, kind, outside=None)
|
|
63
|
+
effect = sv.effect_on_transcript(transcript)
|
|
64
|
+
assert effect.mutant_transcript is not None
|
|
65
|
+
if kind == "DUP":
|
|
66
|
+
assert len(effect.mutant_transcript.cdna_sequence) > len(transcript.sequence)
|
|
67
|
+
else:
|
|
68
|
+
assert any(s.strand == "-" for s in effect.mutant_transcript.reference_segments)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@pytest.mark.parametrize("transcript_id", ["ENST00000439541", "ENST00000550411"])
|
|
72
|
+
@pytest.mark.parametrize("kind", ["DUP", "INV"])
|
|
73
|
+
def test_gene_containment_does_not_establish_short_isoform_structure(transcript_id, kind):
|
|
74
|
+
# CBX5's long isoform spans both ends, but these short isoforms do not.
|
|
75
|
+
genome = cached_release(95)
|
|
76
|
+
tx = genome.transcript_by_id(transcript_id)
|
|
77
|
+
sv = StructuralVariant("12", 54_259_010, kind, end=54_262_307, genome=genome)
|
|
78
|
+
ends = [end for junction in sv.junctions for end in junction]
|
|
79
|
+
assert all(structural._contains(tx.gene, end) for end in ends)
|
|
80
|
+
assert any(not structural._contains(tx, end) for end in ends)
|
|
81
|
+
effect = sv.effect_on_transcript(tx)
|
|
82
|
+
assert isinstance(effect, (LargeDuplication, Inversion))
|
|
83
|
+
assert effect.mutant_transcript is None
|
|
@@ -48,7 +48,7 @@ from varcode import StructuralVariant, FastEffectAnnotator, load_vcf
|
|
|
48
48
|
from varcode.effects.structural import (
|
|
49
49
|
_build_fusion_mutant_transcript,
|
|
50
50
|
)
|
|
51
|
-
from varcode.effects import GeneFusion, Intronic
|
|
51
|
+
from varcode.effects import GeneFusion, Intronic, Inversion, LargeDuplication
|
|
52
52
|
from varcode.transforms import pair_breakends
|
|
53
53
|
|
|
54
54
|
from .data import data_path
|
|
@@ -267,6 +267,10 @@ def test_esvee_vcf_otx1_kif3c_inversion_is_fusion_on_both_partners():
|
|
|
267
267
|
assert fusion.three_prime_transcript.id == kif3c.id
|
|
268
268
|
assert fusion.mutant_transcript.mutant_protein_sequence == (
|
|
269
269
|
"MMSYLKQPPYGMNGLGLAGPAMDLLHPSVGYPETS")
|
|
270
|
+
if sv.sv_type == "INV":
|
|
271
|
+
(span,) = [c.effect for c in fusion.candidates
|
|
272
|
+
if isinstance(c.effect, Inversion)]
|
|
273
|
+
assert span.mutant_transcript is None
|
|
270
274
|
|
|
271
275
|
|
|
272
276
|
def test_esvee_vcf_cpeb2_fam193a_duplication_is_fusion():
|
|
@@ -290,6 +294,10 @@ def test_esvee_vcf_cpeb2_fam193a_duplication_is_fusion():
|
|
|
290
294
|
assert isinstance(on_fam193a, GeneFusion)
|
|
291
295
|
assert on_fam193a.three_prime_transcript.id == fam193a.id
|
|
292
296
|
assert on_fam193a.five_prime_transcript.gene_name == "CPEB2"
|
|
297
|
+
for fusion in (on_cpeb2, on_fam193a):
|
|
298
|
+
(span,) = [c.effect for c in fusion.candidates
|
|
299
|
+
if isinstance(c.effect, LargeDuplication)]
|
|
300
|
+
assert span.mutant_transcript is None
|
|
293
301
|
|
|
294
302
|
|
|
295
303
|
def test_esvee_vcf_sema6a_parm1_fusion_from_either_record():
|
|
@@ -37,7 +37,7 @@ def test_no_nonempty_span_cannot_delete_or_copy_the_anchor(kind, info):
|
|
|
37
37
|
def test_exact_mutant_cdna_on_both_strands(kind, builder, reverse):
|
|
38
38
|
sequence = "ACGTTGCAAGCTTAGGCTAC"
|
|
39
39
|
tx = SimpleNamespace(exons=[SimpleNamespace(start=100, end=119)],
|
|
40
|
-
start=100, end=119, sequence=sequence,
|
|
40
|
+
contig="1", start=100, end=119, sequence=sequence,
|
|
41
41
|
on_backward_strand=reverse)
|
|
42
42
|
sv = parse_symbolic_alt("1", 109, "G", "<%s>" % kind, info={"END": 114})
|
|
43
43
|
a, b = (5, 10) if reverse else (10, 15)
|
|
@@ -126,9 +126,15 @@ def _cdna_ranges_kept_after_deletion(variant, transcript):
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
def _cdna_ranges_within_sv(variant, transcript):
|
|
129
|
-
"""
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
"""Body ranges for a local DUP/INV model, or [] if not local.
|
|
130
|
+
|
|
131
|
+
Clipping a cross-boundary event to this transcript invents a local
|
|
132
|
+
rearrangement (#405). Every junction end must be in this transcript,
|
|
133
|
+
not merely in its gene. Fusion and supplied-assembly paths are separate.
|
|
134
|
+
"""
|
|
135
|
+
if any(not _contains(transcript, end)
|
|
136
|
+
for junction in variant.junctions for end in junction):
|
|
137
|
+
return []
|
|
132
138
|
sv_start, sv_end = _affected_span(variant)
|
|
133
139
|
inside = []
|
|
134
140
|
reverse = transcript.on_backward_strand
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "9.2.3"
|
|
@@ -45,6 +45,7 @@ tests/test_mouse.py
|
|
|
45
45
|
tests/test_mutant_transcript.py
|
|
46
46
|
tests/test_mutate.py
|
|
47
47
|
tests/test_no_duplicate_variants.py
|
|
48
|
+
tests/test_nonlocal_sv_transcripts.py
|
|
48
49
|
tests/test_osteosarc_fusions.py
|
|
49
50
|
tests/test_partial_annotators.py
|
|
50
51
|
tests/test_premature_stop_short_description.py
|
varcode-9.2.2/varcode/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "9.2.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|