2

我试图在一个长二进制字符串中找到二进制 5-mers 的计数。也就是说,给定一个字符串 say: seq='000111100101101' ,我想计算每个 5-mer 出现的次数。我很容易生成了所有 32 次迭代的列表:

import re
from itertools import product  
combo = [ ''.join(x) for x in product('01', repeat=5) ]

我现在的问题是计算重叠中每个组合的出现次数。(也就是说,我想检查长度为 5 的重叠窗口:0:4、1:5、2:6、3:7...(序列长度为 4 窗口的总和)。我不确定该怎么做所以以一种计算重叠窗口的方式。(combo[i] = seq.count(i) 似乎不起作用)。

谢谢!

示例 给定 seq 的期望输出:

seq: '11111101'
Combos: (11111 :2 ,  11101 :1 , 11110 :1)
4

1 回答 1

1

简单的python实现defaultdict

from collections import defaultdict
def C(s):
  d = defaultdict(int)
  for i in xrange(len(s)-4):
    d[s[i:i+5]] += 1
  return d

 C('010100101010101001111010000000001')
于 2012-09-05T18:09:20.120 回答