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)
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