我有以下顺序:
seq = [['ATG','ATG','ATG','ATG'],['GAC','GAT','GAA','CCT'],['GCC','GCG','GCA','GCT']]
这里有一个字典键,存储每个密码子的氨基酸值(三重碱基,如ATG, GCT
等)。你知道吗
aminoacid = {'TTT' : 'F','TTC' : 'F','TTA' : 'L','TTG' : 'L','CTT' : 'L','CTC' : 'L','CTA' : 'L','CTG' : 'L','ATT' : 'I','ATC' : 'I','ATA' : 'I','ATG' : 'M','GTT' : 'V','GTC' : 'V','GTA' : 'V','GTG' : 'V','TCT' : 'S','TCC' : 'S','TCA' : 'S','TCG' : 'S','CCT' : 'P','CCC' : 'P','CCA' : 'P','CCG' : 'P','ACT' : 'T','ACC' : 'T','ACA' : 'T','ACG' : 'T','GCT' : 'A','GCC' : 'A','GCA' : 'A','GCG' : 'A','TAT' : 'Y','TAC' : 'Y','TAA' : 'STOP','TAG' : 'STOP','CAT' : 'H','CAC' : 'H','CAA' : 'Q','CAG' : 'Q','AAT' : 'N','AAC' : 'N','AAA' : 'K','AAG' : 'K','GAT' : 'D','GAC' : 'D','GAA' : 'E','GAG' : 'E','TGT' : 'C','TGC' : 'C','TGA' : 'STOP','TGG' : 'W','CGT' : 'R','CGC' : 'R','CGA' : 'R','CGG' : 'R','AGT' : 'S','AGC' : 'S','AGA' : 'R','AGC' : 'R','GGT' : 'G','GGC' : 'G','GGA' : 'G','GGG' : 'G'}
正如我们所见,几个密码子可以编码相同的氨基酸(例如GGT,GGC,GGA, GGG etc all code for Glycine (G)
)。它们是同义的(PSyn),如果密码子编码不同的氨基酸,它们是非同义的(PNonsyn)
在此代码中,我需要执行以下操作:
对于列表列表中的每个元素,如果碱基发生变化并且它们都编码相同的氨基酸,则将PSyn的计数增加1,如果它编码不同的氨基酸,则将PNonsyn的计数增加1
在这里
ATG all code for M #However, all are ATG's no change in bases. So no increment in count
GAC, GAT for D; GAA for E; and CCT for P #Codes for three different amino acids, increment count by 1
GGT,GGC,GGA, GGG for G #Different bases but all code for same amino acids, increment count by 1
输出:
CountPsyn = 1
CountPNonsyn = 1
生成与上述序列对应的氨基酸列表。以便:
Output : ['ATG','nonsyn','G'] #For sites with different aminoacids, the list should say nonsyn and for sites which had identical bases it should list the bases
我需要帮助修改以下代码以使程序正常工作。我对如何从字典中调用值并对照所有元素检查它们没有信心。 尝试的代码:
countPsyn = 0
countPnonsyn = 0
listofaa =[]
for i in seq:
for base, value in enumerate(i):
if value[i] == value[i+1]: #eg. ['ATG','ATG','ATG','ATG']
listofaa.append(value)
if value[i] != value[i+1]:
if aminoacid[value][i] == aminoacid[value][i+1]: #eg.['GCC','GCG','GCA','GCT']
countPsyn =+ 1
listofaa.append(aminoacid)
else: #eg. ['GAC','GAT','GAA','CCT']
countPnonsyn =+ 1
listofaa.append('nonsyn')
File Output can be found [here][1] https://eval.in/669107
这是我的解决办法。你知道吗
诚然,这并不是对代码的修改,但是这里有一个巧妙的技巧来消除双
for
循环。给定一个列表mylist
,您可以通过调用set(mylist)
找到列表中的所有uniques元素。例如相关问题 更多 >
编程相关推荐