scout/adapter/mongo/hgnc.py
def get_coding_intervals(self, build='37', genes=None):
        """Return a dictionary with chromosomes as keys and interval trees as values

        Each interval represents a coding region of overlapping genes.

        Args:
            build(str): The genome build
            genes(iterable(scout.models.HgncGene)):

        Returns:
            intervals(dict): A dictionary with chromosomes as keys and overlapping genomic intervals as values
        """
        intervals = {}
        if not genes:
            genes = self.all_genes(build=build)
        LOG.info("Building interval trees...")
        for i,hgnc_obj in enumerate(genes):
            chrom = hgnc_obj['chromosome']
            start = max((hgnc_obj['start'] - 5000), 1)
            end = hgnc_obj['end'] + 5000

            # If this is the first time a chromosome is seen we create a new
            # interval tree with current interval
            if chrom not in intervals:
                intervals[chrom] = intervaltree.IntervalTree()
                intervals[chrom].addi(start, end, i)
                continue

            res = intervals[chrom].search(start, end)

            # If the interval did not overlap any other intervals we insert it and continue
            if not res:
                intervals[chrom].addi(start, end, i)
                continue

            # Loop over the overlapping intervals
            for interval in res:
                # Update the positions to new max and mins
                if interval.begin < start:
                    start = interval.begin

                if interval.end > end:
                    end = interval.end

                # Delete the old interval
                intervals[chrom].remove(interval)

            # Add the new interval consisting och the overlapping ones
            intervals[chrom].addi(start, end, i)

        return intervals
def get_coding_intervals(self, build='37', genes=None):
        intervals = {}
        if not genes:
            genes = self.all_genes(build=build)
        LOG.info("Building interval trees...")
        for i,hgnc_obj in enumerate(genes):
            chrom = hgnc_obj['chromosome']
            start = max((hgnc_obj['start'] - 5000), 1)
            end = hgnc_obj['end'] + 5000

            # If this is the first time a chromosome is seen we create a new
            # interval tree with current interval
            if chrom not in intervals:
                intervals[chrom] = intervaltree.IntervalTree()
                intervals[chrom].addi(start, end, i)
                continue

            res = intervals[chrom].search(start, end)

            # If the interval did not overlap any other intervals we insert it and continue
            if not res:
                intervals[chrom].addi(start, end, i)
                continue

            # Loop over the overlapping intervals
            for interval in res:
                # Update the positions to new max and mins
                if interval.begin < start:
                    start = interval.begin

                if interval.end > end:
                    end = interval.end

                # Delete the old interval
                intervals[chrom].remove(interval)

            # Add the new interval consisting och the overlapping ones
            intervals[chrom].addi(start, end, i)

        return intervals
def get_coding_intervals ( self , build = '37' , genes = None ) : intervals = { } if not genes : genes = self . all_genes ( build = build ) LOG . info ( "Building interval trees..." ) for i , hgnc_obj in enumerate ( genes ) : chrom = hgnc_obj [ 'chromosome' ] start = max ( ( hgnc_obj [ 'start' ] - 5000 ) , 1 ) end = hgnc_obj [ 'end' ] + 5000 # If this is the first time a chromosome is seen we create a new # interval tree with current interval if chrom not in intervals : intervals [ chrom ] = intervaltree . IntervalTree ( ) intervals [ chrom ] . addi ( start , end , i ) continue res = intervals [ chrom ] . search ( start , end ) # If the interval did not overlap any other intervals we insert it and continue if not res : intervals [ chrom ] . addi ( start , end , i ) continue # Loop over the overlapping intervals for interval in res : # Update the positions to new max and mins if interval . begin < start : start = interval . begin if interval . end > end : end = interval . end # Delete the old interval intervals [ chrom ] . remove ( interval ) # Add the new interval consisting och the overlapping ones intervals [ chrom ] . addi ( start , end , i ) return intervals
Return a dictionary with chromosomes as keys and interval trees as values

        Each interval represents a coding region of overlapping genes.

        Args:
            build(str): The genome build
            genes(iterable(scout.models.HgncGene)):

        Returns:
            intervals(dict): A dictionary with chromosomes as keys and overlapping genomic intervals as values
Return a dictionary with chromosomes as keys and interval trees as values