Как перевести РНК в белок без библиотеки Bio Python - PullRequest
0 голосов
/ 19 июня 2020

Есть ли простой способ преобразовать белок в РНК с помощью словаря и .replace функции?

Кроме того, я не знаю, как кодировать все возможные варианты избыточности кода РНК и ДНК, которые позволяет кодировать одну аминокислоту разными триплетами РНК.

Думаю, может быть так:

RNA = input("")
RNA_dictionary = {
  "GCA":"A", "GCC":"A", "GCG":"A", "GCU":"A",
  "UGC":"C", "UGU":"C", "GAC":"D", "GAU":"D",
  "GAA":"E", "GAG":"E", "UUC":"F", "UUU":"F",
  "GGA":"G", "GGC":"G", "GGG":"G", "GGU":"G",
  "CAC":"H", "CAU":"H", "AUA":"I", "AUC":"I",
  "AUU":"I", "AAA":"K", "AAG":"K", "UUA":"L",
  "UUG":"L", "CUA":"L", "CUC":"L", "CUG":"L",
  "CUU":"L", "AUG":"M", "AAC":"N", "AAU":"N",
  "CCA":"P", "CCC":"P", "CCG":"P", "CCU":"P",
  "CAA":"Q", "CAG":"Q", "AGA":"R", "AGG":"R",
  "CGA":"R", "CGC":"R", "CGU":"R", "CGG":"R",
  "AGC":"S", "AGU":"S", "UCA":"S", "UCC":"S",
  "UCG":"S", "UCU":"S", "ACA":"T", "ACC":"T",
  "ACG":"T", "ACU":"T", "GUA":"V", "GUC":"V",
  "GUG":"V", "GUU":"V", "UGG":"W", "UAC":"Y",
  "UAU":"Y", "UAG":"!", "UAA":"!", "UGA":"!"
}

reverse_translation = RNA_dictionary.replace #(Have no idea how to insert here the input RNA)
print (reverse_translation)

Я знаю, что все это можно сделать, используя всего одна функция от Bio Python. И, возможно, мой способ изучения биоинформатики и общего программирования немного странный. Но так мне нравится и я чувствую, что лучше понимаю, как работает код, чем просто запоминаю его как стихотворение.

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Вы можете использовать ключи своего словаря для создания регулярного выражения для поиска троек. Затем используйте словарь в функции обратного вызова re.sub, чтобы сделать замены:

regex = "|".join(RNA_dictionary.keys())
translation = re.sub(regex, lambda m: RNA_dictionary[m.group()], RNA)

print(translation)
0 голосов
/ 21 июня 2020

После того, как вы перевернули свой dict с помощью inv_dict = {v: k for k, v in ini_dict.items()}, о котором вы упомянули, вы можете использовать это.

seq=""
for aa in prot:
    codon = inv_dict.get(aa)
    seq+=codon

print(seq)

Это не учитывает избыточность, но имейте в виду, что даже для очень небольшого Для белковой последовательности существуют тысячи возможных нуклеотидных последовательностей.

Например, для белковой последовательности:

AlaProLysPheTrpIleCysAla

у вас 6 * 4 * 2 * 2 * 1 * 3 * 2 * 4 = 2304 возможных последовательности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...