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 getGenomeElementSourceClass(fn, suffix=None, forPreProcessor=False): from gold.application.DataTypes import getUnsupportedFileSuffixes if not suffix: from gold.util.CommonFunctions import getFileSuffix suffix = getFileSuffix(fn) if not suffix.lower() in getUnsupportedFileSuffixes(): for geSourceCls in getAllGenomeElementSourceClasses(forPreProcessor): for clsSuffix in geSourceCls.FILE_SUFFIXES: if (fn.endswith('.' + clsSuffix) if suffix is None else clsSuffix.lower() == suffix.lower()): return geSourceCls else: if forPreProcessor: from gold.origdata.GtrackGenomeElementSource import HbGtrackGenomeElementSource GtrackGESourceCls = HbGtrackGenomeElementSource else: from gold.origdata.GtrackGenomeElementSource import GtrackGenomeElementSource GtrackGESourceCls = GtrackGenomeElementSource if GtrackGESourceCls.suffixBasedGTrackSubtypeExists(suffix): return GtrackGESourceCls raise NotSupportedError('File type "%s" not supported.' % suffix)
def getFileSuffix(self): return getFileSuffix(self._fn) if self._fn is not None else None
def getTitleSuffix(title): return getFileSuffix(splitTitleIfDuplicate(title)[0])