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])
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
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()
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
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
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
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')
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
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__":
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)