如何在没有 BioPython 库的情况下将 RNA 翻译成蛋白质
How to translate RNA to protein without BioPython library
有没有使用字典和.replace
函数将蛋白质转化为RNA的简单方法?
此外,我不知道如何编码 RNA 和 DNA 代码冗余的所有可能变体,这使得通过不同的 RNA 三联体编码一个氨基酸成为可能。
我想,也许应该是这样的:
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)
我知道这一切都可以通过使用 BioPython 中的一个函数来完成。也许我学习生物信息学和如何共同编码的方式有点奇怪。但是我喜欢并且觉得这样我更能真正理解代码是如何工作的,而不是像背诗一样去背。
您可以使用字典的键创建一个正则表达式来查找 三元组。然后在re.sub
回调函数中使用字典进行替换:
regex = "|".join(RNA_dictionary.keys())
translation = re.sub(regex, lambda m: RNA_dictionary[m.group()], RNA)
print(translation)
将 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 个可能的序列。
有没有使用字典和.replace
函数将蛋白质转化为RNA的简单方法?
此外,我不知道如何编码 RNA 和 DNA 代码冗余的所有可能变体,这使得通过不同的 RNA 三联体编码一个氨基酸成为可能。
我想,也许应该是这样的:
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)
我知道这一切都可以通过使用 BioPython 中的一个函数来完成。也许我学习生物信息学和如何共同编码的方式有点奇怪。但是我喜欢并且觉得这样我更能真正理解代码是如何工作的,而不是像背诗一样去背。
您可以使用字典的键创建一个正则表达式来查找 三元组。然后在re.sub
回调函数中使用字典进行替换:
regex = "|".join(RNA_dictionary.keys())
translation = re.sub(regex, lambda m: RNA_dictionary[m.group()], RNA)
print(translation)
将 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 个可能的序列。