Соответствие значениям словаря и генерация вывода независимо от того, совпадают они или нет в Python - PullRequest
0 голосов
/ 25 апреля 2020

Я в ситуации, когда собрал список из 5 последовательностей ДНК. Я написал маленькую букву l oop на go по сайтам кодонов по одному. Отсюда я создаю словарь, который сообщает мне, какие кодоны представлены на каждом сайте кодонов, код выглядит следующим образом:

for i in range(0, len(sequencesCombined[0]), 3):
codons = {}
for j in range(len(sequencesCombined)):
                    codon = sequencesCombined[j][i:i+3]
                    if codon not in codons:
                        codons[codon] = 1
                    else:
                        codons[codon] += 1
                    if len(codons) == 2:  
                        if AminoAcid_Table[codons[0]] == AminoAcid_Table[codons[1]]:
                           print('whatever my string needs to be')
                        else:
                           print('whatever my other string needs to be')
                   else:
                        pass

l oop работает до некоторой степени, циклически просматривая последовательности и разрезает их каждые 3 нуклеотида и дает мне считывание кодонов. Затем он обновляется перед проверкой следующего сайта кодона. Тем не менее я борюсь с сопоставлением значений с другим словарем, чтобы написать свой оператор if else.

Пример вывода с любого случайного сайта может выглядеть следующим образом:

'ATG':5

Это говорит о том, что в 5 последовательностях имеется 5 кодонов ATG. В качестве альтернативы это может выглядеть следующим образом:

'CCT':2, 'CAA':3

Следовательно, это не синонимичная замена кодона в виде двух последовательностей express кодона CCT, который кодирует для пролина, и 3 последовательностей express кодона CAA, который кодирует для глютами c кислоты. В этом случае подстановка - это CCT, так как их всего 2. (Или, по крайней мере, это то, что мне было поручено предположить). В конце концов, я буду подсчитывать эти несинонимичные и синонимичные подстановки, но сейчас я просто хочу * чтобы сказать мне, является ли замена синонимом или не синонимом и в идеале, что такое замещенный кодон, следовательно, функции печати. Таким образом, выходные данные для этого сценария могут выглядеть следующим образом:

'Non-Synonymous Sub, Codon: CCT'

Я написал словарь со всеми аминокислотами и их кодонами, который выглядит следующим образом:

AminoAcid_Table = {
'TTT':'Phe','TCT':'Ser','TAT':'Tyr','TGT':'Sys', 
'TTC':'Phe','TCC':'Ser','TAC':'Tyr','TGC':'Sys',
'TTA':'Leu','TCA':'Ser','TAA':'Stop','TGA':'Stop',
'TTG':'Leu','TCG':'Ser','TAG':'Stop','TGG':'Trp',
'CTT':'Leu','CCT':'Pro','CAT':'His','CGT':'Arg',
'CTC':'Leu','CCC':'Pro','CAC':'His','CGC':'Arg',
'CTA':'Leu','CCA':'Pro','CAA':'Gln','CGA':'Arg',
'CTG':'Leu','CCG':'Pro','CAG':'Gln','CGG':'Arg',
'ATT':'Ile','ACT':'Thr','AAT':'Asn','AGT':'Ser',
'ATC':'Ile','ACC':'Thr','AAC':'Asn','AGC':'Ser',
'ATA':'Ile','ACA':'Thr','AAA':'Lys','AGA':'Arg',
'ATG':'Met','ACG':'Thr','AAG':'Lys','AGG':'Arg',
'GTT':'Val','GCT':'Ala','GAT':'Asp','GGT':'Gly',
'GTC':'Val','GCC':'Ala','GAC':'Asp','GGC':'Gly',
'GTA':'Val','GCA':'Ala','GAA':'Glu','GGA':'Gly',
'GTG':'Val','GCG':'Ala','GAG':'Glu','GGG':'Gly'}

Что мне нужно сделать, это получить Python, чтобы посмотреть на трехбуквенные кодоны, которые выводит мой словарь «кодоны», сравнить эти два кодона в моем словаре «aminAcid_Table», и если аминокислоты совпадают, то Мне нужна распечатка «синонимично», а если нет - распечатка «не синонимично».

Буду признателен за любые советы, и если об этом уже спрашивали, просто оставьте ссылку с информацией. Я с удовольствием проголосую за это в качестве ответа.

1 Ответ

1 голос
/ 25 апреля 2020

Позвольте мне сначала подтвердить, что мое понимание вопроса верно.

Таким образом, в кодонном словаре вы хотите проверить, все ли ключи указывают на одну аминокислоту в таблице. Если это так, выходной сигнал является синхронным, а не синхронным, верно?

Если да, вы можете сделать это, чтобы проверить

amino_acid = []
for x in list(codon.keys()):
    amino_acis.append(AminoAcid_Table[x])

if len(set(amino_acid))==1:
    #There is only one type of amino_acid. So Synchronous
else:
    #Not Synchronous
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...