def __new__(cls, trackName): if trackName == [] or trackName is None: return None else: if ExternalTrackManager.isVirtualTrack(trackName): return VirtualMinimalTrack.__new__(VirtualMinimalTrack) else: return object.__new__(cls)
def _getBoundingRegionShelve(self, trackName): if trackName in [None, []] or ExternalTrackManager.isVirtualTrack(trackName): brShelve = None else: brShelve = BoundingRegionShelve(self.genome, trackName, allowOverlaps=False) if not brShelve.fileExists(): raise BoundingRegionsNotAvailableError('Bounding regions not available for track: ' + \ prettyPrintTrackName(trackName)) return brShelve
def _allGESources(self, trackName): return [ExternalTrackManager.getGESource(self._fullFn, self._fileSuffix, \ self._extTrackName, self._genome, printWarnings=True)]
def _getRawTrackView(self, region, borderHandling, allowOverlaps): assert len(region) == 1 from collections import OrderedDict from gtrackcore_memmap.track.memmap.CommonMemmapFunctions import findEmptyVal from gtrackcore_memmap.track.core.TrackView import TrackView import numpy as np geSource = ExternalTrackManager.getGESourceFromGalaxyOrVirtualTN(self.trackName, region.genome) prefixList = geSource.getPrefixList() valDataType = geSource.getValDataType() valDim = geSource.getValDim() weightDataType = geSource.getEdgeWeightDataType() weightDim = geSource.getEdgeWeightDim() startList, endList, valList, strandList, idList, edgesList, weightsList = [None] * 7 extraLists = OrderedDict() tf = TrackFormat.createInstanceFromPrefixList(prefixList, valDataType, valDim, weightDataType, weightDim) if allowOverlaps and (tf.isDense() or geSource.hasNoOverlappingElements()): raise IncompatibleTracksError( prettyPrintTrackName(self.trackName) + " with format: " + str(tf) + " does not satisfy " + str(self._trackFormatReq) ) denseAndInterval = tf.isDense() and tf.isInterval() numEls = 2 if denseAndInterval else 1 if valDataType == "S": valDataType = "S2" if weightDataType == "S": weightDataType = "S2" for prefix in prefixList: if prefix == "start": startList = np.array([-1], dtype="int32") elif prefix == "end": if denseAndInterval: endList = np.array([0, 1], dtype="int32") else: endList = np.array([0], dtype="int32") elif prefix == "val": valList = np.array([findEmptyVal(valDataType)] * valDim * numEls, dtype=valDataType).reshape( (numEls, valDim) if valDim > 1 else numEls ) elif prefix == "strand": strandList = np.array([1] * numEls, dtype="int8") elif prefix == "id": idList = np.array([""] * numEls, dtype="S1") elif prefix == "edges": edgesList = np.array([[""]] * numEls, dtype="S1") elif prefix == "weights": weightsList = np.array( [[[findEmptyVal(weightDataType)]]] * weightDim * numEls, dtype=weightDataType ).reshape((numEls, 1, weightDim) if weightDim > 1 else (numEls, 1)) else: extraLists[prefix] = np.array([""] * numEls, dtype="S1") return TrackView( region, startList, endList, valList, strandList, idList, edgesList, weightsList, borderHandling, allowOverlaps, extraLists, )