def run(self): """ The main function, it is called by PBToolRunner.start(). """ startTime = time.time() logging.info("pbalign version: %s", get_version()) #logging.debug("Original arguments: " + str(self._argumentList)) # Create an AlignService by algorithm name. self._alnService = self._createAlignService(self.args.algorithm, self.args, self.fileNames, self._tempFileManager) # Make sane. self._makeSane(self.args, self.fileNames) # Run align service. self._alnService.run() # Create a temporary filtered SAM/BAM file as output for FilterService. outFormat = getFileFormat(self.fileNames.outputFileName) suffix = ".bam" if outFormat in \ [FILE_FORMATS.BAM, FILE_FORMATS.XML] else ".sam" self.fileNames.filteredSam = self._tempFileManager.\ RegisterNewTmpFile(suffix=suffix) # Call filter service on SAM or BAM file. self._filterService = FilterService( self.fileNames.alignerSamOut, self.fileNames.targetFileName, self.fileNames.filteredSam, self.args.algorithm, #self._alnService.name, self._alnService.scoreSign, self.args, self.fileNames.adapterGffFileName) self._filterService.run() # Sort bam before output if outFormat in [FILE_FORMATS.BAM, FILE_FORMATS.XML]: # Sort/make index for BAM output. BamPostService(filenames=self.fileNames, nproc=self.args.nproc).run() # Output all hits in SAM, BAM. self._output(inSam=self.fileNames.filteredSam, refFile=self.fileNames.targetFileName, outFile=self.fileNames.outputFileName, readType=self.args.readType) # Delete temporay files anyway to make self._cleanUp(False if (hasattr(self.args, "keepTmpFiles") and self.args.keepTmpFiles is True) else True) endTime = time.time() logging.info("Total time: {:.2f} s.".format(float(endTime - startTime))) return 0
def run(self): """ The main function, it is called by PBToolRunner.start(). """ startTime = time.time() logging.info("pbalign version: %s", get_version()) #logging.debug("Original arguments: " + str(self._argumentList)) # Create an AlignService by algorithm name. self._alnService = self._createAlignService(self.args.algorithm, self.args, self.fileNames, self._tempFileManager) # Make sane. self._makeSane(self.args, self.fileNames) # Run align service. self._alnService.run() # Create a temporary filtered SAM/BAM file as output for FilterService. outFormat = getFileFormat(self.fileNames.outputFileName) suffix = ".bam" if outFormat in \ [FILE_FORMATS.BAM, FILE_FORMATS.XML] else ".sam" self.fileNames.filteredSam = self._tempFileManager.\ RegisterNewTmpFile(suffix=suffix) # Call filter service on SAM or BAM file. self._filterService = FilterService(self.fileNames.alignerSamOut, self.fileNames.targetFileName, self.fileNames.filteredSam, self.args.algorithm, #self._alnService.name, self._alnService.scoreSign, self.args, self.fileNames.adapterGffFileName) self._filterService.run() # Sort bam before output if outFormat in [FILE_FORMATS.BAM, FILE_FORMATS.XML]: # Sort/make index for BAM output. BamPostService(self.fileNames).run() # Output all hits in SAM, BAM. self._output( inSam=self.fileNames.filteredSam, refFile=self.fileNames.targetFileName, outFile=self.fileNames.outputFileName, readType=self.args.readType) # Delete temporay files anyway to make self._cleanUp(False if (hasattr(self.args, "keepTmpFiles") and self.args.keepTmpFiles is True) else True) endTime = time.time() logging.info("Total time: {:.2f} s.".format(float(endTime - startTime))) return 0
class Constants(object): TOOL_ID = "pbalign.tasks.pbalign" INPUT_FILE_TYPE = FileTypes.DS_SUBREADS OUTPUT_FILE_TYPE = FileTypes.DS_ALIGN OUTPUT_FILE_NAME = "mapped" ALGORITHM_OPTIONS_ID = "pbalign.task_options.algorithm_options" ALGORITHM_OPTIONS_DEFAULT = "--minMatch 12 --bestn 10 --minPctSimilarity 70.0" MIN_ACCURACY_ID = "pbalign.task_options.min_accuracy" MIN_LENGTH_ID = "pbalign.task_options.min_length" NO_SPLIT_ID = "pbalign.task_options.no_split_subreads" CONCORDANT_ID = "pbalign.task_options.concordant" HIT_POLICY_ID = "pbalign.task_options.hit_policy" DRIVER_EXE = "pbalign --resolved-tool-contract " VERSION = get_version() PARSER_DESC = """\
def getVersion(self): """Return version.""" return get_version()
def run(self): """ The main function, it is called by PBToolRunner.start(). """ startTime = time.time() logging.info("pbalign version: {version}".format(version=get_version())) logging.debug("Original arguments: " + str(self._argumentList)) # Create an AlignService by algorithm name. self._alnService = self._createAlignService(self.args.algorithm, self.args, self.fileNames, self._tempFileManager) # Make sane. self._makeSane(self.args, self.fileNames) # Run align service. try: self._alnService.run() except RuntimeError: return 1 # Create a temporary filtered SAM file as output for FilterService. self.fileNames.filteredSam = self._tempFileManager.\ RegisterNewTmpFile(suffix=".sam") # Call filter service. self._filterService = FilterService(self.fileNames.alignerSamOut, self.fileNames.targetFileName, self.fileNames.filteredSam, self._alnService.name, self._alnService.scoreSign, self.args, self.fileNames.adapterGffFileName) try: self._filterService.run() except RuntimeError: return 1 # Output all hits either in SAM or CMP.H5. try: useSmrtTitle = False if (self.args.algorithm != "blasr" or self.fileNames.inputFileFormat == FILE_FORMATS.FASTA): useSmrtTitle = True self._output( self.fileNames.filteredSam, self.fileNames.targetFileName, self.fileNames.outputFileName, self.args.readType, useSmrtTitle) except RuntimeError: return 1 # Call post service for quiver. if self.args.forQuiver or self.args.loadQVs: postService = ForQuiverService(self.fileNames, self.args) try: postService.run() except RuntimeError: return 1 # Delete temporay files anyway to make self._cleanUp(False if (hasattr(self.args, "keepTmpFiles") and self.args.keepTmpFiles is True) else True) endTime = time.time() logging.info("Total time: {:.2f} s.".format(float(endTime - startTime))) return 0
def run(self): """ The main function, it is called by PBToolRunner.start(). """ startTime = time.time() logging.info( "pbalign version: {version}".format(version=get_version())) # FIXME #logging.debug("Original arguments: " + str(self._argumentList)) # Create an AlignService by algorithm name. self._alnService = self._createAlignService(self.args.algorithm, self.args, self.fileNames, self._tempFileManager) # Make sane. self._makeSane(self.args, self.fileNames) # Run align service. try: self._alnService.run() except RuntimeError: return 1 # Create a temporary filtered SAM/BAM file as output for FilterService. outFormat = getFileFormat(self.fileNames.outputFileName) suffix = ".bam" if outFormat in \ [FILE_FORMATS.BAM, FILE_FORMATS.XML] else ".sam" self.fileNames.filteredSam = self._tempFileManager.\ RegisterNewTmpFile(suffix=suffix) # Call filter service on SAM or BAM file. self._filterService = FilterService( self.fileNames.alignerSamOut, self.fileNames.targetFileName, self.fileNames.filteredSam, self.args.algorithm, #self._alnService.name, self._alnService.scoreSign, self.args, self.fileNames.adapterGffFileName) try: self._filterService.run() except RuntimeError: return 1 # Sort bam before output if outFormat in [FILE_FORMATS.BAM, FILE_FORMATS.XML]: # Sort/make index for BAM output. try: BamPostService(self.fileNames).run() except RuntimeError: return 1 # Output all hits in SAM, BAM or CMP.H5. try: useSmrtTitle = False if (self.args.algorithm != "blasr" or self.fileNames.inputFileFormat == FILE_FORMATS.FASTA): useSmrtTitle = True self._output(inSam=self.fileNames.filteredSam, refFile=self.fileNames.targetFileName, outFile=self.fileNames.outputFileName, readType=self.args.readType, smrtTitle=useSmrtTitle) except RuntimeError: return 1 # Load QVs to cmp.h5 for Quiver if outFormat == FILE_FORMATS.CMP and \ self.args.forQuiver or self.args.loadQVs: # Call post service for quiver. try: ForQuiverService(self.fileNames, self.args).run() except RuntimeError: return 1 # Delete temporay files anyway to make self._cleanUp(False if (hasattr(self.args, "keepTmpFiles") and self.args.keepTmpFiles is True) else True) endTime = time.time() logging.info("Total time: {:.2f} s.".format(float(endTime - startTime))) return 0