Ejemplo n.º 1
0
 def testCountBounds(self):
     m = Chem.MolFromSmiles(
         'COc1ccc(CCNC(=O)c2ccccc2C(=O)NCCc2ccc(OC)cc2)cc1')
     fp1 = rdFingerprintGenerator.GetRDKitFPGenerator(
         fpSize=2048, countSimulation=True).GetFingerprint(m)
     fp2 = rdFingerprintGenerator.GetRDKitFPGenerator(
         fpSize=2048, countSimulation=True,
         countBounds=(1, 8, 16, 32)).GetFingerprint(m)
     self.assertNotEqual(fp1.GetNumOnBits(), fp2.GetNumOnBits())
     fp1 = rdFingerprintGenerator.GetTopologicalTorsionGenerator(
         fpSize=2048, countSimulation=True).GetFingerprint(m)
     fp2 = rdFingerprintGenerator.GetTopologicalTorsionGenerator(
         fpSize=2048, countSimulation=True,
         countBounds=(1, 8, 16, 32)).GetFingerprint(m)
     self.assertNotEqual(fp1.GetNumOnBits(), fp2.GetNumOnBits())
     fp1 = rdFingerprintGenerator.GetMorganGenerator(
         fpSize=2048, countSimulation=True).GetFingerprint(m)
     fp2 = rdFingerprintGenerator.GetMorganGenerator(
         fpSize=2048, countSimulation=True,
         countBounds=(1, 8, 16, 32)).GetFingerprint(m)
     self.assertNotEqual(fp1.GetNumOnBits(), fp2.GetNumOnBits())
     fp1 = rdFingerprintGenerator.GetAtomPairGenerator(
         fpSize=2048, countSimulation=True).GetFingerprint(m)
     fp2 = rdFingerprintGenerator.GetAtomPairGenerator(
         fpSize=2048, countSimulation=True,
         countBounds=(1, 8, 16, 32)).GetFingerprint(m)
     self.assertNotEqual(fp1.GetNumOnBits(), fp2.GetNumOnBits())
Ejemplo n.º 2
0
  def testNumBitsPerFeature(self):
    m1 = Chem.MolFromSmiles('CCCO')
    g = rdFingerprintGenerator.GetRDKitFPGenerator(minPath=1, maxPath=2)
    fp = g.GetFingerprint(m1)
    self.assertEqual(fp.GetNumOnBits(), 8)

    g = rdFingerprintGenerator.GetRDKitFPGenerator(minPath=1, maxPath=2, numBitsPerFeature=1)
    fp = g.GetFingerprint(m1)
    self.assertEqual(fp.GetNumOnBits(), 4)
Ejemplo n.º 3
0
def make_fp_generator(fp_type, settings):
    if fp_type == 'morgan':
        arguments = {'includeChirality': True}
        for arg in settings:
            arguments[arg] = settings[arg]
        fp_gen = rdFingerprintGenerator.GetMorganGenerator(**arguments)

    elif fp_type == 'atom_pair':
        arguments = {'includeChirality': True}
        for arg in settings:
            arguments[arg] = settings[arg]

        fp_gen = rdFingerprintGenerator.GetAtomPairGenerator(**arguments)

    elif fp_type == 'rdkit':
        arguments = {}
        for arg in settings:
            arguments[arg] = settings[arg]

        fp_gen = rdFingerprintGenerator.GetRDKitFPGenerator(**arguments)

    elif fp_type == 'toplogical':
        arguments = {'includeChirality': True}
        for arg in settings:
            arguments[arg] = settings[arg]
        fp_gen = rdFingerprintGenerator.GetTopologicalTorsionGenerator(
            **arguments)
    else:
        fp_gen = False

    return fp_gen
Ejemplo n.º 4
0
def generate_fingeprints(smiles):
    # Load these here so they're only needed on the worker machines.
    from rdkit import Chem
    from rdkit.Chem import rdFingerprintGenerator

    morgan_fp = ''
    rdkit_fp = ''
    atompair_fp = ''
    tt_fp = ''

    try:
        mol = Chem.MolFromSmiles(smiles)

        # Morgan
        morgan_fp = rdFingerprintGenerator.GetMorganGenerator().GetFingerprint(
            mol).ToBase64()

        # Feature Morgan
        # TODO

        # RDKit
        rdkit_fp = rdFingerprintGenerator.GetRDKitFPGenerator().GetFingerprint(
            mol).ToBase64()

        # Layered
        # TODO

        # Atom pairs
        atompair_fp = rdFingerprintGenerator.GetAtomPairGenerator(
        ).GetFingerprint(mol).ToBase64()

        # MACCS
        # TODO

        # Topological Torsion
        tt_fp = rdFingerprintGenerator.GetTopologicalTorsionGenerator(
        ).GetFingerprint(mol).ToBase64()

        # Pattern
        # TODO

        # E-state
        # TODO

    except Exception as e:
        print(f'Exception {e} processing {smiles}')
        return {}
    # NOTE: add any new fingerprints to fingerprint_columns.
    return {
        'morgan_fp': morgan_fp,
        'rdkit_fp': rdkit_fp,
        'atompair_fp': atompair_fp,
        'tt_fp': tt_fp
    }
Ejemplo n.º 5
0
def calculate_fingerprint(mol, method='morgan'):
    rdmol = to_rdkit_Mol(mol)
    rdmol.UpdatePropertyCache(strict = False)
    Chem.GetSymmSSSR(rdmol)
    Dict = {
        'rdkit': rdFingerprintGenerator.GetRDKitFPGenerator(fpSize=64),
        'morgan': rdFingerprintGenerator.GetMorganGenerator(fpSize=64),
        'topological-torsion': rdFingerprintGenerator.GetTopologicalTorsionGenerator(fpSize=64),
        'atom-pairs': rdFingerprintGenerator.GetAtomPairGenerator(fpSize=64),
    }
    rep = []
    fp = [Dict[method].GetFingerprint(rdmol, fromAtoms=[i]) for i in range(len(mol.atoms))]
    for atomic_fp in fp:
        arr = np.zeros((1, ))
        DataStructs.ConvertToNumpyArray(atomic_fp, arr)
        rep.append(arr)
    return np.array(rep)
Ejemplo n.º 6
0
def _generate_fingerprints(mols):
    """
    Generate RDKit fingerprint from list of molecules.
    
    Parameters
    ----------
    mols : list of rdkit.Chem.rdchem.Mol
        List of molecules.
        
    Returns
    -------
    list of rdkit.DataStructs.cDataStructs.ExplicitBitVect
        List of fingerprints.
    """

    rdkit_gen = rdFingerprintGenerator.GetRDKitFPGenerator(maxPath=5)
    fingerprints = [rdkit_gen.GetFingerprint(mol) for mol in mols]

    return fingerprints
Ejemplo n.º 7
0
    def testBulk(self):
        m1 = Chem.MolFromSmiles('CCC')
        m2 = Chem.MolFromSmiles('OCCCCC')
        m3 = Chem.MolFromSmiles('CCCCC')

        g = rdFingerprintGenerator.GetAtomPairGenerator()
        results = rdFingerprintGenerator.GetSparseCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.AtomPairFP)
        self.assertEqual(results[0], g.GetSparseCountFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseCountFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetMorganGenerator(2)
        results = rdFingerprintGenerator.GetSparseCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.MorganFP)
        self.assertEqual(results[0], g.GetSparseCountFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseCountFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetRDKitFPGenerator()
        results = rdFingerprintGenerator.GetSparseCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.RDKitFP)
        self.assertEqual(results[0], g.GetSparseCountFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseCountFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetTopologicalTorsionGenerator()
        results = rdFingerprintGenerator.GetSparseCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.TopologicalTorsionFP)
        self.assertEqual(results[0], g.GetSparseCountFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseCountFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetAtomPairGenerator()
        results = rdFingerprintGenerator.GetSparseFPs(
            [m1, m2, m3], rdFingerprintGenerator.AtomPairFP)
        self.assertEqual(results[0], g.GetSparseFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetMorganGenerator(2)
        results = rdFingerprintGenerator.GetSparseFPs(
            [m1, m2, m3], rdFingerprintGenerator.MorganFP)
        self.assertEqual(results[0], g.GetSparseFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetRDKitFPGenerator()
        results = rdFingerprintGenerator.GetSparseFPs(
            [m1, m2, m3], rdFingerprintGenerator.RDKitFP)
        self.assertEqual(results[0], g.GetSparseFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetTopologicalTorsionGenerator()
        results = rdFingerprintGenerator.GetSparseFPs(
            [m1, m2, m3], rdFingerprintGenerator.TopologicalTorsionFP)
        self.assertEqual(results[0], g.GetSparseFingerprint(m1))
        self.assertEqual(results[1], g.GetSparseFingerprint(m2))
        self.assertEqual(results[2], g.GetSparseFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetAtomPairGenerator()
        results = rdFingerprintGenerator.GetCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.AtomPairFP)
        self.assertEqual(results[0], g.GetCountFingerprint(m1))
        self.assertEqual(results[1], g.GetCountFingerprint(m2))
        self.assertEqual(results[2], g.GetCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetMorganGenerator(2)
        results = rdFingerprintGenerator.GetCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.MorganFP)
        self.assertEqual(results[0], g.GetCountFingerprint(m1))
        self.assertEqual(results[1], g.GetCountFingerprint(m2))
        self.assertEqual(results[2], g.GetCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetRDKitFPGenerator()
        results = rdFingerprintGenerator.GetCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.RDKitFP)
        self.assertEqual(results[0], g.GetCountFingerprint(m1))
        self.assertEqual(results[1], g.GetCountFingerprint(m2))
        self.assertEqual(results[2], g.GetCountFingerprint(m3))
        self.assertEqual(len(results), 3)

        g = rdFingerprintGenerator.GetTopologicalTorsionGenerator()
        results = rdFingerprintGenerator.GetCountFPs(
            [m1, m2, m3], rdFingerprintGenerator.TopologicalTorsionFP)
        self.assertEqual(results[0], g.GetCountFingerprint(m1))
        self.assertEqual(results[1], g.GetCountFingerprint(m2))
        self.assertEqual(results[2], g.GetCountFingerprint(m3))
        self.assertEqual(len(results), 3)
Ejemplo n.º 8
0
 def testRDKitFPGenerator(self):
     m = Chem.MolFromSmiles('CCCCC')
     g = rdFingerprintGenerator.GetRDKitFPGenerator()
     fp = g.GetSparseCountFingerprint(m)
     nz = fp.GetNonzeroElements()
     self.assertEqual(len(nz), 8)