Я пытаюсь написать script для вычисления всех возможных совпадений совпадений с нечеткой строкой для короткой строки или "kmer" и того же кода, который работает в Python 2.7.X дает мне не- детерминированный ответ с Python 3.3.X, и я не могу понять, почему.
Я перебираю словарь, itertools.product и itertools.combinations в моем коде, но я перебираю все их до завершения без перерывов или продолжается. Кроме того, я сохраняю все свои результаты в отдельном словаре, а не в том, что я повторяю. Короче говоря, я не делаю никаких ошибок, которые очевидны для меня, так почему поведение отличается от Python2 и Python3?
Пример, немного упрощенный код ниже:
import itertools
def find_best_fuzzy_kmer( kmers ):
for kmer, value in kmers.items():
for similar_kmer in permute_string( kmer, m ):
# Tabulate Kmer
def permute_string( query, m ):
query_list = list(query)
output = set() # hold output
for i in range(m+1):
# pre-calculate the possible combinations of new bases
base_combinations = list(itertools.product('AGCT', repeat=i))
# for each combination `idx` in idxs, replace str[idx]
for positions in itertools.combinations(range(len(query_list)), i):
for bases in base_combinations:
# Generate Permutations and add to output
return output