Python:多个一致序列
从dna序列列表开始,我必须得到所有可能的共识(结果) 每个位置核苷酸频率最高的序列)序列。如果在某些位置,核苷酸 同样的最高频率,我必须获得所有可能的最高频率组合。 作为回报,我还必须有配置文件矩阵(一个矩阵,每个序列的每个核苷酸的频率) 这是到目前为止我的代码(但它只返回一个一致序列): (如你所见,在第四位,C和G的得分相同,这意味着我必须获得两个一致的序列) 是否可以修改此代码以获得 所有可能的序列,或者你能解释一下逻辑(伪代码)如何获得正确的结果吗Python:多个一致序列,python,bioinformatics,rosalind,Python,Bioinformatics,Rosalind,从dna序列列表开始,我必须得到所有可能的共识(结果) 每个位置核苷酸频率最高的序列)序列。如果在某些位置,核苷酸 同样的最高频率,我必须获得所有可能的最高频率组合。 作为回报,我还必须有配置文件矩阵(一个矩阵,每个序列的每个核苷酸的频率) 这是到目前为止我的代码(但它只返回一个一致序列): (如你所见,在第四位,C和G的得分相同,这意味着我必须获得两个一致的序列) 是否可以修改此代码以获得 所有可能的序列,或者你能解释一下逻辑(伪代码)如何获得正确的结果吗 提前非常感谢 我相信有更好的方法,但
提前非常感谢 我相信有更好的方法,但这是一个简单的方法:
bestseqs = [[]]
for i in range(n):
d = {N:profile[N][i] for N in ['T','G','C','A']}
m = max(d.values())
l = [N for N in ['T','G','C','A'] if d[N] == m]
bestseqs = [ s+[N] for N in l for s in bestseqs ]
for s in bestseqs:
print(''.join(s))
# output:
ATGGAACT
ATGCAACT
目前您的代码只打印最后一个序列,而不是一致性序列谢谢,Ohad,对不起,我已修复了我的代码,现在应该返回一致性序列。(但只有一个,因此主要问题仍然存在:)。关于你的答案,输出必须显示整个两个序列you@3lli0t不客气。你应该接受答案。
bestseqs = [[]]
for i in range(n):
d = {N:profile[N][i] for N in ['T','G','C','A']}
m = max(d.values())
l = [N for N in ['T','G','C','A'] if d[N] == m]
bestseqs = [ s+[N] for N in l for s in bestseqs ]
for s in bestseqs:
print(''.join(s))
# output:
ATGGAACT
ATGCAACT