regions.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:cellranger 作者: 10XGenomics 项目源码 文件源码
def add_region(self, reg):
        """ Adds single region to set while removing overlap """

        # in case not given as named tuple
        region = Region(reg[0], reg[1])

        # find where this region should go
        start_index = bisect.bisect_left(self.starts, region.start)
        end_index = bisect.bisect_left(self.ends, region.end)

        # merge if required
        if start_index > 0 and self.ends[start_index-1] > region.start:
            region = Region(self.starts[start_index-1], region.end)
            start_index -= 1
        if end_index < len(self.starts) and self.starts[end_index] < region.end:
            region = Region(region.start, self.ends[end_index])
            end_index += 1

        # if no merge, insert this region in the lists
        if start_index == end_index:
            self.starts = self.starts[:start_index] + [region.start] + self.starts[start_index:]
            self.ends = self.ends[:start_index] + [region.end] + self.ends[start_index:]
        else:
            self.starts = self.starts[:start_index] + [region.start] + self.starts[end_index:]
            self.ends = self.ends[:start_index] + [region.end] + self.ends[end_index:]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号