def frequent_words_with_mismatch(text, kmers, d): count_dict = dict() max_count = 0 visited_kmers = set() for kmer in kmers: app = approx_pattern_count(text, kmer, d) + approx_pattern_count(text, reverse_dna(kmer), d) if app > 0 and kmer not in visited_kmers: if kmer not in count_dict: count_dict[kmer] = 0 count_dict[kmer] += app if count_dict[kmer] > max_count: max_count = count_dict[kmer] result = [key for key in count_dict if count_dict[key] == max_count] return result, max_count
def frequent_words_with_mismatch(text, kmers, d): count_dict = dict() max_count = 0 visited_kmers = set() for kmer in kmers: app = approx_pattern_count(text, kmer, d) + approx_pattern_count( text, reverse_dna(kmer), d) if app > 0 and kmer not in visited_kmers: if kmer not in count_dict: count_dict[kmer] = 0 count_dict[kmer] += app if count_dict[kmer] > max_count: max_count = count_dict[kmer] result = [key for key in count_dict if count_dict[key] == max_count] return result, max_count
table = {} reverse_table = {} for line in f.readlines(): gens, acid = line.split() if acid == '""': acid = '' table[gens] = acid if acid not in reverse_table: reverse_table[acid] = [gens] else: reverse_table[acid].append(gens) reverse_table[''].append('') stuff = [] # stuff.append(reverse_table['']) for letter in pattern: stuff.append(reverse_table[letter]) # stuff.append(reverse_table['']) result = [] # text = text.replace('T', 'U') for candidate in itertools.product(*stuff): string = ''.join(candidate) string = string.replace('U', 'T') if string in text: result.append(string) string = reverse_dna(string) if string in text: result.append(string) with open('out.txt', 'w') as f: f.write('\n'.join(result))
""" index = 0 - len(sub) try: while True: index = string.index(sub, index + len(sub)) yield index except ValueError: pass def get_kmers(s, k): return list(set(["".join(x) for x in window(s, k)])) if __name__ == '__main__': with open('in.txt', 'r') as f: k = int(f.readline()) s1 = f.readline().strip() s2 = f.readline().strip() possible_kmers = get_kmers(s1, k) result = list() for kmer in possible_kmers: for first_pos in find_all(kmer, s1): for second_pos in find_all(kmer, s2): result.append((first_pos, second_pos)) for second_pos in find_all(reverse_dna(kmer), s2): result.append((first_pos, second_pos)) with open('out.txt', 'w') as f: f.write(str('\n'.join(map(str, result))))