在python字符串中查找重叠的kmers

时间:2012-09-05 15:22:14

标签: string combinatorics biopython

我试图在长二进制字符串中找到二进制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)

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')