RDKit入门教程(2)——利用RDKit获取分子指纹

基于RDKit 获取分子指纹

分子指纹(化学指纹,Chemical Fingerprinting):
将化学分子的特征利用二进制表示,如MDL公司开发的MACCSkeys指纹。
MACCSkeys共有166个特征,但是MACCSkeys总长度为167bits
第0位为占位符,第1~166位为分子特征位。

具体操作见下

from rdkit import Chem
from rdkit.Chem import MACCSkeys

molecule = Chem.MolFromSmiles('') # 当分子为空值时,fingerprints全为0
fingerprints = MACCSkeys.GenMACCSKeys(molecule)
print(fingerprints) # result 1
print(len(fingerprints.ToBitString())) # result 2
print(fingerprints.ToBitString()) # result 3

运行结果如下:

[1] result 1 : 
<rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x000001ECF1263F80>
[2] result 2 :
167
[3] result 3 :
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000

我们再以3-戊酮为例:

from rdkit import Chem
from rdkit.Chem import MACCSkeys

molecule = Chem.MolFromSmiles('CCC(=O)CC') # 3-戊酮
fingerprints = MACCSkeys.GenMACCSKeys(molecule)
print(fingerprints) # result 1
print(len(fingerprints.ToBitString())) # result 2
print(fingerprints.ToBitString()) # result 3

运行结果如下:

[1] result 1 : 
<rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x000001ECF1249490>
[2] result 2 :
167
[3] result 3 :
000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000
10100000000000000010000000000000000100101100001000100

除了第1位,后面2~167位:每个0和1的具体含义我的个人理解如下:
如有不正确之处,还请批评指正!

那么我们先看一下MACCSkeys166个特征具体是什么:

下为个人理解,非严谨翻译,需要后续更新请留言或私信

001 ISOTOPE # 存在同分异构体
002 103 < ATOMIC NO. < 256 #	 存在原子序号在103~256之间的元素
003 GROUP IVA,VA,VIA PERIODS 4-6 (Ge...)  # 存在第IVA,VA,VIA族的元素
004 ACTINIDE  # 存在锕系元素
005 GROUP IIIB,IVB (Sc...)  # 存在第IIIB,IVB族的元素
006 LANTHANIDE # 存在镧系元素
007 GROUP VB,VIB,VIIB (V...) # 存在第VB,VIB,VIIB族的元素
008 QAAA@1 
009 GROUP VIII (Fe...) 
010 GROUP IIA (ALKALINE EARTH) 
011 4M RING # 存在4员环
012 GROUP IB,IIB (Cu...) # 存在第IB,IIB族的元素
013 ON(C)C 
014 S-S # 存在二硫键
015 OC(O)O # 存在碳酸根
016 QAA@1 
017 CTC 
018 GROUP IIIA (B...) # 存在第IIIA族的元素
019 7M RING # 存在7员环
020 SI # 存在硅元素
021 C=C(Q)Q 
022 3M RING # 存在3员环
023 NC(O)O 
024 N-O # 存在N-O键
025 NC(N)N 
026 C$=C($A)$A 
027 I 
028 QCH2Q 
029 P 
030 CQ(C)(C)A 
031 QX 
032 CSN 
033 NS 
034 CH2=A 
035 GROUP IA (ALKALI METAL) 
036 S HETEROCYCLE 
037 NC(O)N 
038 NC(C)N 
039 OS(O)O 
040 S-O 
041 CTN 
042 F 
043 QHAQH 
044 OTHER 
045 C=CN 
046 BR 
047 SAN 
048 OQ(O)O 
049 CHARGE 
050 C=C(C)C 
051 CSO 
052 NN 
053 QHAAAQH 
054 QHAAQH 
055 OSO 
056 ON(O)C 
057 O HETEROCYCLE 
058 QSQ 
059 Snot%A%A 
060 S=O 
061 AS(A)A 
062 A$A!A$A 
063 N=O 
064 A$A!S 
065 C%N 
066 CC(C)(C)A 
067 QS 
068 QHQH (&...) 
069 QQH 
070 QNQ 
071 NO 
072 OAAO 
073 S=A 
074 CH3ACH3 
075 A!N$A 
076 C=C(A)A 
077 NAN 
078 C=N 
079 NAAN 
080 NAAAN 
081 SA(A)A 
082 ACH2QH 
083 QAAAA@1 
084 NH2 
085 CN(C)C 
086 CH2QCH2 
087 X!A$A 
088 S 
089 OAAAO 
090 QHAACH2A 
091 QHAAACH2A 
092 OC(N)C 
093 QCH3 
094 QN 
095 NAAO 
096 5M RING # 存在5员环
097 NAAAO 
098 QAAAAA@1 
099 C=C 
100 ACH2N 
101 8M RING # 存在8员环
102 QO 
103 CL 
104 QHACH2A 
105 A$A($A)$A 
106 QA(Q)Q 
107 XA(A)A 
108 CH3AAACH2A 
109 ACH2O 
110 NCO 
111 NACH2A 
112 AA(A)(A)A 
113 Onot%A%A 
114 CH3CH2A 
115 CH3ACH2A 
116 CH3AACH2A 
117 NAO 
118 ACH2CH2A > 1 
119 N=A 
120 HETEROCYCLIC ATOM > 1 (&...) 
121 N HETEROCYCLE 
122 AN(A)A 
123 OCO # 二氧化碳
124 QQ 
125 AROMATIC RING > 1 
126 A!O!A 
127 A$A!O > 1 (&...) 
128 ACH2AAACH2A 
129 ACH2AACH2A 
130 QQ > 1 (&...) 
131 QH > 1 
132 OACH2A 
133 A$A!N 
134 X (HALOGEN) 
135 Nnot%A%A 
136 O=A > 1 
137 HETEROCYCLE 
138 QCH2A > 1 (&...) 
139 OH # 存在羟基
140 O > 3 (&...) # 氧元素数量大于3
141 CH3 > 2 (&...) #甲基数量大于2
142 N > 1 # 氮元素数量大于1
143 A$A!O 
144 Anot%A%Anot%A 
145 6M RING > 1 # 6员环数量大于2
146 O > 2 # 氧元素数量大于2
147 ACH2CH2A 
148 AQ(A)A 
149 CH3 > 1 # 甲基数量大于1
150 A!A$A!A 
151 NH # 存在N-H单键(非三级胺)
152 OC(C)C 
153 QCH2A 
154 C=O # 存在C-O双键(羰基)
155 A!CH2!A 
156 NA(A)A 
157 C-O # 存在C-O单键
158 C-N # 存在C-N单键
159 O > 1 # 氧元素数量大于1
160 CH3 # 存在甲基
161 N # 存在N元素
162 AROMATIC # 存在芳香族
163 6M RING # 存在6员环
164 O # 存在氧元素
165 RING # 存在环
166 FRAGMENTS # 非标准的SMARTS格式


参考链接:http://www.mayachemtools.org/docs/modules/html/MACCSKeys.html

  • 14
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值