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)
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)
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)