化學指紋識別是一種將繪制的分子轉(zhuǎn)換為0和1位的流的方法聊训。舊指紋類型是MACCS密鑰,由前MDL開發(fā)恢氯,作為在分子數(shù)據(jù)庫中進行子結(jié)構(gòu)篩選的快速方法带斑。公共版本包含166個鍵,即166 0和1勋拟,其中每個鍵對應(yīng)于特定的分子特征勋磕,例如存在羰基(鍵154:('[#6] = [#8]',0)指黎,RDkit中的#C = O.實現(xiàn)).RDkit中可用的另一種指紋是摩根型指紋朋凉,它是一種圓形指紋。每個原子的環(huán)境和連通性被分析到給定的半徑醋安,并且每種可能性都被編碼。通常使用散列算法將很多可能性壓縮到預(yù)定長度墓毒,例如1024吓揪。因此,圓形指紋是原子類型和分子連通性的系統(tǒng)探索所计,而MACCS鍵依賴于要匹配的預(yù)定義分子特征柠辞。
#!/usr/bin/python3
# In[1]:
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import MACCSkeys
from rdkit.Chem import DataStructs
# In[2]:
mol = Chem.MolFromSmiles('CCCN')
mol2 = Chem.MolFromSmiles('CCCO')
# In[3]:
fp1 = MACCSkeys.GenMACCSKeys(mol)
# In[4]:
print (fp1.ToBitString())
# out[4]:
00000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000001000100000010011001000000000000000000000000000010001010100101100000
# In[5]:
fp1_morgan = AllChem.GetMorganFingerprint(mol,2)
# In[6]:
print (fp1_morgan.GetLength())
# out[6]:
4294967295
# In[7]:
fp1_morgan_hashed = AllChem.GetMorganFingerprintAsBitVect(mol,2,nBits=1024)
# In[8]:
fp1_morgan_hashed.ToBitString()
# out[8]:
'0000000000000000000000100000000001000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000'
# In[9]:
fp2 = MACCSkeys.GenMACCSKeys(mol2)
# In[10]:
print (fp2.ToBitString())
# out[10]:
00000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000100001000011001000000000000010000001000000010000010101001000100
# In[11]:
fp2_morgan = AllChem.GetMorganFingerprint(mol2,2)
# In[12]:
print (fp2_morgan.GetLength())
# out[12]:
4294967295
# In[13]:
fp2_morgan_hashed = AllChem.GetMorganFingerprintAsBitVect(mol2,2,nBits=1024)
# out[13]:
'0000000000000000000000000000000001000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
# In[14]:
fp2_morgan_hashed.ToBitString()
# In[15]:
DataStructs.FingerprintSimilarity(fp1,fp2)
# out[15]:
0.45
# In[16]:
DataStructs.FingerprintSimilarity(fp1_morgan_hashed,fp2_morgan_hashed)
# out[16]:
0.3333333333333333
https://blog.csdn.net/u012325865/article/details/81784517
DrugAI