在Python中匹配字典值并生成一个输出,无论它们是否匹配。

问题描述 投票:0回答:1

我现在的情况是,我收集了5个DNA序列的列表。我写了一个小循环,一次一个地去看密码子位点。从这里我生成了一个字典,告诉我每个密码子位点呈现的是什么密码子,代码看起来像这样。

for i in range(0, len(sequencesCombined[0]), 3):
codons = {}
for j in range(len(sequencesCombined)):
                    codon = sequencesCombined[j][i:i+3]
                    if codon not in codons:
                        codons[codon] = 1
                    else:
                        codons[codon] += 1
                    if len(codons) == 2:  
                        if AminoAcid_Table[codons[0]] == AminoAcid_Table[codons[1]]:
                           print('whatever my string needs to be')
                        else:
                           print('whatever my other string needs to be')
                   else:
                        pass

这个循环在一定程度上是有效的 它循环地检查序列 每隔3个核苷酸就切一次片 然后给我一个密码子的读数 然后在检查下一个密码子位点之前,它自己会刷新。然而我正在努力与另一个字典的值匹配,以编写我的if else语句。

从任何随机站点输出的一个例子可能看起来像这样。

'ATG':5

这告诉我,在5个序列中,有5个ATG密码子,或者它可能看起来像这样。

'CCT':2, 'CAA':3

因此,这是一个非同义的密码子替换,因为有两个序列表达了代号为脯氨酸的CCT密码子,有三个序列表达了代号为谷氨酸的CAA密码子。在这种情况下,替换的是CCT,因为只有2个。 (或者至少这是我被指示假设的)最终我将对这些非同义和同义替换进行统计,但现在我只想让python告诉我替换是同义还是非同义,最好是告诉我被替换的密码子是什么,因此有了打印函数。因此,这种情况下的输出可能是这样的。

'Non-Synonymous Sub, Codon: CCT'

我已经写了一个包含所有氨基酸和它们的密码子的字典,看起来是这样的。

AminoAcid_Table = {
'TTT':'Phe','TCT':'Ser','TAT':'Tyr','TGT':'Sys', 
'TTC':'Phe','TCC':'Ser','TAC':'Tyr','TGC':'Sys',
'TTA':'Leu','TCA':'Ser','TAA':'Stop','TGA':'Stop',
'TTG':'Leu','TCG':'Ser','TAG':'Stop','TGG':'Trp',
'CTT':'Leu','CCT':'Pro','CAT':'His','CGT':'Arg',
'CTC':'Leu','CCC':'Pro','CAC':'His','CGC':'Arg',
'CTA':'Leu','CCA':'Pro','CAA':'Gln','CGA':'Arg',
'CTG':'Leu','CCG':'Pro','CAG':'Gln','CGG':'Arg',
'ATT':'Ile','ACT':'Thr','AAT':'Asn','AGT':'Ser',
'ATC':'Ile','ACC':'Thr','AAC':'Asn','AGC':'Ser',
'ATA':'Ile','ACA':'Thr','AAA':'Lys','AGA':'Arg',
'ATG':'Met','ACG':'Thr','AAG':'Lys','AGG':'Arg',
'GTT':'Val','GCT':'Ala','GAT':'Asp','GGT':'Gly',
'GTC':'Val','GCC':'Ala','GAC':'Asp','GGC':'Gly',
'GTA':'Val','GCA':'Ala','GAA':'Glu','GGA':'Gly',
'GTG':'Val','GCG':'Ala','GAG':'Glu','GGG':'Gly'}

我需要做的是让Python查看我的 "密码子 "字典所输出的3个字母密码子, 将这两个密码子与我的 "aminoAcid_Table "字典中的密码子进行比较, 如果氨基酸相同, 那么我需要一个 "同义 "打印出来, 如果不相同, 我需要一个 "非同义 "打印出来.

任何建议都将被感激,如果以前有人问过这个问题,请留下信息链接即可。我会很高兴地把这个作为答案上传到网上。

python python-3.x dictionary pattern-matching bioinformatics
1个回答
1
投票

首先让我确认一下我对这个问题的理解是否正确。

所以在你的字典密码子中,你要检查所有的键是否都指向表中的一个氨基酸。如果它们是,输出是同步的,否则不是同步的,对吗?

如果是,你可以这样做来检查

amino_acid = []
for x in list(codon.keys()):
    amino_acis.append(AminoAcid_Table[x])

if len(set(amino_acid))==1:
    #There is only one type of amino_acid. So Synchronous
else:
    #Not Synchronous
© www.soinside.com 2019 - 2024. All rights reserved.