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

Source Code for Module rdkit.Chem.MolDb.FingerprintUtils

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