Вывести все аминокислоты с одинаковой частотой в заданной последовательности - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь напечатать для пользователя наиболее распространенную аминокислоту, которая появляется в их последовательности белка (например: если пользователь вводит AHEHD, наиболее распространенным АА является H, который появляется 2 раза)

В настоящее время я использую Counter и most.common (), который работает в большинстве случаев:

sequence=input("\n" + "\033[1;34;40mHello, and Welcome! Please enter your sequence:").upper()
AA_count=Counter(sequence) 
AA_mostfrequent=AA_count.most_common(1)

При печати:

for key, value in AA_mostfrequent:
                print("\n",key, "\033[1;35;40mis the most common amino acid in your sequence, appearing", value, "time(s)!", sep=" ")

Однако, скажем, у меня есть последовательность с появлением определенного AAтак же часто, как и другие (напр .: ADEH или AAAAADEEEEE).

В этом случае программа произвольно выберет любой из АА для печати.(например: используя ADEH, он скажет, что только D появляется больше всего в моей последовательности, появляясь 1 раз)

Я не буду знать, сколько раз каждый AA появляется в данной последовательности.Правило состоит в том, что я могу предоставить любую желаемую действительную последовательность белка любой длины, при условии, что указано, какая из аминокислот является (является) наиболее распространенной.

*** для определения частотыкаждый АА:

AA_total=len(sequence)
for key, value in sorted(AA_count.items()):
              print(key,value/AA_total, sep=":")

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Если вы хотите получить список всех кислот, которые имеют одинаковое, наиболее частое вхождение, вы можете использовать:

[(acid, cnt) for acid, cnt in AA_count.items() if cnt == AA_count.most_common(1)[0][1]]

результат этого выражения (которое вы бы присвоили AA_mostfrequent) имееттот же формат, который вы ожидаете в настоящее время - список пар кислотного счета.

Объяснение:

[(acid, cnt) for                  # 4) acid-cnt pair that satisfies those conditions will be in result
acid, cnt in AA_count.items()     # 1) you loop over all pairs of acid-count
if cnt ==                         # 2) and take only those pairs, where cnt part is equal to
    AA_count.most_common(1)       # 3)result of (list of) 1 most common acid-cnt pair
        [0]                       # 3.1)from this list you take the only element
            [1]]                  # 3.2)from this element (acid-cnt pair) only cnt part
0 голосов
/ 24 сентября 2018

Когда у вас есть счетчик наиболее распространенных АА, вы можете зациклить счетчик и выбрать те, которые имеют наибольшее количество:

AA_count=Counter('GATTACAT') 
AA_most_common=AA_count.most_common(1)
most_common = [AA for AA, ct in AA_count.items() if ct == AA_most_common[0][1]]

print(most_common)
>>> ['A', 'T']
...