我试图在长二进制字符串中找到二进制5-mers的计数。 那是, 鉴于一串说: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)
答案 0 :(得分:1)
使用defaultdict
的简单python实现:
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')