def getOptionsBoxAnalysis(prevChoices):

        if prevChoices.analysisCategory:
            from quick.multitrack.MultiTrackCommon import getGSuiteFromGalaxyTN
            gSuite = getGSuiteFromGalaxyTN(prevChoices.history)
            tracks = list(gSuite.allTracks())
            AnalysisManager.getValidAnalysesInCategory(
                prevChoices.analysisCategory, gSuite.genome, tracks[0], None)
Пример #2
0
def countAnalyses():
    "Counts analyses"
    analyses = AnalysisManager.getAllAnalyses()
    print 'Total counts: '
    _countAnalyses(analyses, True)
    _countAnalyses(analyses, False)
    
    allAnalyses = AnalysisManager.getAnalysisDict()
    mainCats = ['Hypothesis testing','Descriptive statistics']
    for mainCat in mainCats:
        analyses = reduce( lambda x,y:x+y, [allAnalyses[cat].values() for cat in allAnalyses.keys() if cat.startswith(mainCat)] )
        print 'Considering the main-category: ', mainCat
        _countAnalyses(analyses, True)
        _countAnalyses(analyses, False)
            
    for cat in allAnalyses.keys():
        analyses = allAnalyses[cat].values() 
        print 'Considering the category: ', cat
        _countAnalyses(analyses, True)
        _countAnalyses(analyses, False)
Пример #3
0
 def getValidAnalyses(cls, genome, trackName1, trackName2):
     allFeatures = cls.getAllFeatures()
     validFeatures = {}
     for key in allFeatures:
         analysisDef = allFeatures[key][0]
         #print AnalysisManager._tryAnalysisDefForValidity(analysisDef, genome, trackName1, trackName2, tryReversed=False)
         if AnalysisManager._tryAnalysisDefForValidity(analysisDef, genome, trackName1, trackName2, tryReversed=False)[0] is not None: #maybe also try reversed..
             validFeatures[key] = allFeatures[key]
             
     print "Valid: %s (for trackNames: %s and %s)" % (validFeatures, trackName1, trackName2)
     return validFeatures
    def getOptionsBoxAnalysisCategory(
            prevChoices):  # Alternatively: getOptionsBox2()
        '''
        See getOptionsBoxFirstKey().

        prevChoices is a namedtuple of selections made by the user in the
        previous input boxes (that is, a namedtuple containing only one element
        in this case). The elements can accessed either by index, e.g.
        prevChoices[0] for the result of input box 1, or by key, e.g.
        prevChoices.key (case 2).
        '''
        if prevChoices.history:

            return AnalysisManager.getMainCategoryNames()
    def getValidAnalyses(cls, genome, trackName1, trackName2):
        trackNames = [trackName1, trackName2]
        allFeatures = cls.getAllFeatures()
        validFeatures = {}
        trackNames = GalaxyInterface._cleanUpTracks(trackNames, genome, realPreProc=False)
        #trackName1 = trackName1[1:] #FixMe, temp, Boris..
        #genome='hg19'
        #print 'TEMP3: ', (genome, trackName1, trackName2)
        if not GalaxyInterface.areTrackNamesValid(genome, trackNames):
            return {}

        #print 'TEMP2: ', allFeatures
        for key in allFeatures:
            analysisDef = allFeatures[key][0]
            #print AnalysisManager._tryAnalysisDefForValidity(analysisDef, genome, trackName1, trackName2, tryReversed=False)
            if AnalysisManager._tryAnalysisDefForValidity(analysisDef, genome, trackName1, trackName2, tryReversed=False)[0] is not None: #maybe also try reversed..
                validFeatures[key] = allFeatures[key]

        #print "Valid: %s (for trackNames: %s and %s)" % (validFeatures, trackName1, trackName2)
        return validFeatures
#from gold.statistic.AllStatistics import STAT_CLASS_DICT
#from gold.application.StatRunner import StatRunner
#from test.gold.track.common.SampleTrack import SampleTrack
#from test.gold.track.common.SampleTrackView import SampleTV, SampleTV_Num
#from gold.track.GenomeRegion import GenomeRegion
from gold.description.AnalysisManager import AnalysisManager
from gold.statistic.AllStatistics import STAT_CLASS_DICT
#class GenerateDefaultAnalysiss:

#def _getSampleTrack(numbers = False):
#    if numbers:
#        return SampleTrack( SampleTV_Num(numElements=50), True )
#    else:
#        return SampleTrack( SampleTV(starts=True, ends=True, vals=True, numElements=50), True )

#stats = StatOptions().getStats(_getSampleTrack(), _getSampleTrack() )
stats = STAT_CLASS_DICT.values()
uncoveredStats = [
    stat.__name__ for stat in stats
    if not (True in [(stat in a.getAllStats())
                     for a in AnalysisManager.getAllAnalyses()])
]
for stat in uncoveredStats:
    print 'Data inspection: ' + stat + ' -> ' + stat

#for statClass in STAT_CLASS_DICT.values():
#    try:
#        StatRunner.run([GenomeRegion('hg18', 'chr1', 0, 1)], track1, track2, statClass)
#    except:
#        pass
Пример #7
0
    def execute(cls, choices, galaxyFn=None, username=''):
        '''
        Is called when execute-button is pushed by web-user. Should print
        output as HTML to standard out, which will be directed to a results page
        in Galaxy history. If getOutputFormat is anything else than HTML, the
        output should be written to the file with path galaxyFn. If needed,
        StaticFile can be used to get a path where additional files can be put
        (e.g. generated image files). choices is a list of selections made by
        web-user in each options box.
        '''
        DebugMixin._setDebugModeIfSelected(choices)
        genome = choices.genome
        gSuite = getGSuiteFromGalaxyTN(choices.gsuite)
        #         fullCategory = AnalysisManager.combineMainAndSubCategories(choices.analysisCategory, 'Basic')
        fullCategory = AnalysisManager.combineMainAndSubCategories(
            'Descriptive statistics', 'Basic')
        tracks = list(gSuite.allTracks())
        analysisName = choices.analysis
        # selectedAnalysis = GSuiteSingleValueAnalysisPerTrackTool \
        #     ._resolveAnalysisFromName(gSuite.genome, fullCategory, tracks[0].trackName, analysisName)

        selectedAnalysis = cls.ANALYSIS_PRETTY_NAME_TO_ANALYSIS_SPEC_MAPPING[
            choices.analysis]

        regSpec, binSpec = UserBinMixin.getRegsAndBinsSpec(choices)
        analysisBins = GalaxyInterface._getUserBinSource(regSpec,
                                                         binSpec,
                                                         genome=genome)
        # paramName, paramValues = selectedAnalysis.getFirstOptionKeyAndValues()
        # if paramName and paramValues:
        #     if len(paramValues) == 1:
        #         selectedAnalysis.addParameter(paramName, paramValues[0])
        #     else:
        #         selectedAnalysis.addParameter(paramName, choices.paramOne)

        tableDict = OrderedDict()

        for track in tracks:
            tableDict[track.title] = OrderedDict()
            result = doAnalysis(selectedAnalysis, analysisBins, [track])
            resultDict = result.getGlobalResult()
            if 'Result' in resultDict:
                track.setAttribute(analysisName.lower(),
                                   str(resultDict['Result']))
                tableDict[
                    track.title][analysisName] = strWithNatLangFormatting(
                        resultDict['Result'])
            else:
                for attrName, attrVal in resultDict.iteritems():
                    attrNameExtended = analysisName + ':' + attrName
                    track.setAttribute(attrNameExtended.lower(), str(attrVal))
                    tableDict[track.title][
                        attrNameExtended] = strWithNatLangFormatting(attrVal)
                    # assert isinstance(resultDict['Result'], (int, basestring, float)), type(resultDict['Result'])

        core = HtmlCore()
        core.begin()
        core.header('Results: ' + analysisName)

        def _produceTable(core, tableDict=None, tableId=None):
            return core.tableFromDictOfDicts(tableDict,
                                             firstColName='Track title',
                                             tableId=tableId,
                                             expandable=True,
                                             visibleRows=20,
                                             presorted=0)

        tableId = 'results_table'
        tableFile = GalaxyRunSpecificFile([tableId, 'table.tsv'], galaxyFn)
        tabularHistElementName = 'Raw results: ' + analysisName

        gsuiteFile = GalaxyRunSpecificFile(
            [tableId, 'input_with_results.gsuite'], galaxyFn)
        GSuiteComposer.composeToFile(gSuite, gsuiteFile.getDiskPath())
        gsuiteHistElementName = \
            getGSuiteHistoryOutputName('result', ', ' + analysisName, choices.gsuite)

        core.tableWithImportButtons(
            tabularFile=True,
            tabularFn=tableFile.getDiskPath(),
            tabularHistElementName=tabularHistElementName,
            gsuiteFile=True,
            gsuiteFn=gsuiteFile.getDiskPath(),
            gsuiteHistElementName=gsuiteHistElementName,
            produceTableCallbackFunc=_produceTable,
            tableDict=tableDict,
            tableId=tableId)
        core.end()
        print core
from gold.description.AnalysisManager import AnalysisManager
import os

STAT_DESCRIPTION_LIST_FN = os.sep.join(['gold', 'description', 'StatDescriptionList.py'])

#analyses = AnalysisManager.getAllAnalyses()
#statClasses = []
#for a in analyses:
#    statClasses += [x.__name__ for x in a._statClassList]
#allStatClassesSet = set(statClasses)

coveredStats = set([line.split('=')[0].strip() for line in open(STAT_DESCRIPTION_LIST_FN) if line.count('=') == 1])

avoidStatSet = set(['RandomizationManagerStat'])

analysisDict = AnalysisManager.getAnalysisDict()

categories = analysisDict.keys()

for cat in categories:
    analyses = analysisDict[cat].values()
    statClasses = []
    for a in analyses:
        statClasses += [x.__name__ for x in a._statClassList]
    allStatClassesSet = set(statClasses)
    uncoveredStatClasses = allStatClassesSet - coveredStats
    missingStatClasses = uncoveredStatClasses - avoidStatSet
    print '#' + cat
    for stat in missingStatClasses:
        print stat + " = ''"
from gold.description.AnalysisManager import AnalysisManager
import os

STAT_DESCRIPTION_LIST_FN = os.sep.join(['gold', 'description', 'StatDescriptionList.py'])

#analyses = AnalysisManager.getAllAnalyses()
#statClasses = []
#for a in analyses:
#    statClasses += [x.__name__ for x in a._statClassList]
#allStatClassesSet = set(statClasses)

coveredStats = set([line.split('=')[0].strip() for line in open(STAT_DESCRIPTION_LIST_FN) if line.count('=') == 1])

avoidStatSet = set(['RandomizationManagerStat'])

analysisDict = AnalysisManager.getAnalysisDict()

categories = analysisDict.keys()

for cat in categories:
    analyses = analysisDict[cat].values()
    statClasses = []
    for a in analyses:
        statClasses += [x.__name__ for x in a._statClassList]
    allStatClassesSet = set(statClasses)
    uncoveredStatClasses = allStatClassesSet - coveredStats
    missingStatClasses = uncoveredStatClasses - avoidStatSet
    print '#' + cat
    for stat in missingStatClasses:
        print stat + " = ''"