def writeIndexes(self): numIndexElements = int(math.ceil(1.0 * self._chrSize / CompBinManager.getIndexBinSize())) self._leftIndexFile = OutputFile(self._path, 'leftIndex', numIndexElements, allowAppend=False) self._rightIndexFile = OutputFile(self._path, 'rightIndex', numIndexElements, allowAppend=False) if self._startFile: lefts = self._startFile.getContents() else: lefts = np.r_[0, self._endFile.getContents()[:-1]] if self._endFile: rights = self._endFile.getContents() if not self._startFile: rights = rights[1:] else: rights = self._startFile.getContents() + 1 bin_i = 0 i = 0 for i, right in enumerate(rights): while right > (bin_i) * CompBinManager.getIndexBinSize(): self._leftIndexFile.write(i) bin_i += 1 bin_j = 0 j = 0 for j, left in enumerate(lefts): while left >= (bin_j+1) * CompBinManager.getIndexBinSize(): self._rightIndexFile.write(j) bin_j += 1 self._fillRestOfIndexFile(bin_i, i+1, self._leftIndexFile) self._fillRestOfIndexFile(bin_j, j+1, self._rightIndexFile)
def createDirPath(trackName, genome, chr=None, allowOverlaps=False, basePath=Config.PROCESSED_DATA_PATH): """ >>> createDirPath(['trackname'],'genome','chr1') '/100000/noOverlaps/genome/trackname/chr1' """ from gtrackcore_memmap.util.CompBinManager import CompBinManager if len(trackName)>0 and trackName[0] == 'redirect': genome = trackName[1] chr = trackName[2] #trackName[3] is description trackName = trackName[4:] #print [basePath, str(CompBinManager.getIndexBinSize()), ('withOverlaps' if allowOverlaps else 'noOverlaps'), genome] +\ # list(trackName) + ([chr] if chr is not None else []) return os.sep.join( [basePath, str(CompBinManager.getIndexBinSize()), ('withOverlaps' if allowOverlaps else 'noOverlaps'), genome] +\ list(trackName) + ([chr] if chr is not None else []) )