def runJob(batchLine, genome, fullAccess, galaxyFn=None, printProgress=True): bc = BatchRunner.parseBatchLine(batchLine, genome, fullAccess) if bc.errorResult is not None: return bc.errorResult #Try a full run, and return either results or an exception try: #track = Track(trackName1) #track2 = Track(trackName2) #if 'tf1' in paramDict: # track.setFormatConverter(formatConverter) #results = StatRunner.run(userBinSource , Track(trackName1), Track(trackName2), \ # wrapClass(STAT_CLASS_DICT[statClassName], keywords=paramDict) ) #results = StatRunner.run(userBinSource , track, track2, \ # wrapClass(STAT_CLASS_DICT[statClassName], keywords=paramDict) ) fullRunParams = {} if USE_PARALLEL: #if galaxyFn == None: #then this is a test uniqueId = time.time() #else: #uniqueId = extractIdFromGalaxyFn(galaxyFn)[1] fullRunParams["uniqueId"] = uniqueId if bc.cleanedTrackNameIntensity is not None: fullRunParams['trackNameIntensity'] = '|'.join(tuple(bc.cleanedTrackNameIntensity)) analysisDefParams = [ '[' + key + '=' + value + ']' for key,value in bc.paramDict.items()] analysisDef = ''.join(analysisDefParams) + '->' + bc.statClassName from quick.application.GalaxyInterface import GalaxyInterface GalaxyInterface._tempAnalysisDefHacks(analysisDef) if printProgress: print 'Corresponding batch command line:<br>' + \ GalaxyInterface._revEngBatchLine(bc.trackName1, bc.trackName2, bc.trackNameIntensity, analysisDef, bc.regSpec, bc.binSpec, genome) + '<br><br>' results = AnalysisDefJob(analysisDef, bc.cleanedTrackName1, bc.cleanedTrackName2, bc.userBinSource, galaxyFn=galaxyFn, **fullRunParams).run(printProgress) presCollectionType = results.getPresCollectionType() if len(results.getResDictKeys()) > 0 and GalaxyInterface.APPEND_ASSEMBLY_GAPS and presCollectionType=='standard': if USE_PARALLEL: gapRes = AssemblyGapJob(bc.userBinSource, genome, uniqueId=uniqueId).run(printProgress) else: gapRes = AssemblyGapJob(bc.userBinSource, genome).run(printProgress) results.includeAdditionalResults(gapRes, ensureAnalysisConsistency=False) except Exception, e: #print 'NOWAG BExc' results = Results(bc.cleanedTrackName1, bc.cleanedTrackName2, bc.statClassName) results.addError(e) logException(e,message='Error in batch run') if DebugConfig.PASS_ON_BATCH_EXCEPTIONS: raise return results
def runJob(batchLine, genome, fullAccess, galaxyFn=None, printProgress=True): bc = BatchRunner.parseBatchLine(batchLine, genome, fullAccess) if bc.errorResult is not None: return bc.errorResult #Try a full run, and return either results or an exception try: #track = Track(trackName1) #track2 = Track(trackName2) #if 'tf1' in paramDict: # track.setFormatConverter(formatConverter) #results = StatRunner.run(userBinSource , Track(trackName1), Track(trackName2), \ # wrapClass(STAT_CLASS_DICT[statClassName], keywords=paramDict) ) #results = StatRunner.run(userBinSource , track, track2, \ # wrapClass(STAT_CLASS_DICT[statClassName], keywords=paramDict) ) fullRunParams = {} if USE_PARALLEL: # TODO: Requirements for parallel runs should not be added in places like these. Parallelization # should be a feature of the job runner somehow #if galaxyFn == None: #then this is a test uniqueId = time.time() #else: #uniqueId = extractIdFromGalaxyFn(galaxyFn)[1] fullRunParams["uniqueId"] = uniqueId from quick.application.GalaxyInterface import GalaxyInterface analysisDefParams = [ '[' + key + '=' + value + ']' for key,value in bc.paramDict.items()] analysisDef = ''.join(analysisDefParams) + '->' + bc.statClassName # TODO: Keeping the ugly accesses to private methods in GalaxyInterface for now. To be refactored. trackNames, analysisDef = GalaxyInterface._cleanUpAnalysisDef(bc.cleanedTrackNames, analysisDef) if printProgress: revEngBatchLine = RunDescription.getRevEngBatchLine( analysisDef, bc.trackNames, bc.cleanedTrackNames, bc.regSpec, bc.binSpec, genome ) print 'Corresponding batch command line:<br>{}<br><br>'.format(revEngBatchLine) results = AnalysisDefJob(analysisDef, bc.cleanedTrackNames[0], bc.cleanedTrackNames[1], bc.userBinSource, galaxyFn=galaxyFn, **fullRunParams).run(printProgress) presCollectionType = results.getPresCollectionType() if len(results.getResDictKeys()) > 0 and GalaxyInterface.APPEND_ASSEMBLY_GAPS and presCollectionType=='standard': if USE_PARALLEL: gapRes = AssemblyGapJob(bc.userBinSource, genome, uniqueId=uniqueId).run(printProgress) else: gapRes = AssemblyGapJob(bc.userBinSource, genome).run(printProgress) results.includeAdditionalResults(gapRes, ensureAnalysisConsistency=False) except Exception, e: #print 'NOWAG BExc' results = Results(bc.cleanedTrackNames[0], bc.cleanedTrackNames[1], bc.statClassName) results.addError(e) logException(e,message='Error in batch run') if DebugConfig.PASS_ON_BATCH_EXCEPTIONS: raise return results