def getTrackView(self, region): allowOverlaps = self._trackFormatReq.allowOverlaps() borderHandling = self._trackFormatReq.borderHandling() assert allowOverlaps is not None assert borderHandling is not None origTrackView = self._getRawTrackView(region, borderHandling, allowOverlaps) if self.formatConverters is None: self.formatConverters = getFormatConverters(origTrackView.trackFormat, self._trackFormatReq) if self.formatConverters == []: raise IncompatibleTracksError( prettyPrintTrackName(self.trackName) + " with format: " + str(origTrackView.trackFormat) + ("(" + origTrackView.trackFormat._val + ")" if origTrackView.trackFormat._val else "") + " does not satisfy " + str(self._trackFormatReq) ) if not self.formatConverters[0].canHandle(origTrackView.trackFormat, self._trackFormatReq): raise IncompatibleTracksError( getClassName(self.formatConverters[0]) + " does not support conversion from " + str(origTrackView.trackFormat) + " to " + str(self._trackFormatReq) ) return self.formatConverters[0].convert(origTrackView)
def getUniqueKey(self, genome): assert self.formatConverters is not None and len(self.formatConverters) == 1, "FC: " + str( self.formatConverters ) assert not None in [self._trackFormatReq.allowOverlaps(), self._trackFormatReq.borderHandling()] if not self._trackId: self._trackId = TrackInfo(genome, self.trackName).id return hash( ( tuple(self.trackName), self._trackId, getClassName(self.formatConverters[0]), self.formatConverters[0].VERSION, self._trackFormatReq.allowOverlaps(), self._trackFormatReq.borderHandling(), ) )