Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def merge_region(position_region, delta=1):
- """Merge a batch of sorted region
- Parameters
- ----------
- ``position_region``: a list like, required
- A regions (2D) array, format like: [[start1,end1], [start2,end2], ...]
- ``delta``: Integer, optinal
- Example
- -------
- ...
- >>> from basevar import utils
- >>> utils.merge_region([[1,1], [2,3], [4,6], [4,5], [8, 20], [9, 12]])
- ... [[1, 6], [8, 20]]
- """
- # sorted
- position_region.sort(key=lambda x:x[0])
- m_region = []
- prepos, start, end = '', '', ''
- flag = False
- for s, e in position_region:
- if s > e:
- print >> sys.stderr,('[ERROR]Your region start > end.'
- ' It is not allow when call Merge function\n')
- sys.exit(1)
- if prepos == '':
- # # The light is on => Get the region!
- if flag: m_region.append([start, end])
- start, end = s, e
- flag = True
- else:
- if prepos > s:
- print >> sys.stderr,('[ERROR]The array hasn\'t been sorted.\n')
- sys.exit(1)
- if delta + end >= s:
- end = e if e > end else end
- else:
- m_region.append([start, end])
- start, end = s, e
- prepos = s
- if flag: m_region.append([start, end])
- return m_region
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement