示例#1
0
def test_MultiLocus():
    """Forward oriented MultiLocus."""
    multi_locus = MultiLocus(_locations)

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

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

    # Boundary between the last locus and downstream.
    invariant(
        multi_locus.to_position, 71, multi_locus.to_coordinate, (21, 0, 0))
    invariant(
        multi_locus.to_position, 72, multi_locus.to_coordinate, (21, 1, 1))
示例#2
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))
示例#3
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))
示例#4
0
def test_MultiLocus_inverted_degenerate():
    """Degenerate upstream and downstream positions are silently corrected."""
    multi_locus = MultiLocus(_locations, True)

    degenerate_equal(
        multi_locus.to_coordinate, 72, [(0, -1, -1), (-1, 0, -1)])
    degenerate_equal(
        multi_locus.to_coordinate, 4, [(21, 1, 1), (22, 0, 1)])
示例#5
0
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))