середа, 26 листопада 2014 р.

Моя примочка для инпута в последнем код-челенже выглядит так:

#ф-ция to_float понадобилась мне, чтобы переводить список из строковых элементов в список численных элементов
def to_float(list_of_str):
    res = []
    for i in range(len(list_of_str)):
        res.append(float(list_of_str[i]))
    return res


def greedy_alg(input):
    f = open(input)
    genome = f.readline()
    k = int(f.readline())

#Далее => считывается третий рядок файла. Знак конца абзаца затирается. Строка преобразовывается в список по знаку пробела. Список из строковых элементов превращается в список численных элементов. Да, я молодец

    A = to_float(f.readline().replace('\n', '').split(" "))
    C = to_float(f.readline().replace('\n', '').split(" "))
    G = to_float(f.readline().replace('\n', '').split(" "))
    T = to_float(f.readline().replace('\n', '').split(" "))
   
    kmer_res = []
    max = 0
    for i in range(len(genome) - 5):
        kmer = genome[i:i+k]
        prob_res = 1
        for j in range(len(kmer)):
            if kmer[j] == "A":
                 probability = A[j]
            elif kmer[j] == "C":
                 probability = C[j]
            elif kmer[j] == "G":
                 probability = G[j]
            elif kmer[j] == "T":
                 probability = T[j]
            prob_res *= probability
        if prob_res > max:
            max = prob_res
            kmer_res.append(kmer)
            kmer_out = kmer
    print (kmer_out)
    return kmer_out

print (greedy_alg("input.txt"))

CODE CHALLENGE: Solve the Profile-most Probable k-mer Problem = CORRECT) imhappy



Немає коментарів:

Дописати коментар