def test_realpath(self): """Test real_upath and real_ppath.""" print real_upath("ref with space") self.assertTrue(real_upath("ref with space").endswith("ref\ with\ space")) self.assertTrue(real_upath("ref\ with\ space").endswith("ref\ with\ space")) self.assertTrue(real_ppath("ref with space").endswith("ref with space")) self.assertTrue(real_ppath("ref\ with\ space").endswith("ref with space"))
def _output(self, inSam, refFile, outFile, readType=None, smrtTitle=False): """Generate a SAM, BAM or a CMP.H5 file. Input: inSam : an input SAM/BAM file. (e.g. fileName.filteredSam) refFile : the reference file. (e.g. fileName.targetFileName) outFile : the output SAM/BAM or CMP.H5 file. (i.e. fileName.outputFileName) readType: standard or cDNA or CCS (can be None if not specified) Output: output, errCode, errMsg """ output, errCode, errMsg = "", 0, "" outFormat = getFileFormat(outFile) if outFormat == FILE_FORMATS.BAM: pass # Nothing to be done if outFormat == FILE_FORMATS.SAM: logging.info("OutputService: Genearte the output SAM file.") logging.debug("OutputService: Move {src} as {dst}".format( src=inSam, dst=outFile)) try: shutil.move(real_ppath(inSam), real_ppath(outFile)) except shutil.Error as e: output, errCode, errMsg = "", 1, str(e) elif outFormat == FILE_FORMATS.CMP: #`samtoh5 inSam outFile -readType readType logging.info("OutputService: Genearte the output CMP.H5 " + "file using samtoh5.") prog = "samtoh5" cmd = "samtoh5 {samFile} {refFile} {outFile}".format( samFile=inSam, refFile=refFile, outFile=outFile) if readType is not None: cmd += " -readType {0} ".format(readType) if smrtTitle: cmd += " -smrtTitle " # Execute the command line logging.debug("OutputService: Call \"{0}\"".format(cmd)) output, errCode, errMsg = backticks(cmd) elif outFormat == FILE_FORMATS.XML: logging.info( "OutputService: Generating the output XML file".format( samFile=inSam, outFile=outFile)) # Create {out}.xml, given {out}.bam outBam = str(outFile[0:-3]) + "bam" aln = None # FIXME This should really be more automatic if self.args.readType == "CCS": self._output_dataset_type = ConsensusAlignmentSet aln = self._output_dataset_type(real_ppath(outBam)) for res in aln.externalResources: res.reference = refFile aln.write(outFile) if errCode != 0: errMsg = prog + " returned a non-zero exit status." + errMsg logging.error(errMsg) raise RuntimeError(errMsg) return output, errCode, errMsg
def _output(self, inSam, refFile, outFile, readType=None, smrtTitle=False): """Generate a SAM, BAM or a CMP.H5 file. Input: inSam : an input SAM/BAM file. (e.g. fileName.filteredSam) refFile : the reference file. (e.g. fileName.targetFileName) outFile : the output SAM/BAM or CMP.H5 file. (i.e. fileName.outputFileName) readType: standard or cDNA or CCS (can be None if not specified) Output: output, errCode, errMsg """ output, errCode, errMsg = "", 0, "" outFormat = getFileFormat(outFile) if outFormat == FILE_FORMATS.BAM: pass # Nothing to be done if outFormat == FILE_FORMATS.SAM: logging.info("OutputService: Genearte the output SAM file.") logging.debug("OutputService: Move {src} as {dst}".format( src=inSam, dst=outFile)) try: shutil.move(real_ppath(inSam), real_ppath(outFile)) except shutil.Error as e: output, errCode, errMsg = "", 1, str(e) elif outFormat == FILE_FORMATS.CMP: #`samtoh5 inSam outFile -readType readType logging.info("OutputService: Genearte the output CMP.H5 " + "file using samtoh5.") prog = "samtoh5" cmd = "samtoh5 {samFile} {refFile} {outFile}".format( samFile=inSam, refFile=refFile, outFile=outFile) if readType is not None: cmd += " -readType {0} ".format(readType) if smrtTitle: cmd += " -smrtTitle " # Execute the command line logging.debug("OutputService: Call \"{0}\"".format(cmd)) output, errCode, errMsg = backticks(cmd) elif outFormat == FILE_FORMATS.XML: logging.info("OutputService: Generating the output XML file". format(samFile=inSam, outFile=outFile)) # Create {out}.xml, given {out}.bam outBam = str(outFile[0:-3]) + "bam" aln = None # FIXME This should really be more automatic if self.args.readType == "CCS": self._output_dataset_type = ConsensusAlignmentSet aln = self._output_dataset_type(real_ppath(outBam)) for res in aln.externalResources: res.reference = refFile aln.write(outFile) if errCode != 0: errMsg = prog + " returned a non-zero exit status." + errMsg logging.error(errMsg) raise RuntimeError(errMsg) return output, errCode, errMsg
def test_realpath(self): """Test real_upath and real_ppath.""" print real_upath("ref with space") self.assertTrue( real_upath("ref with space").endswith("ref\ with\ space")) self.assertTrue( real_upath("ref\ with\ space").endswith("ref\ with\ space")) self.assertTrue( real_ppath("ref with space").endswith("ref with space")) self.assertTrue( real_ppath("ref\ with\ space").endswith("ref with space"))
def _output(self, inSam, refFile, outFile, readType=None): """Generate a SAM, BAM file. Input: inSam : an input SAM/BAM file. (e.g. fileName.filteredSam) refFile : the reference file. (e.g. fileName.targetFileName) outFile : the output SAM/BAM file (i.e. fileName.outputFileName) readType: standard or cDNA or CCS (can be None if not specified) Output: output, errCode, errMsg """ output, errCode, errMsg = "", 0, "" outFormat = getFileFormat(outFile) if outFormat == FILE_FORMATS.BAM: pass # Nothing to be done if outFormat == FILE_FORMATS.SAM: logging.info("OutputService: Genearte the output SAM file.") logging.debug("OutputService: Move %s as %s", inSam, outFile) try: shutil.move(real_ppath(inSam), real_ppath(outFile)) except shutil.Error as e: output, errCode, errMsg = "", 1, "Exited with error: " + str(e) logging.error(errMsg) raise RuntimeError(errMsg) elif outFormat == FILE_FORMATS.CMP: errMsg = "pbalign no longer supports CMP.H5 Output in 3.0." logging.error(errMsg) raise IOError(errMsg) elif outFormat == FILE_FORMATS.XML: logging.info("OutputService: Generating the output XML file %s %s", inSam, outFile) # Create {out}.xml, given {out}.bam outBam = str(outFile[0:-3]) + "bam" aln = None # FIXME This should really be more automatic if readType == "CCS": self._output_dataset_type = ConsensusAlignmentSet aln = self._output_dataset_type(real_ppath(outBam)) for res in aln.externalResources: res.reference = refFile aln.write(outFile) return output, errCode, errMsg
def _output(self, inSam, refFile, outFile, readType=None, smrtTitle=False): """Generate a sam or a cmp.h5 file. Input: inSam : an input SAM file. (e.g. fileName.filteredSam) refFile : the reference file. (e.g. fileName.targetFileName) outFile : the output SAM or CMP.H5 file. (i.e. fileName.outputFileName) readType: standard or cDNA or CCS (can be None if not specified) Output: output, errCode, errMsg """ output, errCode, errMsg = "", 0, "" if getFileFormat(outFile) == FILE_FORMATS.SAM: #`mv inSam outFile` logging.info("OutputService: Genearte the output SAM file.") logging.debug("OutputService: Move {src} as {dst}".format( src=inSam, dst=outFile)) try: shutil.move(real_ppath(inSam), real_ppath(outFile)) except shutil.Error as e: output, errCode, errMsg = "", 1, str(e) elif getFileFormat(outFile) == FILE_FORMATS.CMP: #`samtoh5 inSam outFile -readType readType logging.info("OutputService: Genearte the output CMP.H5 " + "file using samtoh5.") prog = "samtoh5" cmd = "samtoh5 {samFile} {refFile} {outFile}".format( samFile=inSam, refFile=refFile, outFile=outFile) if readType is not None: cmd += " -readType {0} ".format(readType) if smrtTitle: cmd += " -smrtTitle " # Execute the command line logging.debug("OutputService: Call \"{0}\"".format(cmd)) output, errCode, errMsg = backticks(cmd) if errCode != 0: errMsg = prog + " returned a non-zero exit status." + errMsg logging.error(errMsg) raise RuntimeError(errMsg) return output, errCode, errMsg