首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RNA到蛋白质模拟程序的TypeErorr?

RNA到蛋白质模拟程序的TypeErorr?
EN

Stack Overflow用户
提问于 2022-02-09 23:36:53
回答 2查看 46关注 0票数 1

我正在做的事情是:

代码语言:javascript
复制
def dna_complement(dna):
  coup = ""
  for letter in dna:
    if letter == "C":
      coup += "G"
    if letter == "G":
      coup += "C"
    if letter == "A":
      coup += "T"
    if letter == "T":
      coup += "A"
  return coup
  

def convert_to_rna(dna):
  coup2 = ""
  for letter in dna:
    if letter == "C":
      coup2 += "G"
    if letter == "G":
      coup2 += "C"
    if letter == "A":
      coup2 += "U"
    if letter == "T":
      coup2 += "A"
  return coup2

def translate(rna):
  amino_acid = ""
  for len in rna:
    if range(0, len(rna), 3) == "UUU" :
      amino_acid = CODON_TABLE.get("UUU")
    if range(0, len(rna), 3) == "UUC" :
      amino_acid = CODON_TABLE.get("UUC")
    if range(0, len(rna), 3) == "UUA" :
      amino_acid = CODON_TABLE.get("UUA")
  


CODON_TABLE = {'UUU':'Phe','UUC':'Phe','UUA':'Leu','UUG':'Leu','CUU':'Leu','CUC':'Leu','CUA':'Leu','CUG':'Leu','AUU':'Ile','AUC':'Ile','AUA':'Ile','AUG':'Met','GUU':'Val','GUC':'Val','GUA':'Val','GUG':'Val','UCU':'Ser','UCC':'Ser','UCA':'Ser','UCG':'Ser','CCU':'Pro','CCC':'Pro','CCA':'Pro','CCG':'Pro','ACU':'Thr','ACC':'Thr','ACA':'Thr','ACG':'Thr','GCU':'Ala','GCC':'Ala','GCA':'Ala','GCG':'Ala','UAU':'Tyr','UAC':'Tyr','UAA':'STOP','UAG':'STOP','CAU':'His','CAC':'His','CAA':'Gln','CAG':'Gln','AAU':'Asn','AAC':'Asn','AAA':'Lys','AAG':'Lys','GAU':'Asp','GAC':'Asp','GAA':'Glu','GAG':'Glu','UGU':'Cys','UGC':'Cys','UGA':'STOP','UGG':'Trp','CGU':'Arg','CGC':'Arg','CGA':'Arg','CGG':'Arg','AGU':'Ser','AGC':'Ser','AGA':'Arg','AGG':'Arg','GGU':'Gly','GGC':'Gly','GGA':'Gly','GGG':'Gly'}

""" the rna is "UUCUCUACGGUAACAGGGGGCCGGAGGACGACGACGAGAAUCGCCCCGGUGUAGCCGGUGGCGACGGGACGGGGACCUCCCACCGGGGUGGCCGGCAAUGUCGCUCGUAUG" # This is already converted from DNA to RNA so there's no worry about the original RNA
"""

dna="AAGAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTCTTAGCGGGGCCACATCGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGTTACAGCGAGCATAC" 

def main():
  print("\nWelcome to the DNA program: The Code of Life.")
  print("\nSample DNA strand:\n")
  print("Regular DNA:")
  print_bases(dna)
  print("DNA after complement: ")
  dna2 = dna_complement(dna)
  print_bases(dna2)
  print("DNA after RNA convertion: ")
  rna = convert_to_rna(dna)
  print_bases(rna)
  print("The result of translation: ")
  amino_acid = translate(rna)
  print(amino_acid)

如上图所示。(多亏一个名叫兰登戴维斯的用户告诉我要在描述中纠正我的错误,现在我已经把我现在拥有的一切都展示出来了,这可能会更好一些)

当我试图运行这个类型错误时,告诉我str对象是不可调用的,有人能帮我吗?

更多信息:很抱歉之前没有这么说,我试图得到UUU <-> Phe、UUA <-> Leu和AUU <-> Ile这样的转换。一旦检测到UAA,UAG,UGA,蛋白质就停止生成。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-10 00:02:21

因此,如果你把整个RNA字符串转换成密码子字符串:

代码语言:javascript
复制
CODON_TABLE = {'UUU':'Phe','UUC':'Phe','UUA':'Leu','UUG':'Leu','CUU':'Leu','CUC':'Leu'} # etc

def translate(rna):
    amino_acid = ""
    for i in range(len(rna)-2):
        three_letter = rna[i:i+3]
        if three_letter in CODON_TABLE:
            amino_acid += CODON_TABLE[three_letter]
            # if a match is found, don't look for a new codon starting with
            # the second or third letter of this codon
            i += 2 
        return amino_acid

说明:for i in range(len(rna)-2):将给出我们想要阅读的RNA字符串部分的索引号:

代码语言:javascript
复制
UUCUCUAC   len = 8
012345      i = 0-5 = range(6)

rna[i:i+3]给出了从i第一开始的三个字母

代码语言:javascript
复制
UUCUCUAC  = rna
UUC       i = 0, three_letter = rna[0:3]
 UCU      i = 1, tl = rna[1:4]
  CUC     i = 2, tl = rna[2:5]
   UCU    i = 3, tl = rna[3:6]
    CUA   i = 4, tl = rna[4:7]
     UAC  i = 5, tl = rna[5:8]

对于每一个三个字母的序列,如果是密码子,它会将密码子的名称添加到氨基酸中。

代码语言:javascript
复制
amino_acid += CODON_TABLE[three_letter]

然后跳过i 2,以避免查找以我们已经使用过的字母开头的另一个密码:

代码语言:javascript
复制
UUCUCUAC
UUC       Phe
 UCU      (skip)
  CUC     (skip)
   UCU    Ser
    CUA   (skip)
     UAC  (skip)

如果它发现了一些不是密码子的东西,它就会忽略它,移到接下来的三个字母上。(我不是生物学家,我不知道每个三个字母的序列是否都是密码子?)

代码语言:javascript
复制
UUCZUCUAC
UUC        Phe
 UCU       (skip)
  CUC      (skip)
   ZUC     (not found)
    UCU    Sre
票数 1
EN

Stack Overflow用户

发布于 2022-02-09 23:47:00

我会先重写你的

代码语言:javascript
复制
range(0, len(rna), 3)

你想从你的输入中得到3乘3吗?例如,如果您的输入是"ABCDE",首先要"ABC",然后要"BCD“等等,对吗?

如果是这样的话,我会这样做:

代码语言:javascript
复制
p = rna[i:i+3]

其中rna是你的输入字符串。

另外,如果你发现了UUU,UUC或UUA,你想做什么?如果你们都找到了呢?

我希望你觉得这有帮助。

代码语言:javascript
复制
def translate(rna):
  amino_acid = []
  for i in range(len(rna) - 2):
    p = rna[i:i+3]
    if p == "UUU" :
      amino_acid.append(CODON_TABLE["UUU"])
    if p == "UUC" :
      amino_acid.append(CODON_TABLE["UUC"])
    if p == "UUA" :
      amino_acid.append(CODON_TABLE["UUA"])
  
  return amino_acid

CODON_TABLE = {'UUU':'Phe','UUC':'Phe','UUA':'Leu','UUG':'Leu','CUU':'Leu','CUC':'Leu','CUA':'Leu','CUG':'Leu','AUU':'Ile','AUC':'Ile','AUA':'Ile','AUG':'Met','GUU':'Val','GUC':'Val','GUA':'Val','GUG':'Val','UCU':'Ser','UCC':'Ser','UCA':'Ser','UCG':'Ser','CCU':'Pro','CCC':'Pro','CCA':'Pro','CCG':'Pro','ACU':'Thr','ACC':'Thr','ACA':'Thr','ACG':'Thr','GCU':'Ala','GCC':'Ala','GCA':'Ala','GCG':'Ala','UAU':'Tyr','UAC':'Tyr','UAA':'STOP','UAG':'STOP','CAU':'His','CAC':'His','CAA':'Gln','CAG':'Gln','AAU':'Asn','AAC':'Asn','AAA':'Lys','AAG':'Lys','GAU':'Asp','GAC':'Asp','GAA':'Glu','GAG':'Glu','UGU':'Cys','UGC':'Cys','UGA':'STOP','UGG':'Trp','CGU':'Arg','CGC':'Arg','CGA':'Arg','CGG':'Arg','AGU':'Ser','AGC':'Ser','AGA':'Arg','AGG':'Arg','GGU':'Gly','GGC':'Gly','GGA':'Gly','GGG':'Gly'}

rna = "UUCUCUACGGUAACAGGGGGCCGGAGGACGACGACGAGAAUCGCCCCGGUGUAGCCGGUGGCGACGGGACGGGGACCUCCCACCGGGGUGGCCGGCAAUGUCGCUCGUAUG" # This is already converted from DNA to RNA so there's no worry about the original RNA

translate(rna) 

注意,我正在迭代输入,忽略了最后两个字符,这就是为什么我们迭代到range(len(rna)-2)的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71058139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档