Пример #1
0
def numpy_pp_fps(mols):
    """ Calculate Gobbi and Poppinger pharmacophore fingerprints and return them as numpy.ndarrays

    :param mols: {list} list of molecules (RDKit mols)
    :return: numpy array containing row-wise fingerprints for every molecule
    """
    feat_fact = ChemicalFeatures.BuildFeatureFactory()
    sig_fact = SigFactory(feat_fact, useCounts=False, minPointCount=2, maxPointCount=3)
    sig_fact.SetBins([(0, 2), (2, 4), (4, 6), (6, 8), (8, 100)])
    sig_fact.Init()
    return _rdk2numpy([Generate.Gen2DFingerprint(m, sig_fact) for m in mols if m])
Пример #2
0
 def getFactory(self):
     factory = SigFactory.SigFactory()
     factory.SetPatternsFromSmarts(['O', 'N'])
     factory.SetBins([(0, 2), (2, 5), (5, 8)])
     factory.SetMinCount(2)
     factory.SetMaxCount(3)
     return factory
Пример #3
0
 def setUp(self):
     fdefFile = os.path.join(RDConfig.RDCodeDir, 'Chem', 'Pharm2D',
                             'test_data', 'BaseFeatures.fdef')
     featFactory = ChemicalFeatures.BuildFeatureFactory(fdefFile)
     self.factory = SigFactory.SigFactory(featFactory, minPointCount=2, maxPointCount=3)
     self.factory.SetBins([(0, 2), (2, 5), (5, 8)])
     self.factory.Init()
Пример #4
0
def BuildSigFactory(options=None, fdefFile=None,
                    bins=[(2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 100)],
                    skipFeats=('LumpedHydrophobe', 'ZnBinder')):
    if options:
        fdefFile = options.fdefFile
    if not fdefFile:
        raise ValueError('bad fdef file')
    from rdkit.Chem import ChemicalFeatures
    from rdkit.Chem.Pharm2D import SigFactory
    featFactory = ChemicalFeatures.BuildFeatureFactory(fdefFile)
    sigFactory = SigFactory.SigFactory(featFactory, skipFeats=skipFeats, trianglePruneBins=False)
    sigFactory.SetBins(bins)
    return sigFactory
Пример #5
0
def get_cats_factory(features='cats', names=False):
    """ Get the feature combinations paired to all possible distances

    :param features: {str} which pharmacophore features to consider; available: ["cats", "rdkit"]
    :param names: {bool} whether to return an array describing the bits with names of features and distances
    :return: RDKit signature factory to be used for 2D pharmacophore fingerprint calculation
    """
    if features == 'cats':
        fdef = fdef_cats
    else:
        fdef = fdef_rdkit
    factory = ChemicalFeatures.BuildFeatureFactoryFromString(fdef)
    sigfactory = SigFactory.SigFactory(factory, useCounts=True, minPointCount=2, maxPointCount=2)
    sigfactory.SetBins([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10)])
    sigfactory.Init()
    if names:
        descs = [sigfactory.GetBitDescription(i) for i in range(sigfactory.GetSigSize())]
        return sigfactory, descs
    else:
        return sigfactory
Пример #6
0
def DefaultSigFactory(fdefFile=None,
                      minPointCount=2,
                      maxPointCount=3,
                      bins=[(2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8),
                            (8, 100)]):
    from rdkit.Chem.Pharm2D import SigFactory
    from rdkit.Chem import ChemicalFeatures
    if fdefFile is None:
        from rdkit import RDConfig
        import os.path
        fdefFile = os.path.join(RDConfig.RDDataDir, 'BaseFeatures.fdef')
    featFactory = ChemicalFeatures.BuildFeatureFactory(fdefFile, )
    factory = SigFactory.SigFactory(featFactory,
                                    skipFeats=('ZnBinder', 'LumpedHydrophobe'),
                                    minPointCount=minPointCount,
                                    maxPointCount=maxPointCount,
                                    trianglePruneBins=False)
    factory.SetBins(tuple(bins))
    factory.Init()
    return factory
Пример #7
0
def _exampleCode():
    import os
    from rdkit import RDConfig
    from rdkit.Chem import ChemicalFeatures
    from rdkit.Chem.Pharm2D import SigFactory, Generate

    fdefFile = os.path.join(RDConfig.RDCodeDir, 'Chem', 'Pharm2D', 'test_data',
                            'BaseFeatures.fdef')
    featFactory = ChemicalFeatures.BuildFeatureFactory(fdefFile)
    factory = SigFactory.SigFactory(featFactory)
    factory.SetBins([(1, 2), (2, 5), (5, 8)])
    factory.Init()

    mol = Chem.MolFromSmiles('OCC(=O)CCCN')
    sig = Generate.Gen2DFingerprint(mol, factory)
    print('onbits:', list(sig.GetOnBits()))

    _verbose = 0
    for bit in sig.GetOnBits():
        atoms = GetAtomsMatchingBit(factory, bit, mol)
        print('\tBit %d: ' % (bit), atoms)

    print('finished')
Пример #8
0
        break
    else:
      if _verbose: print 'Found one'
      # we found it
      protoPharm.sort()
      protoPharm = tuple(protoPharm)
      if protoPharm not in res:
        res.append(protoPharm)
        if justOne: break
  return res

if __name__ == '__main__':
  from rdkit import Chem
  from rdkit.Chem.Pharm2D import SigFactory,Generate
      
  factory = SigFactory.SigFactory()
  factory.SetBins([(1,2),(2,5),(5,8)])
  factory.SetPatternsFromSmarts(['O','N'])
  factory.SetMinCount(2)
  factory.SetMaxCount(3)
  sig = factory.GetSignature()
  
  mol = Chem.MolFromSmiles('OCC(=O)CCCN')
  Generate.Gen2DFingerprint(mol,sig)
  print 'onbits:',list(sig.GetOnBits())

  _verbose=0
  for bit in sig.GetOnBits():
    atoms = GetAtomsMatchingBit(sig,bit,mol)
    print '\tBit %d: '%(bit),atoms
Пример #9
0
from rdkit import Chem
from rdkit.Chem import ChemicalFeatures  # 2D PharmacoPhore FingerPrints
from rdkit.Chem import Pharm2D
from rdkit.Chem.Pharm2D import Generate
from rdkit.Chem.Pharm2D import SigFactory
from rdkit.Chem.Pharm2D import DefaultSigFactory
from rdkit import RDConfig
from rdkit import DataStructs
import os, sys

dataDir = os.path.join(RDConfig.RDCodeDir, 'Chem/Pharm2D/test_data')
featFact = ChemicalFeatures.BuildFeatureFactory(
    os.path.join(dataDir, 'BaseFeatures.fdef'))
print "########"
sigFact = SigFactory.SigFactory(featFact)
bins = tuple([(2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 100)])
sigFact.SetBins(bins)
sigFact.Init()


def calc_p4_fp(mol):
    fp = Generate.Gen2DFingerprint(mol, sigFact)
    return fp


def calc_tanimoto(fp1, fp2):
    tc = DataStructs.TanimotoSimilarity(fp1, fp2)
    return tc


if __name__ == "__main__":
Пример #10
0
 def setUp(self):
     self.factory = SigFactory.SigFactory()
     self.factory.SetPatternsFromSmarts(['O', 'N'])
     self.factory.SetBins([(0, 2), (2, 5), (5, 8)])
     self.factory.SetMinCount(2)
     self.factory.SetMaxCount(3)