Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. class kmerRecord:
  2. _inFrames = {}
  3. _threshold = None
  4.  
  5. reachedThreshold = False
  6.  
  7. def __init__(self, threshold, inFrames = []):
  8. self._threshold = threshold
  9. if inFrames:
  10. self.incrementFrames(inFrames)
  11.  
  12. # Debug
  13. def __repr__(self):
  14. return '<in: ' + str(self._inFrames) + ', t: ' + str(self.reachedThreshold) + '>'
  15.  
  16. def incrementFrames(self, inFrames):
  17. if not self.reachedThreshold:
  18. for f in inFrames:
  19. if f in self._inFrames:
  20. self._inFrames[f] += 1
  21. if self._inFrames[f] >= self._threshold:
  22. self.reachedThreshold = True
  23. break
  24. else:
  25. self._inFrames[f] = 1
  26.  
  27.  
  28. def kmerClump(data, k, L, t):
  29. kmers = {}
  30. found = []
  31. N = len(data)
  32.  
  33. for i in range(N - k + 1):
  34. kmer = data[i : i + k]
  35. inFrames = range(max(0, i - L + k), min(i, N - L) + 1)
  36.  
  37. if kmer in kmers:
  38. kmers[kmer].incrementFrames(inFrames)
  39. else:
  40. kmers[kmer] = kmerRecord(t, inFrames)
  41.  
  42. # Debug
  43. # print kmer, min(inFrames), max(inFrames), kmers
  44.  
  45. if kmers[kmer].reachedThreshold:
  46. found.append(kmer)
  47.  
  48. return found
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement