def run(self):
        cmd = self.args.subCommand
        try:
            if cmd == 'merge':
                cmpH5Merge(self.args.inCmps, self.args.outCmp, self.args.referencesFile)

            elif cmd == 'sort':
                cmpH5Sort(self.args.inCmp, self.args.outCmp, self.args.tmpdir,
                          deep = self.args.deepsort,
                          useNative = not self.args.usePythonIndexer,
                          inPlace = self.args.inPlace)

            elif cmd == 'select':
                cmpH5Select(self.args.inCmp, self.args.outCmp,
                            idxs = self.args.idxs, whereStr = self.args.where,
                            groupByStr = self.args.groupBy,
                            groupByCsv = self.args.groupByCsv,
                            outDir = self.args.outDir)

            elif cmd == 'stats':
                cmpH5Stats(self.args.inCmp, 
                           whatStr = self.args.what, 
                           whereStr = self.args.where,
                           groupByStr = self.args.groupBy, 
                           sortByStr = self.args.sortBy,
                           limit     = self.args.limit,
                           outFile =  self.args.outCsv)

            elif cmd == 'listMetrics':
                print '--- Metrics:'
                print "\t\n".join(DocumentedMetric.list())
                print '\n--- Statistics:'
                print "\t\n".join(DocumentedStatistic.list())

            elif cmd == 'equal':
                ret = cmpH5Equal(self.args.inCmp1, self.args.inCmp2)
                if not ret[0]:
                    print >> sys.stderr, ret[1]
                    return 1
                else:
                    return 0

            elif cmd == 'summarize':
                for inCmp in self.args.inCmps:
                    print "".join(["-"] * 40)
                    print cmpH5Summarize(inCmp)

            elif cmd == 'validate':
                if cmpH5Validate(self.args.inCmp):
                    return 0
                else:
                    return 1
            else:
                raise PBH5ToolsException("", "Unkown command passed to cmph5tools.py:" +
                                         self.args.subName)
            return 0

        except PBH5ToolsException as pbe:
            logging.exception(pbe)
            return 1
    def test_basic(self):

        b1 = 'F_42--R_42'
        b2 = 'F_28--R_28'

        where = "(Barcode == '{b1}') | (Barcode == '{b2}')".format(b1=b1,
                                                                   b2=b2)
        outFile = self._getTempFile(suffix="_.cmp.h5")
        # this interface doesn't really make sense. The outFile is required,
        # but it is never used.
        cmpH5Select(_CMP_H5,
                    outFile,
                    groupByStr="Barcode",
                    whereStr=where,
                    outDir=self.dirName)

        #n = _getNAlignments(outFile)
        #self.assertEqual(n, 85)

        nalignmentsTuple = [(b1, 76), (b2, 9)]
        for b, nalignments in nalignmentsTuple:
            p = os.path.join(self.dirName, b + ".cmp.h5")
            self.assertTrue(os.path.exists(p),
                            "Unable to find {b}".format(b=p))
            n = _getNAlignments(p)
            _d = dict(n=n, m=nalignments, p=p)
            msg = "Incorrect alignments (got {n} expected {m} ) from {p}".format(
                **_d)
            self.assertEqual(n, nalignments, msg)
    def test_basic(self):

        b1 = 'F_42--R_42'
        b2 = 'F_28--R_28'

        where = "(Barcode == '{b1}') | (Barcode == '{b2}')".format(b1=b1, b2=b2)
        outFile = self._getTempFile(suffix="_.cmp.h5")
        # this interface doesn't really make sense. The outFile is required,
        # but it is never used.
        cmpH5Select(_CMP_H5, outFile, groupByStr="Barcode",
                    whereStr=where, outDir=self.dirName)

        #n = _getNAlignments(outFile)
        #self.assertEqual(n, 85)

        nalignmentsTuple = [(b1, 76), (b2, 9)]
        for b, nalignments in nalignmentsTuple:
            p = os.path.join(self.dirName, b + ".cmp.h5")
            self.assertTrue(os.path.exists(p), "Unable to find {b}".format(b=p))
            n = _getNAlignments(p)
            _d = dict(n=n, m=nalignments, p=p)
            msg = "Incorrect alignments (got {n} expected {m} ) from {p}".format(**_d)
            self.assertEqual(n, nalignments, msg)
Example #4
0
    def run(self):
        cmd = self.args.subCommand
        try:
            if cmd == 'merge':
                cmpH5Merge(self.args.inCmps, self.args.outCmp,
                           self.args.referencesFile)

            elif cmd == 'sort':
                cmpH5Sort(self.args.inCmp,
                          self.args.outCmp,
                          self.args.tmpdir,
                          deep=self.args.deepsort,
                          useNative=not self.args.usePythonIndexer,
                          inPlace=self.args.inPlace)

            elif cmd == 'select':
                cmpH5Select(self.args.inCmp,
                            self.args.outCmp,
                            idxs=self.args.idxs,
                            whereStr=self.args.where,
                            groupByStr=self.args.groupBy,
                            groupByCsv=self.args.groupByCsv,
                            outDir=self.args.outDir)

            elif cmd == 'stats':
                cmpH5Stats(self.args.inCmp,
                           whatStr=self.args.what,
                           whereStr=self.args.where,
                           groupByStr=self.args.groupBy,
                           sortByStr=self.args.sortBy,
                           limit=self.args.limit,
                           outFile=self.args.outCsv)

            elif cmd == 'listMetrics':
                print '--- Metrics:'
                print "\t\n".join(DocumentedMetric.list())
                print '\n--- Statistics:'
                print "\t\n".join(DocumentedStatistic.list())

            elif cmd == 'equal':
                ret = cmpH5Equal(self.args.inCmp1, self.args.inCmp2)
                if not ret[0]:
                    print >> sys.stderr, ret[1]
                    return 1
                else:
                    return 0

            elif cmd == 'summarize':
                for inCmp in self.args.inCmps:
                    print "".join(["-"] * 40)
                    print cmpH5Summarize(inCmp)

            elif cmd == 'validate':
                if cmpH5Validate(self.args.inCmp):
                    return 0
                else:
                    return 1
            else:
                raise PBH5ToolsException(
                    "", "Unkown command passed to cmph5tools.py:" +
                    self.args.subName)
            return 0

        except PBH5ToolsException as pbe:
            logging.exception(pbe)
            return 1