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
예제 #2
0
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
예제 #3
0
        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))
예제 #4
0
    """
    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))))