def getTitleAndSuffixWithCompressionSuffixesRemoved(gSuiteTrack): gSuiteReq = GSuiteRequirements( allowedLocations=[LOCAL, REMOTE], allowedFileFormats=[PREPROCESSED, PRIMARY, UNKNOWN]) gSuiteReq.check(gSuiteTrack) title, suffix, path = gSuiteTrack.title, gSuiteTrack.suffix, gSuiteTrack.path if suffix: for compSuffix in COMPRESSION_SUFFIXES: reduceLen = len(compSuffix) + 1 if suffix.lower() == compSuffix: if path.endswith('.' + compSuffix): path = path[:-reduceLen] suffix = getFileSuffix(path) else: if isinstance(gSuiteTrack, SearchQueryForSuffixGSuiteTrack): tempGSuiteTrack = GSuiteTrack(gSuiteTrack.uri.replace( '.' + compSuffix, ''), title='') suffix = tempGSuiteTrack.suffix else: suffix = None # Impossible to find uncompressed suffix elif suffix.lower().endswith('.' + compSuffix): suffix = suffix[:-reduceLen] # e.g. suffix = 'bed.gz' -> 'bed' else: continue title = getTitleWithSuffixReplaced(title, '') break return title, suffix
def suffix(self): suffix = super(SearchQueryForSuffixGSuiteTrack, self).suffix if suffix is None: fileName = self._getFileNameFromQuery() if fileName: suffix = getFileSuffix(fileName) return suffix
def _getFileNameFromQuery(self): import re query = self._parsedUri.query for part in re.split('&|;', query): subparts = part.split('=') if len(subparts) == 2: key, val = subparts partSuffix = getFileSuffix(val) if partSuffix != '': # Looks like a file name with suffix fileName = val return fileName
def suffix(self): if self._parsedUri.params != '': return self._parsedUri.params else: if self.path is None: return None suffix = getFileSuffix(self.path) if suffix == '': return None return suffix
def renameBaseFileNameWithDuplicateIdx(baseFileName, duplicateIdx): if duplicateIdx == 1: return baseFileName else: suffixes = [] while True: suffix = getFileSuffix(baseFileName) if suffix: suffixes.insert(0, suffix) baseFileName = baseFileName[:-len('.' + suffix)] else: break return baseFileName + '_%s' % duplicateIdx +\ (('.' +'.'.join(suffixes)) if suffixes else '')
def getTitleSuffix(title): return getFileSuffix(splitTitleIfDuplicate(title)[0])