Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. def merge_region(position_region, delta=1):
  2. """Merge a batch of sorted region
  3.  
  4. Parameters
  5. ----------
  6. ``position_region``: a list like, required
  7. A regions (2D) array, format like: [[start1,end1], [start2,end2], ...]
  8.  
  9. ``delta``: Integer, optinal
  10.  
  11. Example
  12. -------
  13. ...
  14. >>> from basevar import utils
  15. >>> utils.merge_region([[1,1], [2,3], [4,6], [4,5], [8, 20], [9, 12]])
  16. ... [[1, 6], [8, 20]]
  17.  
  18. """
  19.  
  20. # sorted
  21. position_region.sort(key=lambda x:x[0])
  22.  
  23. m_region = []
  24. prepos, start, end = '', '', ''
  25. flag = False
  26. for s, e in position_region:
  27. if s > e:
  28. print >> sys.stderr,('[ERROR]Your region start > end.'
  29. ' It is not allow when call Merge function\n')
  30. sys.exit(1)
  31.  
  32. if prepos == '':
  33. # # The light is on => Get the region!
  34. if flag: m_region.append([start, end])
  35. start, end = s, e
  36. flag = True
  37.  
  38. else:
  39. if prepos > s:
  40. print >> sys.stderr,('[ERROR]The array hasn\'t been sorted.\n')
  41. sys.exit(1)
  42.  
  43. if delta + end >= s:
  44. end = e if e > end else end
  45.  
  46. else:
  47. m_region.append([start, end])
  48. start, end = s, e
  49.  
  50. prepos = s
  51.  
  52. if flag: m_region.append([start, end])
  53. return m_region
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement