class GenePredTbl(list):
    """Table of GenePred objects loaded from a tab-file"""
    def __init__(self, fileName, buildIdx=False, buildUniqIdx=False, buildRangeIdx=False):
        if buildIdx and buildUniqIdx:
            raise PycbioException("can't specify both buildIdx and buildUniqIdx")
        for row in GenePredReader(fileName):
            self.append(row)
        self.names = None
        self.rangeMap = None
        if buildUniqIdx:
            self._buildUniqIdx()
        if buildIdx:
            self._buildIdx()
        if buildRangeIdx:
            self._buildRangeIdx()

    def _buildUniqIdx(self):
        self.names = dict()
        for row in self:
            if row.name in self.names:
                raise PycbioException("gene with this name already in index: " + row.name)
            self.names[row.name] = row

    def _buildIdx(self):
        self.names = defaultdict(list)
        for row in self:
            self.names.append(row.name, row)

    def _buildRangeIdx(self):
        from pycbio.hgdata.RangeFinder import RangeFinder
        self.rangeMap = RangeFinder()
        for gene in self:
            self.rangeMap.add(gene.chrom, gene.txStart, gene.txEnd, gene, gene.strand)
Beispiel #2
0
class GenePredTbl(list):
    """Table of GenePred objects loaded from a tab-file"""
    def __init__(self, fileName, buildIdx=False, buildUniqIdx=False, buildRangeIdx=False):
        if buildIdx and buildUniqIdx:
            raise Exception("can't specify both buildIdx and buildUniqIdx")
        for row in GenePredReader(fileName):
            self.append(row)
        self.names = None
        self.rangeMap = None
        if buildUniqIdx:
            self.__buildUniqIdx()
        if buildIdx:
            self.__buildIdx()
        if buildRangeIdx:
            self.__buildRangeIdx()

    def __buildUniqIdx(self):
        self.names = dict()
        for row in self:
            if row.name in self.names:
                raise Exception("gene with this name already in index: " + row.name)
            self.names[row.name] = row

    def __buildIdx(self):
        from pycbio.sys.MultiDict import MultiDict
        self.names = MultiDict()
        for row in self:
            self.names.add(row.name, row)

    def __buildRangeIdx(self):
        from pycbio.hgdata.RangeFinder import RangeFinder
        self.rangeMap = RangeFinder()
        for gene in self:
            self.rangeMap.add(gene.chrom, gene.txStart, gene.txEnd, gene, gene.strand)
Beispiel #3
0
 def __buildRangeIdx(self):
     from pycbio.hgdata.RangeFinder import RangeFinder
     self.rangeMap = RangeFinder()
     for gene in self:
         self.rangeMap.add(gene.chrom, gene.txStart, gene.txEnd, gene,
                           gene.strand)
Beispiel #4
0
 def __buildRangeIdx(self):
     from pycbio.hgdata.RangeFinder import RangeFinder
     self.rangeMap = RangeFinder()
     for gene in self:
         self.rangeMap.add(gene.chrom, gene.txStart, gene.txEnd, gene, gene.strand)