Ejemplo n.º 1
0
def matchRangePostQuery(query: FormulaRangeQuery):
    logger.debug("Got %r", query)
    qD = jsonable_encoder(query)
    logger.debug("qD %r", qD)
    # ---
    ccsw = ChemCompSearchWrapper()
    retStatus, matchResultL = ccsw.matchByFormulaRange(qD["query"],
                                                       qD["matchSubset"])
    logger.info("Results (%r) rL (%d)", retStatus, len(matchResultL))
    rL = [mr.ccId for mr in matchResultL]
    # ---
    return {"query": qD["query"], "matchedIdList": rL}
 def testZoomMatchFormula(self):
     """Test formula matching"""
     try:
         numMolsTest = self.__numMolsTest
         ccsw = ChemCompSearchWrapper()
         ok = ccsw.readConfig()
         self.assertTrue(ok)
         ok = ccsw.updateChemCompIndex(useCache=True)
         self.assertTrue(ok)
         ccIdx = ccsw.getChemCompIndex()
         #
         logger.debug("ccIdx (%d) keys %r entry %r", len(ccIdx),
                      list(ccIdx.keys())[:10], ccIdx["000"])
         #
         logger.info(
             "Dependencies loaded - Starting formula test scan of (limit=%r)",
             numMolsTest)
         for ii, (ccId, idxD) in enumerate(ccIdx.items(), 1):
             if numMolsTest and ii > numMolsTest:
                 break
             #
             startTime = time.time()
             elementRangeD = {
                 el: {
                     "min": eCount,
                     "max": eCount
                 }
                 for el, eCount in idxD["type-counts"].items()
             }
             retStatus, rL = ccsw.matchByFormulaRange(elementRangeD, ccId)
             mOk = self.__resultContains(ccId, rL)
             self.assertTrue(mOk)
             logger.info(
                 "%s (%d) (%d) (%r) (%.4f secs)",
                 ccId,
                 ii,
                 len(rL),
                 mOk and retStatus == 0,
                 time.time() - startTime,
             )
     except Exception as e:
         logger.exception("Failing with %s", str(e))
         self.fail()