首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配字典值并生成输出,无论它们在Python中是否匹配

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

Stack Overflow用户
提问于 2020-04-25 20:16:45
回答 1查看 130关注 0票数 0

我现在的情况是,我已经组装了一个包含5个DNA序列的列表。我写了一个小循环,一次浏览一个密码子站点。从这里我生成了一个字典,它告诉我每个密码子的位置都有哪些密码子,代码看起来像这样:

代码语言:javascript
复制
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语句。

任何随机站点的输出示例可能如下所示:

代码语言:javascript
复制
'ATG':5

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

代码语言:javascript
复制
'CCT':2, 'CAA':3

因此,这是一种非同义密码子替换,因为两个序列表达编码脯氨酸的密码子CCT,3个序列表达编码谷氨酸的密码子CAA。在这种情况下,替换是CCT,因为只有2个。(或者至少这是我被指示假设的)最终我将统计这些非同义和同义的替换,但现在我只想让python告诉我这个替换是同义的还是非同义的,以及理想情况下替换的密码子是什么,因此有了print函数。因此,此场景的输出可能如下所示:

代码语言:javascript
复制
'Non-Synonymous Sub, Codon: CCT'

我写了一本包含所有氨基酸和它们的密码子的字典,看起来像这样:

代码语言:javascript
复制
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“字典中的密码子,如果氨基酸是相同的,那么我需要一个”同义词“打印输出,如果它们不是,我需要一个”非同义词“打印输出。

任何建议都将不胜感激,如果之前有人问过这个问题,请留下信息的链接。我会很高兴地把这个作为一个答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-25 20:45:03

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

因此,在您的字典密码子中,您希望检查是否所有键都指向表中的单个氨基酸。如果他们这样做了,输出就是同步的,否则就不是同步的,对吧?

如果是,您可以执行此操作以检查

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61425474

复制
相关文章

相似问题

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