Beispiel #1
0
def test_Genomic():
    """Genomic positions are coordinates incremented by one."""
    crossmap = Genomic()

    invariant(
        crossmap.coordinate_to_genomic, 0, crossmap.genomic_to_coordinate, 1)
    invariant(
        crossmap.coordinate_to_genomic, 98, crossmap.genomic_to_coordinate, 99)
def test_MultiLocus_offsets_odd_inverted():
    """Offets exacly between two loci are assigned to the upstream locus."""
    multi_locus = MultiLocus([(1, 3), (6, 8)], True)

    invariant(
        multi_locus.to_position, 4, multi_locus.to_coordinate, (1, 2, 0))
    invariant(
        multi_locus.to_position, 3, multi_locus.to_coordinate, (2, -1, 0))
def test_MultiLocus_adjacent_loci():
    """Positions are continuous when loci are adjacent."""
    multi_locus = MultiLocus([(1, 3), (3, 5)])

    invariant(
        multi_locus.to_position, 2, multi_locus.to_coordinate, (1, 0, 0))
    invariant(
        multi_locus.to_position, 3, multi_locus.to_coordinate, (2, 0, 0))
def test_MultiLocus_offsets_even_inverted():
    """Offsets are assigned to the nearest locus."""
    multi_locus = MultiLocus([(1, 3), (7, 9)], True)

    invariant(
        multi_locus.to_position, 5, multi_locus.to_coordinate, (1, 2, 0))
    invariant(
        multi_locus.to_position, 4, multi_locus.to_coordinate, (2, -2, 0))
Beispiel #5
0
def test_Coding_no_utr3_inverted():
    """A 3' UTR may be missing."""
    crossmap = Coding([(10, 20)], (10, 15), True)

    # Direct transition from CDS to downstream.
    invariant(
        crossmap.coordinate_to_coding, 10,
        crossmap.coding_to_coordinate, (5, 0, 0, 0))
    invariant(
        crossmap.coordinate_to_coding, 9,
        crossmap.coding_to_coordinate, (5, 1, 0, 1))
Beispiel #6
0
def test_Coding_no_utr5_inverted():
    """A 5' UTR may be missing."""
    crossmap = Coding([(10, 20)], (15, 20), True)

    # Direct transition from upstream to CDS.
    invariant(
        crossmap.coordinate_to_coding, 20,
        crossmap.coding_to_coordinate, (1, -1, 0, -1))
    invariant(
        crossmap.coordinate_to_coding, 19,
        crossmap.coding_to_coordinate, (1, 0, 0, 0))
Beispiel #7
0
def test_NonCoding_inverted():
    """Forward oriented noncoding transcript."""
    crossmap = NonCoding(_exons, inverted=True)

    # Boundary between upstream and transcript.
    invariant(
        crossmap.coordinate_to_noncoding, 72,
        crossmap.noncoding_to_coordinate, (1, -1, -1))
    invariant(
        crossmap.coordinate_to_noncoding, 71,
        crossmap.noncoding_to_coordinate, (1, 0, 0))

    # Boundary between downstream and transcript.
    invariant(
        crossmap.coordinate_to_noncoding, 5,
        crossmap.noncoding_to_coordinate, (22, 0, 0))
    invariant(
        crossmap.coordinate_to_noncoding, 4,
        crossmap.noncoding_to_coordinate, (22, 1, 1))
Beispiel #8
0
def test_Coding_regions_inverted():
    """The CDS can start or end on a region boundary."""
    crossmap = Coding([(10, 21), (30, 40), (49, 60)], (30, 40), True)

    # Upstream odd length intron between two regions.
    invariant(
        crossmap.coordinate_to_coding, 44,
        crossmap.coding_to_coordinate, (-1, 5, -1, 0))
    invariant(
        crossmap.coordinate_to_coding, 43,
        crossmap.coding_to_coordinate, (1, -4, 0, 0))

    # Downstream odd length intron between two regions.
    invariant(
        crossmap.coordinate_to_coding, 25,
        crossmap.coding_to_coordinate, (10, 5, 0, 0))
    invariant(
        crossmap.coordinate_to_coding, 24,
        crossmap.coding_to_coordinate, (1, -4, 1, 0))
Beispiel #9
0
def test_Coding():
    """Forward oriented coding transcript."""
    crossmap = Coding(_exons, _cds)

    # Boundary between 5' and CDS.
    invariant(
        crossmap.coordinate_to_coding, 31,
        crossmap.coding_to_coordinate, (-1, 0, -1, 0))
    invariant(
        crossmap.coordinate_to_coding, 32,
        crossmap.coding_to_coordinate, (1, 0, 0, 0))

    # Boundary between CDS and 3'.
    invariant(
        crossmap.coordinate_to_coding, 42,
        crossmap.coding_to_coordinate, (6, 0, 0, 0))
    invariant(
        crossmap.coordinate_to_coding, 43,
        crossmap.coding_to_coordinate, (1, 0, 1, 0))
Beispiel #10
0
def test_Coding_small_utr3():
    """A 5' UTR may be of lenght one."""
    crossmap = Coding([(10, 20)], (15, 19))

    # Transition from CDS to 3' UTR to downstream.
    invariant(
        crossmap.coordinate_to_coding, 18,
        crossmap.coding_to_coordinate, (4, 0, 0, 0))
    invariant(
        crossmap.coordinate_to_coding, 19,
        crossmap.coding_to_coordinate, (1, 0, 1, 0))
    invariant(
        crossmap.coordinate_to_coding, 20,
        crossmap.coding_to_coordinate, (1, 1, 1, 1))
Beispiel #11
0
def test_Coding_small_utr5_inverted():
    """A 5' UTR may be of lenght one."""
    crossmap = Coding([(10, 20)], (15, 19), True)

    # Transition from upstream to 5' UTR to CDS.
    invariant(
        crossmap.coordinate_to_coding, 20,
        crossmap.coding_to_coordinate, (-1, -1, -1, -1))
    invariant(
        crossmap.coordinate_to_coding, 19,
        crossmap.coding_to_coordinate, (-1, 0, -1, 0))
    invariant(
        crossmap.coordinate_to_coding, 18,
        crossmap.coding_to_coordinate, (1, 0, 0, 0))
Beispiel #12
0
def test_Coding_small_utr5():
    """A 5' UTR may be of lenght one."""
    crossmap = Coding([(10, 20)], (11, 15))

    # Transition from upstream to 5' UTR to CDS.
    invariant(
        crossmap.coordinate_to_coding, 9,
        crossmap.coding_to_coordinate, (-1, -1, -1, -1))
    invariant(
        crossmap.coordinate_to_coding, 10,
        crossmap.coding_to_coordinate, (-1, 0, -1, 0))
    invariant(
        crossmap.coordinate_to_coding, 11,
        crossmap.coding_to_coordinate, (1, 0, 0, 0))
Beispiel #13
0
def test_Coding_small_utr3_inverted():
    """A 5' UTR may be of lenght one."""
    crossmap = Coding([(10, 20)], (11, 15), True)

    # Transition from CDS to 3' UTR to downstream.
    invariant(
        crossmap.coordinate_to_coding, 11,
        crossmap.coding_to_coordinate, (4, 0, 0, 0))
    invariant(
        crossmap.coordinate_to_coding, 10,
        crossmap.coding_to_coordinate, (1, 0, 1, 0))
    invariant(
        crossmap.coordinate_to_coding, 9,
        crossmap.coding_to_coordinate, (1, 1, 1, 1))
Beispiel #14
0
def test_Locus_inverted():
    """Reverse orientent Lovus."""
    locus = Locus((30, 35), True)

    invariant(locus.to_position, 35, locus.to_coordinate, (0, -1))
    invariant(locus.to_position, 34, locus.to_coordinate, (0, 0))
    invariant(locus.to_position, 33, locus.to_coordinate, (1, 0))
    invariant(locus.to_position, 31, locus.to_coordinate, (3, 0))
    invariant(locus.to_position, 30, locus.to_coordinate, (4, 0))
    invariant(locus.to_position, 29, locus.to_coordinate, (4, 1))
Beispiel #15
0
def test_Locus():
    """Forward orientent Lovus."""
    locus = Locus((30, 35))

    invariant(locus.to_position, 29, locus.to_coordinate, (0, -1))
    invariant(locus.to_position, 30, locus.to_coordinate, (0, 0))
    invariant(locus.to_position, 31, locus.to_coordinate, (1, 0))
    invariant(locus.to_position, 33, locus.to_coordinate, (3, 0))
    invariant(locus.to_position, 34, locus.to_coordinate, (4, 0))
    invariant(locus.to_position, 35, locus.to_coordinate, (4, 1))
def test_MultiLocus_inverted():
    """Reverse oriented MultiLocus."""
    multi_locus = MultiLocus(_locations, True)

    # Boundary between upstream and the first locus.
    invariant(
        multi_locus.to_position, 72, multi_locus.to_coordinate, (0, -1, -1))
    invariant(
        multi_locus.to_position, 71, multi_locus.to_coordinate, (0, 0, 0))

    # Internal locus.
    invariant(
        multi_locus.to_position, 35, multi_locus.to_coordinate, (8, -1, 0))
    invariant(
        multi_locus.to_position, 34, multi_locus.to_coordinate, (8, 0, 0))
    invariant(
        multi_locus.to_position, 33, multi_locus.to_coordinate, (9, 0, 0))
    invariant(
        multi_locus.to_position, 31, multi_locus.to_coordinate, (11, 0, 0))
    invariant(
        multi_locus.to_position, 30, multi_locus.to_coordinate, (12, 0, 0))
    invariant(
        multi_locus.to_position, 29, multi_locus.to_coordinate, (12, 1, 0))

    # Boundary between the last locus and downstream.
    invariant(
        multi_locus.to_position, 5, multi_locus.to_coordinate, (21, 0, 0))
    invariant(
        multi_locus.to_position, 4, multi_locus.to_coordinate, (21, 1, 1))
Beispiel #17
0
def test_Coding_protein():
    """Protein positions."""
    crossmap = Coding(_exons, _cds)

    # Boundary between 5' UTR and CDS.
    invariant(
        crossmap.coordinate_to_protein, 31,
        crossmap.protein_to_coordinate, (-1, 3, 0, -1, 0))
    invariant(
        crossmap.coordinate_to_protein, 32,
        crossmap.protein_to_coordinate, (1, 1, 0, 0, 0))

    # Intron boundary.
    invariant(
        crossmap.coordinate_to_protein, 34,
        crossmap.protein_to_coordinate, (1, 3, 0, 0, 0))
    invariant(
        crossmap.coordinate_to_protein, 35,
        crossmap.protein_to_coordinate, (1, 3, 1, 0, 0))

    # Boundary between CDS and 3' UTR.
    invariant(
        crossmap.coordinate_to_protein, 42,
        crossmap.protein_to_coordinate, (2, 3, 0, 0, 0))
    invariant(
        crossmap.coordinate_to_protein, 43,
        crossmap.protein_to_coordinate, (1, 1, 0, 1, 0))