def mutateGeneInsertion(dna_sequence): index = randint(1, len(dna_sequence) - 1) random_nucleotide = corresponding_nucleotides.keys()[randint(1, 3)] temp_dna_sequence = list(dna_sequence) temp_dna_sequence[index] = random_nucleotide dna_sequence = "".join(str(x) for x in temp_dna_sequence) return dna_sequence
def mutateGeneInsertion(dna_sequence): index = randint(1, len(dna_sequence) - 1) random_nucleotide = corresponding_nucleotides.keys()[randint(1, 3)] temp_dna_sequence = dna_sequence[:index] temp_dna_sequence += random_nucleotide temp_dna_sequence += dna_sequence[index:] dna_sequence = temp_dna_sequence return dna_sequence
def mutateGeneInPlace(dna_sequence, num_nucleotides_changed): i = 0 while i <= num_nucleotides_changed: index = randint(1, len(dna_sequence) - 1) random_nucleotide = corresponding_nucleotides.keys()[randint(1, 3)] dna_sequence = dna_sequence[:index - 1] + random_nucleotide + dna_sequence[ index:] i = i + 1 return dna_sequence
def find_complement(input_dna): template_dna = "" for nucleic_acid in input_dna: if (nucleic_acid not in list(corresponding_nucleotides.keys())): raise Exception(nucleic_acid + " is not a valid nucleotide") template_dna += corresponding_nucleotides[nucleic_acid] # print "template_dna dna = " + template_dna # print "template_dna (3' to 5') " + template_dna template_dna = template_dna[::-1] print "complementary (5' to 3') " + template_dna #reverse strand to read from 5' to 3' return template_dna