コード例 #1
0
def test6():
    """
    Tests substitution function.
    :return: None
    """

    print("Test6: testing substitution")

    dna_seq = None
    try:
        dna_seq = dna.substitution(dna_seq, 0, "A")
        print("False", end=" ")  # failed to catch exception
    except:
        print("True", end=" ")

    dna_seq = linked_code.insert_at(0, "A", dna_seq)
    dna_seq2 = dna.substitution(dna_seq, 0, "T")
    print(dna_seq2.value == "T", end=" ")

    dna_seq = linked_code.insert_at(1, "T", dna_seq)
    dna_seq2 = dna.substitution(dna_seq, 1, "G")
    print(dna_seq2.value == "A" and dna_seq2.rest.value == "G", end=" ")

    dna_seq = linked_code.insert_at(2, "G", dna_seq)
    dna_seq = linked_code.insert_at(3, "C", dna_seq)
    try:
        dna_seq2 = dna.substitution(dna_seq, 4, "A")
        print("False", end=" ")  # failed to catch exception
    except:
        print("True", end=" ")
    dna_seq2 = dna.substitution(dna_seq, 2, "A")
    print(dna_seq2.value == "A" and dna_seq2.rest.value == "T" \
          and dna_seq2.rest.rest.value == "A")
コード例 #2
0
def test3():
    """
    Tests is_match function.
    :return: None
    """

    print("Test3: testing is_match")

    dna_seq1 = None
    dna_seq2 = None

    print(dna.is_match(dna_seq1, dna_seq2) == True, end=" ")

    dna_seq2 = linked_code.insert_at(0, "A", dna_seq2)
    print(dna.is_match(dna_seq1, dna_seq2) == False, end=" ")
    print(dna.is_match(dna_seq2, dna_seq1) == False, end=" ")

    dna_seq1 = linked_code.insert_at(0, "A", dna_seq1)
    print(dna.is_match(dna_seq1, dna_seq2) == True, end=" ")

    dna_seq1 = linked_code.insert_at(1, "T", dna_seq1)
    dna_seq1 = linked_code.insert_at(2, "G", dna_seq1)
    dna_seq1 = linked_code.insert_at(3, "C", dna_seq1)
    dna_seq2 = linked_code.insert_at(1, "T", dna_seq2)
    dna_seq2 = linked_code.insert_at(2, "G", dna_seq2)
    print(dna.is_match(dna_seq1, dna_seq2) == False, end=" ")
    dna_seq2 = linked_code.insert_at(3, "C", dna_seq2)
    print(dna.is_match(dna_seq1, dna_seq2) == True, end=" ")

    dna_seq1 = linked_code.insert_at(2, "A", dna_seq1)
    dna_seq2 = linked_code.insert_at(2, "G", dna_seq2)
    print(dna.is_match(dna_seq1, dna_seq2) == False)
コード例 #3
0
def test5():
    """
    Tests is_palindrome function.
    :return: None
    """

    print("Test5: testing is_palindrome")

    dna_seq = None
    print(dna.is_palindrome(dna_seq) == True, end=" ")

    dna_seq = linked_code.insert_at(0, "A", dna_seq)
    print(dna.is_palindrome(dna_seq) == True, end=" ")

    dna_seq = linked_code.insert_at(0, "T", dna_seq)
    print(dna.is_palindrome(dna_seq) == False, end=" ")

    dna_seq = linked_code.remove_at(0, dna_seq)
    dna_seq = linked_code.insert_at(0, "A", dna_seq)
    print(dna.is_palindrome(dna_seq) == True, end=" ")

    dna_seq = linked_code.insert_at(1, "G", dna_seq)
    print(dna.is_palindrome(dna_seq) == True, end=" ")

    dna_seq = linked_code.insert_at(2, "T", dna_seq)
    print(dna.is_palindrome(dna_seq) == False)
コード例 #4
0
def test7():
    """
    Tests insertion function.
    :return: None
    """

    print("Test7: testing insertion")

    dna_seq1 = None
    dna_seq2 = None
    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 0)
    print(dna_seq3 == None, end=" ")

    try:
        dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 1)
        print("False", end=" ")  # failed to catch exception
    except:
        print("True", end=" ")

    dna_seq1 = linked_code.insert_at(0, "A", dna_seq1)
    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 0)
    print(dna_seq3.value == "A" \
          and linked_code.length_rec(dna_seq3) == 1, end=" ")

    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 1)
    print(dna_seq3.value == "A" \
          and linked_code.length_rec(dna_seq3) == 1, end=" ")

    dna_seq2 = linked_code.insert_at(0, "C", dna_seq2)
    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 0)
    print(dna_seq3.value == "C" and dna_seq3.rest.value == "A" \
          and linked_code.length_rec(dna_seq3) == 2, end=" ")

    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 1)
    print(dna_seq3.value == "A" and dna_seq3.rest.value == "C" \
          and linked_code.length_rec(dna_seq3) == 2, end=" ")

    dna_seq1 = linked_code.insert_at(0, "T", dna_seq1)  # now TA
    dna_seq2 = linked_code.insert_at(0, "G", dna_seq2)  # now GC

    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 0)
    print(dna_seq3.value == "G" and dna_seq3.rest.value == "C" \
        and dna_seq3.rest.rest.value == "T" \
        and dna_seq3.rest.rest.rest.value == "A"
          and linked_code.length_rec(dna_seq3) == 4, end=" ")

    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 1)
    print(dna_seq3.value == "T" and dna_seq3.rest.value == "G" \
          and dna_seq3.rest.rest.value == "C" \
          and dna_seq3.rest.rest.rest.value == "A"
          and linked_code.length_rec(dna_seq3) == 4, end=" ")

    dna_seq3 = dna.insertion(dna_seq1, dna_seq2, 2)
    print(dna_seq3.value == "T" and dna_seq3.rest.value == "A" \
          and dna_seq3.rest.rest.value == "G" \
          and dna_seq3.rest.rest.rest.value == "C"
          and linked_code.length_rec(dna_seq3) == 4)
コード例 #5
0
def substitution(dna_seq, index, base):
    """
This function takes the input of the DNA sequence, index at which the base has to be replaced and the base by which the original sequence will be replaced
"""
    if linked_code.length_rec(dna_seq) < index:
        raise IndexError("Invalid Insertion Index")
    else:
        return linked_code.insert_at(index, base,
                                     linked_code.remove_at(index, dna_seq))
コード例 #6
0
def test2():
    """
    Tests function to convert a DNA linked Node
    structure into a string.
    :return:
    """

    print("Test2: testing convert_to_string")

    dna_str1 = dna.convert_to_string(None)
    print(dna_str1 == "", end=" ")

    dna_seq = None
    dna_seq = linked_code.insert_at(0, "C", dna_seq)
    dna_str2 = dna.convert_to_string(dna_seq)
    print(dna_str2 == "C", end=" ")

    dna_seq = None
    dna_seq = linked_code.insert_at(0, 'T', dna_seq)
    dna_seq = linked_code.insert_at(1, 'A', dna_seq)
    dna_seq = linked_code.insert_at(2, 'G', dna_seq)
    dna_str3 = dna.convert_to_string(dna_seq)
    print(dna_str3 == "TAG")
コード例 #7
0
def duplication(dna_seq, idx, segment_size):
    """
This function takes the dna_seq, index  a and the segment size that has to be copied and added after that
"""

    if segment_size != 0:
        a = segment_size
        while (segment_size > 0):
            v = linked_code.value_at(dna_seq, idx)
            dna_seq = linked_code.insert_at(idx + a, v, dna_seq)
            idx += 1
            segment_size -= 1
        return dna_seq
    else:
        return dna_seq
コード例 #8
0
def duplication(DNA, idx, size):
    """
    Insert duplicate segment of specific size at index of idx + size
    :param DNA: dna sequence
    :param idx: index where dna sequence starts to be copied
    :param size: size of segment copied
    :return: new linked-node with duplicate segment of specific size inserted at index of idx + size
    """
    if size == 0:
        return DNA
    elif DNA is None:
        raise IndexError("Out of Bounds")
    lnk = None
    for i in range(size):
        val = linked_code.value_at(DNA, i + idx)
        lnk = linked_code.insert_at(i, val, lnk)
    new_link = insertion(DNA, lnk, idx + size)
    return new_link
コード例 #9
0
def substitution(dna_seq1, idx, base):
    """
    This function substitutes a value in a linked list with another value.
    Pre: dna_seq must be a linked list, idx must be an integer.
    Post: a new linked list is returned with the substituted value.
    :param dna_seq1: a linked list
    :param idx: index at which substitution occurs
    :param base: value that will replace the one already at the chosen index.
    :return: a linked list with correctly substituted value
    """
    if dna_seq1.value == None:
        return False
    else:
        if idx < 0:
            raise IndexError('Index out of range')
        elif idx == 0:
            dna_seq1 = linked_code.remove_at(idx, dna_seq1)
            dna_seq1 = linked_code.insert_at(idx, base, dna_seq1)
            return dna_seq1
        else:
            return LinkNode(dna_seq1.value,
                            substitution(dna_seq1.rest, idx - 1, base))
コード例 #10
0
def test4():
    """
    Tests is_pairing function.
    :return: None
    """

    print("Test4: testing is_pairing")

    dna_seq1 = None
    dna_seq2 = None

    print(dna.is_pairing(dna_seq1, dna_seq2) == True, end=" ")

    dna_seq2 = linked_code.insert_at(0, "A", dna_seq2)
    print(dna.is_pairing(dna_seq1, dna_seq2) == False, end=" ")
    print(dna.is_pairing(dna_seq2, dna_seq1) == False, end=" ")

    dna_seq1 = linked_code.insert_at(0, "T", dna_seq1)
    print(dna.is_pairing(dna_seq1, dna_seq2) == True, end=" ")

    dna_seq1 = linked_code.insert_at(1, "T", dna_seq1)
    dna_seq1 = linked_code.insert_at(2, "G", dna_seq1)
    dna_seq1 = linked_code.insert_at(3, "C", dna_seq1)
    dna_seq2 = linked_code.insert_at(1, "A", dna_seq2)
    dna_seq2 = linked_code.insert_at(2, "C", dna_seq2)
    print(dna.is_pairing(dna_seq1, dna_seq2) == False, end=" ")
    dna_seq2 = linked_code.insert_at(3, "G", dna_seq2)
    print(dna.is_pairing(dna_seq1, dna_seq2) == True, end=" ")

    dna_seq1 = linked_code.insert_at(2, "A", dna_seq1)
    dna_seq2 = linked_code.insert_at(2, "A", dna_seq2)
    print(dna.is_pairing(dna_seq1, dna_seq2) == False, end=" ")

    test_str1 = "AATTTGC"
    test_str2 = "GCGCTGC"

    for idx in range(len(test_str1)):
        dna_seq1 = linked_code.remove_at(2, dna_seq1)
        dna_seq2 = linked_code.remove_at(2, dna_seq2)
        dna_seq1 = linked_code.insert_at(2, test_str1[idx], dna_seq1)
        dna_seq2 = linked_code.insert_at(2, test_str2[idx], dna_seq2)
        print(dna.is_pairing(dna_seq1, dna_seq2) == False, end=" ")

    print()
コード例 #11
0
def test9():
    """
    Tests duplication function.
    :return: None
    """

    print("Test9: testing duplication")

    dna_seq1 = None
    dna_seq2 = dna.duplication(dna_seq1, 0, 0)
    print(dna_seq2 == None, end=" ")

    try:
        dna_seq2 = dna.duplication(dna_seq1, 0, 1)
        print("False", end=" ")  # failed to catch exception
    except:
        print("True", end=" ")

    dna_seq1 = linked_code.insert_at(0, "A", dna_seq1)
    dna_seq2 = dna.duplication(dna_seq1, 2, 0)
    print(dna_seq2.value == "A" and \
          linked_code.length_rec(dna_seq2) == 1, end=" ")

    dna_seq2 = dna.duplication(dna_seq1, 0, 1)
    print(dna_seq2.value == "A" and \
        dna_seq2.rest.value == "A" and \
          linked_code.length_rec(dna_seq2) == 2, end=" ")

    dna_seq1 = linked_code.insert_at(1, "T", dna_seq1)
    dna_seq1 = linked_code.insert_at(2, "C", dna_seq1)

    dna_seq2 = dna.duplication(dna_seq1, 0, 1)
    print(dna_seq2.value == "A" and \
          dna_seq2.rest.value == "A" and \
          linked_code.length_rec(dna_seq2) == 4, end=" ")

    dna_seq2 = dna.duplication(dna_seq1, 1, 1)
    print(dna_seq2.value == "A" and \
          dna_seq2.rest.value == "T" and \
          dna_seq2.rest.rest.value == "T" and \
          linked_code.length_rec(dna_seq2) == 4, end=" ")

    dna_seq2 = dna.duplication(dna_seq1, 2, 1)
    print(dna_seq2.value == "A" and \
          dna_seq2.rest.value == "T" and \
          dna_seq2.rest.rest.value == "C" and \
        dna_seq2.rest.rest.rest.value == "C" and \
          linked_code.length_rec(dna_seq2) == 4, end=" ")

    dna_seq2 = dna.duplication(dna_seq1, 0, 2)
    print(dna_seq2.value == "A" and \
          dna_seq2.rest.value == "T" and \
          dna_seq2.rest.rest.value == "A" and \
          dna_seq2.rest.rest.rest.value == "T" and \
          dna_seq2.rest.rest.rest.rest.value == "C" and \
          linked_code.length_rec(dna_seq2) == 5, end=" ")

    dna_seq2 = dna.duplication(dna_seq1, 1, 2)
    print(dna_seq2.value == "A" and \
          dna_seq2.rest.value == "T" and \
          dna_seq2.rest.rest.value == "C" and \
          dna_seq2.rest.rest.rest.value == "T" and \
          dna_seq2.rest.rest.rest.rest.value == "C" and \
          linked_code.length_rec(dna_seq2) == 5, end=" ")

    try:
        dna_seq2 = dna.duplication(dna_seq1, 2, 2)
        print("False", end=" ")  # failed to catch exception
    except:
        print("True", end=" ")

    print()