예제 #1
0
def test_get_complementary_sequence():
    res_1 = a2.get_complementary_sequence(atcg)
    res_2 = a2.get_complementary_sequence(at)
    res_3 = a2.get_complementary_sequence(atcgga)
    assert type(res_1) is str
    assert res_1 == "TAGC"
    assert res_2 == "TA"
    assert res_3 == "TAGCCT"
예제 #2
0
def can_be_combined(xs):
    ids = range(len(xs))
    N = get_total_length(ids, xs)

    sequence = set()

    # N is odd
    if N % 2 != 0:
        return False

    # There exists x_i such that len(x_i) > N // 2
    for x in xs:
        if not a2.is_valid_sequence(x):
            return False
        if a2.get_length(x) > N // 2:
            return False

    for i in ids:
        construct_node([i], sequence, xs, ids, N)
    
    # find intersection of complimentary sets
    sequence_complement = set()

    for s in sequence:
        sequence_complement.add(a2.get_complementary_sequence(s))

    sequence_intersection = sequence.intersection(sequence_complement)

    if len(sequence_intersection) > 0:
        return True
    else:
        return False
예제 #3
0
def can_be_combined(fragments):
    """ (list str) -> bool

    Returns True if and only if fragments can be combined
    into two complementary dna strands

    >>> can_be_combined(['A', 'AC', 'TG', 'CTG'])
    True
    >>> can_be_combined(['A', 'T', 'AA', 'TC'])
    False

    """
    length = sum(len(s) for s in fragments)
    if length % 2 != 0:
        return False

    length //= 2
    for perm in itertools.permutations(fragments):
        middle = 0
        first_dna_strand = ''
        while len(first_dna_strand) < length:
            first_dna_strand += perm[middle]
            middle += 1

        if len(first_dna_strand) > length:
            continue

        second_dna_strand = ''
        for i in range(middle, len(fragments)):
            second_dna_strand += perm[i]

        if a2.get_complementary_sequence(
                first_dna_strand) == second_dna_strand:
            return True

    return False
예제 #4
0
 def test_is_complement_dna(self):
     self.assertEquals("C", a2.get_complementary_sequence("G"))
     self.assertEquals("CC", a2.get_complementary_sequence("GG"))
     self.assertEquals("CGCGG", a2.get_complementary_sequence("GCGCC"))
     self.assertEquals("", a2.get_complementary_sequence(""))
     self.assertEquals(None, a2.get_complementary_sequence(None))
예제 #5
0
#tests a2.py
import a2

### Testing get_complement
##nucleotide = 'A'
##
##print('get_complement(' + nucleotide + ')')
##print(a2.get_complement(nucleotide))

# Testing get_complementary_sequence
dna = 'ccc'

print('get_complementary_sequence(' + dna + ')')
print(a2.get_complementary_sequence(dna))

### Testing insert_sequence
##dna1 =  'CCGG'
##dna2 =  'AT'
##index =  2
##
##print('insert_sequence(' + dna1 + ', ' + dna2 + ', ' + str(index) + ')')
##print(a2.insert_sequence(dna1, dna2, index))


### Testing is_valid_sequence
##dna = 'ACTG'
##print('a2.is_valid_sequence(' + dna + ')')
##
##print(a2.is_valid_sequence(dna))