如何在Python中比较列表列表中的元素并比较列表列表中的键?

生物技术怪胎

我有以下顺序:

seq = [['ATG','ATG','ATG','ATG'],['GAC','GAT','GAA','CCT'],['GCC','GCG','GCA','GCT']]

这是一个字典键,用于存储每个密码子的氨基酸值(诸如Triplet碱基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)

在此代码中,我需要执行以下操作:

  1. 对于列表中的每个元素,如果碱基都有变化并且它们都编码相同的氨基酸,则将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

  2. 生成与上述序列相对应的氨基酸列表。这样:

    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
团DT

这是我对解决方案的追求。

aminoacid = {'GCC': 'A' ,'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','GCG' : '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','CGT' : 'G','GGC' : 'G','GGA' : 'G','GGG' : 'G',}

seq = [['ATG','ATG','ATG','ATG'],['GAC','GAT','GAA','CCT'],['GCC','GCG','GCA','GCT']]

Psyn = 0;
PNonsyn = 0;
output = [];

#loop through each list in your list of list
for sublist in seq:
    acids = [aminoacid[base] for base in sublist]
    if len(set(acids)) != 1: #if there are different amino acids, then nonsync
        output.append('nonsync')
        PNonsyn += 1
    else: #if same amino acid
        if len(set(sublist)) == 1: #if same base
            output.append(sublist[0]);
        else: #if not same base
            output.append(acids[0]);
            Psyn += 1

print "Psyn = "+ str(Psyn)
print "PNonsyn = "+ str(PNonsyn)
print output

诚然,这不是对代码的修改,但是这里有一个巧妙的技巧可以使doublefor循环无效给定一个列表mylist,您可以通过调用在列表中找到所有uniques元素set(mylist)例如

>>> a = ['AGT','AGT','ACG']
>>> set(a)
set(['AGT', 'ACG'])
>>> len(set(a))
2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中访问列表列表中的列

根据内部列表元素的比较从列表列表中删除重复项

比较列表列表的元素并返回列表

反转python列表列表中的元素

如何在Python中从列表列表中删除值

如何在python中比较两个列表列表

如何从python中的列表列表中删除列表元素

如何比较Python的两个列表列表并通过列表中的单个元素删除重复项

如何比较列表列表中的重复元素并在python中的列表相同列表的另一个元素上给出IF条件

列表列的行比较

列表与列表列表的比较,并返回列表列表中的其他元素

如何在Python的各自列表中比较同一索引中2个列表中的元素?

如何在python中比较列表/数组/字典中的相应元素

如何在python中获取文件列表的列表列表?

如何遍历列表列表列表列表列表... Python中的坐标对列表列表?

如何在Python的列表列表中对元素进行分组?

如何在python中拆分列表列表的元素?

Pop()列表列表中列表的元素

比较列表列表与自身

如何替换列表(列表列表)中的列表内的元素?

比较python中的(单个小列表)和(列表列表)

列表列表中同一列表中元素的比较

如何在 Python 中比较列表中的对?

如何比较字典列表列表

如何比较 Python 中的两个列表列表并找到匹配值

如何将列表列表中的项目与列表中的项目进行比较?

将列表与列表列表进行比较

比较 Haskell 中的列表列表

比较/交叉列表列表