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])
 def getFileSuffix(self):
     return getFileSuffix(self._fn) if self._fn is not None else None