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"
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
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
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))
#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))