Ejemplo n.º 1
0
 def test4OnBitsInCommon(self):
     sz = 100
     bv1 = DataStructs.ExplicitBitVect(sz)
     bv2 = DataStructs.ExplicitBitVect(sz)
     for i in range(0, sz, 2):
         bv1.SetBit(i)
         if i < 3 * sz / 4:
             bv2.SetBit(i)
     self.failUnless(DataStructs.AllProbeBitsMatch(bv1, bv1.ToBinary()))
     self.failUnless(DataStructs.AllProbeBitsMatch(bv2, bv1.ToBinary()))
     self.failIf(DataStructs.AllProbeBitsMatch(bv1, bv2.ToBinary()))
     self.failUnless(DataStructs.AllProbeBitsMatch(bv2, bv2.ToBinary()))
Ejemplo n.º 2
0
def _molge(x, y):
    """Allows for substructure check using the >= operator (X has substructure Y -> X >= Y) by
  monkey-patching the __ge__ function 
  This has the effect that the pandas/numpy rowfilter can be used for substructure filtering (filtered = dframe[dframe['RDKitColumn'] >= SubstructureMolecule])
  """
    if x is None or y is None: return False
    if hasattr(x, '_substructfp'):
        if not hasattr(y, '_substructfp'):
            y._substructfp = _fingerprinter(y, True)
        if not DataStructs.AllProbeBitsMatch(y._substructfp, x._substructfp):
            return False
    return x.HasSubstructMatch(y)
Ejemplo n.º 3
0
    def test_basic(self):
        mol = Chem.MolFromSmiles("O=C1CCCCC1")
        tautomer_query = rdTautomerQuery.TautomerQuery(mol)
        self.assertEqual(2, len(tautomer_query.GetTautomers()))
        modified_bonds = tautomer_query.GetModifiedBonds()
        self.assertEqual(3, len(modified_bonds))
        modified_atoms = tautomer_query.GetModifiedAtoms()
        self.assertEqual(3, len(modified_atoms))

        target = Chem.MolFromSmiles("OC1=CCCC(CC)C1")
        self.assertTrue(
            target.HasSubstructMatch(tautomer_query.GetTemplateMolecule()))

        match = tautomer_query.IsSubstructOf(target)
        self.assertTrue(match)
        self.assertTrue(
            target.HasSubstructMatch(tautomer_query.GetTemplateMolecule()))
        #self.assertTrue(target.HasSubstructMatch(tautomer_query.GetTautomers()[1]))
        match = tautomer_query.GetSubstructMatch(target)
        self.assertEqual(7, len(match))

        matches = tautomer_query.GetSubstructMatches(target)
        self.assertEqual(1, len(matches))

        tautomer_matches = tautomer_query.GetSubstructMatchesWithTautomers(
            target)
        self.assertEqual(1, len(tautomer_matches))
        self.assertEqual(len(tautomer_matches[0][0]), 7)
        matching_tautomer = tautomer_matches[0][1]
        self.assertTrue(target.HasSubstructMatch(matching_tautomer))

        tautomer_fingerprint = tautomer_query.PatternFingerprintTemplate()
        target_fingerprint = rdTautomerQuery.PatternFingerprintTautomerTarget(
            target)
        matching_fingerprints = DataStructs.AllProbeBitsMatch(
            tautomer_fingerprint, target_fingerprint)
        self.assertTrue(matching_fingerprints)

        file = os.environ[
            'RDBASE'] + '/Code/GraphMol/MolStandardize/test_data/tautomerTransforms.in'
        tautomer_query2 = rdTautomerQuery.TautomerQuery(mol, file)
        self.assertEqual(2, len(tautomer_query.GetTautomers()))
Ejemplo n.º 4
0
logger.info(f'Results{len(ts)}: {t2-t1 : .2f} seconds')

for nm, qs, qfps in [('frags', frags, fragsfps), ('leads', leads, leadsfps),
                     ('pieces', pieces, piecesfps)]:
    logger.info(f'testing {nm} queries')
    t1 = time.time()
    nPossible = 0
    nTested = 0
    nFound = 0
    nErrors = 0
    for i, fragfp in enumerate(qfps):
        for j, mfp in enumerate(mfps):
            nPossible += 1
            if args.validateResults:
                matched = mols[j].HasSubstructMatch(qs[i])
                fpMatch = DataStructs.AllProbeBitsMatch(fragfp, mfp)
                if fpMatch:
                    nTested += 1
                if matched:
                    nFound += 1
                    if not fpMatch:
                        nErrors += 1
                        logger.error(f"ERROR: mol {j} query {i}")
            else:
                if DataStructs.AllProbeBitsMatch(fragfp, mfp):
                    nTested += 1
                    if mols[j].HasSubstructMatch(qs[i]):
                        nFound += 1
    t2 = time.time()
    ts.append(t2 - t1)
    logger.info(