Пример #1
0
 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
Пример #3
0
 def _allGESources(self, trackName):
     return [ExternalTrackManager.getGESource(self._fullFn, self._fileSuffix, \
                                              self._extTrackName, self._genome, printWarnings=True)]
Пример #4
0
    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,
        )