KeyError:在相关代码中找不到“ mtD”时出现“ mtD”

问题描述

我正在使用一个简单的函数将DNA序列转换为氨基酸序列。在较高的级别上,代码看起来还不错,但是每当我运行程序时,我都会收到错误KeyError: 'mtD',该错误的来源显然在第26行(if table[seq[i:i+3]] == "_" :)。我的程序中唯一提到的是“ mtD”,这是我将数据集简单地打印到控制台时的问题,这使问题更加令人困惑。我的代码如下所示。
#Creating the protein sequence column for the data
Protein_Sequence = []

#dna to protein sequence function
def translate11(seq): 
  table = {"TTT" : "F","CTT" : "L","ATT" : "I","GTT" : "V","TTC" : "F","CTC" : "L","ATC" : "I","GTC" : "V","TTA" : "L","CTA" : "L","ATA" : "I","GTA" : "V","TTG" : "L","CTG" : "L","ATG" : "M","GTG" : "V","TCT" : "S","CCT" : "P","ACT" : "T","GCT" : "A","TCC" : "S","CCC" : "P","ACC" : "T","GCC" : "A","TCA" : "S","CCA" : "P","ACA" : "T","GCA" : "A","TCG" : "S","CCG" : "P","ACG" : "T","GCG" : "A","TAT" : "Y","CAT" : "H","AAT" : "N","GAT" : "D","TAC" : "Y","CAC" : "H","AAC" : "N","GAC" : "D","TAA" : "_","CAA" : "Q","AAA" : "K","GAA" : "E","TAG" : "_","CAG" : "Q","AAG" : "K","GAG" : "E","TGT" : "C","CGT" : "R","AGT" : "S","GGT" : "G","TGC" : "C","CGC" : "R","AGC" : "S","GGC" : "G","TGA" : "_","CGA" : "R","AGA" : "R","GGA" : "G","TGG" : "W","CGG" : "R","AGG" : "R","GGG" : "G" 
           }
  pro_sequence =" "

  for i in range(0,len(seq)-(3+len(seq)%3),3):
    if table[seq[i:i+3]] == "_" :
        break
    pro_sequence += table[seq[i:i+3]]

     
  return pro_sequence

newthang = df.mtDNA_Sequence
for thang in newthang:
  x = translate11(thang)
  Protein_Sequence.append(x)

解决方法

您的功能对我有用,我尝试了一个短核苷酸序列并给出了适当的翻译

for循环以1个氨基酸结尾,因此您可以删除3+:

ngOnInit() {

  this.serv1.getdata1()
  this.serv2.getdata2()

  zip(this.serv1.getData1Listener(),this.serv2.getData2Listener())
  .pipe(first())
  .subscribe(([data1,data2]) => {
     this.data1 = data1;
     this.data2 = data2;

     functionY(data1,data2)
  })

}

当您声明pro_sequence时,以空字符串for i in range(0,len(seq)-(len(seq)%3),3): 而不是空格字符""

开头

因此,在进行了这些微小的更改之后,我尝试了以下操作:

" "

那是正确的翻译

因此,您要提供功能的输入之一(来自sequence = "tactgtggctactcagctgtgcgcatggcccgcctgctgtcaccaggggcgaggctcatcaccatcgagatcaaccccgactgtgccgccatcacccagcggatggtggatttcgctggcatgaaggacaag" print translate11(sequence.upper()) # YCGYSAVRMARLLSPGARLITIEINPDCAAITQRMVDFAGMKDK )必须以“ mtD”开头或包含字母“ mtD”,而不仅仅是一个核苷酸串

尝试添加另一个条件,如果字符不是可识别的密码子,则该条件会超出for循环

df.mtDNA_Sequence

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...