Package rdkit :: Package Chem :: Package MolDb :: Module FingerprintUtils
[hide private]
[frames] | no frames]

Source Code for Module rdkit.Chem.MolDb.FingerprintUtils

  1  # $Id: FingerprintUtils.py 1647 2011-02-24 08:00:39Z glandrum $ 
  2  # 
  3  # Copyright (C) 2009 Greg Landrum 
  4  #  All Rights Reserved 
  5  # 
  6  import cPickle 
  7  from rdkit import DataStructs,Chem 
  8  from rdkit import Chem 
  9   
 10  similarityMethods={'RDK':DataStructs.ExplicitBitVect, 
 11                     'AtomPairs':DataStructs.IntSparseIntVect, 
 12                     'TopologicalTorsions':DataStructs.LongSparseIntVect, 
 13                     'Pharm2D':DataStructs.SparseBitVect, 
 14                     'Gobbi2D':DataStructs.SparseBitVect, 
 15                     'Morgan':DataStructs.UIntSparseIntVect 
 16                     } 
 17  supportedSimilarityMethods=similarityMethods.keys() 
18 19 20 -class LayeredOptions:
21 loadLayerFlags=0xFFFFFFFF 22 searchLayerFlags=0x7 23 minPath=1 24 maxPath=6 25 fpSize=1024 26 wordSize=32 27 nWords=fpSize//wordSize 28 @staticmethod
29 - def GetFingerprint(mol,query=True):
37 @staticmethod
38 - def GetWords(mol,query=True):
39 txt = LayeredOptions.GetFingerprint(mol,query=query).ToBitString() 40 words = [int(txt[x:x+32],2) for x in range(0,len(txt),32)] 41 return words
42 43 @staticmethod
44 - def GetQueryText(mol,query=True):
45 words = LayeredOptions.GetWords(mol,query=query) 46 colqs = [] 47 for idx,word in enumerate(words): 48 if not word: 49 continue 50 idx = idx+1 51 colqs.append('%(word)d&Col_%(idx)d=%(word)d'%locals()) 52 return ' and '.join(colqs)
53
54 55 56 -def BuildSigFactory(options=None,fdefFile=None, 57 bins=[(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(8,100)], 58 skipFeats=('LumpedHydrophobe','ZnBinder')):
59 if options: 60 fdefFile = options.fdefFile 61 if not fdefFile: 62 raise ValueError,'bad fdef file' 63 from rdkit.Chem import ChemicalFeatures 64 from rdkit.Chem.Pharm2D import SigFactory 65 featFactory = ChemicalFeatures.BuildFeatureFactory(fdefFile) 66 sigFactory = SigFactory.SigFactory(featFactory, 67 skipFeats=skipFeats, 68 trianglePruneBins=False) 69 sigFactory.SetBins(bins) 70 return sigFactory
71
72 -def BuildAtomPairFP(mol):
73 from rdkit.Chem.AtomPairs import Pairs 74 fp=Pairs.GetAtomPairFingerprintAsIntVect(mol) 75 fp._sumCache = fp.GetTotalVal() 76 return fp
77 -def BuildTorsionsFP(mol):
78 from rdkit.Chem.AtomPairs import Torsions 79 fp=Torsions.GetTopologicalTorsionFingerprintAsIntVect(mol) 80 fp._sumCache = fp.GetTotalVal() 81 return fp
82 -def BuildRDKitFP(mol):
83 fp=Chem.RDKFingerprint(mol,nBitsPerHash=1) 84 return fp
85 -def BuildPharm2DFP(mol):
86 global sigFactory 87 from rdkit.Chem.Pharm2D import Generate 88 try: 89 fp=Generate.Gen2DFingerprint(mol,sigFactory) 90 except IndexError: 91 print 'FAIL:',Chem.MolToSmiles(mol,True) 92 raise 93 return fp
94 -def BuildMorganFP(mol):
95 from rdkit.Chem import rdMolDescriptors 96 fp = rdMolDescriptors.GetMorganFingerprint(mol,2) 97 fp._sumCache = fp.GetTotalVal() 98 return fp
99
100 -def DepickleFP(pkl,similarityMethod):
101 try: 102 klass=similarityMethods[similarityMethod] 103 fp = klass(pkl) 104 except: 105 import traceback 106 traceback.print_exc() 107 fp = cPickle.loads(pkl) 108 return fp
109