匹配字典值并生成输出,无论它们在 Python 中是否匹配
Matching dictionary values and generating an output whether they do or do not match in Python
我的情况是,我已经收集了 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,而 3 个序列表达编码谷氨酸的密码子 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查看我的"codons"字典输出的3个字母密码子,比较这两个密码子在我的"aminoAcid_Table"字典中,如果氨基酸相同,则需要打印 "synonymous",如果不同,则需要打印 "non-synonymous"。
如有任何建议,我们将不胜感激,如果之前有人提出过此问题,请在 link 中留下相关信息。我很乐意将此投票作为答案。
首先确认一下我对问题的理解是正确的。
所以在你的字典密码子中,你想检查是否所有的键都指向 table 中的一个氨基酸。如果他们这样做,输出是同步的,否则不是同步的,对吗?
如果是,你可以这样做检查
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
我的情况是,我已经收集了 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,而 3 个序列表达编码谷氨酸的密码子 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查看我的"codons"字典输出的3个字母密码子,比较这两个密码子在我的"aminoAcid_Table"字典中,如果氨基酸相同,则需要打印 "synonymous",如果不同,则需要打印 "non-synonymous"。
如有任何建议,我们将不胜感激,如果之前有人提出过此问题,请在 link 中留下相关信息。我很乐意将此投票作为答案。
首先确认一下我对问题的理解是正确的。
所以在你的字典密码子中,你想检查是否所有的键都指向 table 中的一个氨基酸。如果他们这样做,输出是同步的,否则不是同步的,对吗?
如果是,你可以这样做检查
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