python 列中字母的频率

2024-01-24

我想计算所有列中每个字母出现的频率: 例如我有这三个序列:

seq1=AATC
seq2=GCCT
seq3=ATCA

在这里,我们有:在第一列中 'A' 的频率是 2 , 'G' 是 1 。 对于第二列:“A”的频率为 1,“C”为 1,“T”为 1。(其余列中的频率相同) 首先,我尝试执行计算频率的代码我尝试这样做:

例如:

s='AATC'

dic={}
for x in s:
    dic[x]=s.count(x)

这给出:{'A':2,'T':1,'C':1}现在,我想将其应用到列上。为此,我使用以下指令:

f=list(zip(seq1,seq2,seq3))

gives:

[('A', 'G', 'A'), ('A', 'C', 'T'), ('T', 'C', 'C'), ('C', 'T', 'A')]

所以,在这里,我计算了()中字母的出现频率: 我怎样才能做到这一点 ?

如果我处理序列文件,如何使用此代码将其应用于文件序列? 例如,每次我获取三个序列并应用此代码时,我的文件包含 100 个序列。


Here:

sequences = ['AATC',
             'GCCT',
             'ATCA']
f = zip(*sequences)
counts = [{letter: column.count(letter) for letter in column} for column in f]
print(counts)

输出(重新格式化):

[{'A': 2, 'G': 1}, 
 {'A': 1, 'C': 1, 'T': 1}, 
 {'C': 2, 'T': 1}, 
 {'A': 1, 'C': 1, 'T': 1}]

显着特点:

  • 而不是明确命名seq1, seq2等等,我们将它们放入一个列表中。
  • 我们用以下命令解压列表*操作员。
  • 我们在列表理解中使用字典理解来生成每列中每个字母的计数。这基本上就是您对单序列情况所做的操作,但更具可读性(IMO)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 列中字母的频率 的相关文章

随机推荐