基于RDKit 获取分子指纹

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

具体操作见下

from rdkit import Chem
from rdkit.Chem import MACCSkeysmolecule = 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 MACCSkeysmolecule = 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

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

  1. Django 2入门教程:利用GoormIDE和Bootstrap 4开发旅游博客

    原版书名:<Django 2.1 Tutorial : Build a Travel Blog with GoormIDE and Bootstrap 4 (Tutorial Project)& ...

  2. 实战教程!利用Python获取数据,并在地图上批量标注

    我们想要在地图上批量标注某一类的大量点位,该怎么操作呢?没有它的坐标数据,就没有办法批量标注.今天给大家介绍下,来自图新地球用户王泽的原创教程--利用Python获取数据,并在地图上批量标注的方法! ...

  3. 【Power Automate系列教程】利用API获取JSON数据定时每日自动写入List

    利用API获取JSON数据定时每日自动写入List 在知识星球的后台有个看数据的界面: 通过简单的抓包可以看到是个json数据,那么就有了想法! 获取到请求的api,发现规律: https://api ...

  4. 查询用户所有信息后只需要两个字段的信息_Excel VBA+ADO+SQL入门教程023:OpenSchema获取表信息...

    点上方关注我们,每日1练,每天进步一点点  1. 我们在使用SQL语言对数据库数据进行查询之前,有时需要获取每张表的表名,甚至获取每张表每个字段的名称等:比如,当我们进行跨工作簿数据查询及汇总时,在不 ...

  5. python3怎么做爬虫_Python爬虫入门教程 53-100 Python3爬虫获取三亚天气做旅游参照...

    爬取背景 这套课程虽然叫爬虫入门类课程,但是里面涉及到的点是非常多,十分检验你的基础掌握的牢固程度,代码中的很多地方都是可以细细品味的. 为什么要写这么一个小东东呢,因为我生活在大河北,那雾霾醇厚的很 ...

  6. Packet Tracer 思科模拟器入门教程 之七 利用三层交换机实现VLAN间路由

    实验目标 掌握交换机Tag VLAN的配置 掌握三层交换机基本配置方法: 掌握三层交换机VLAN路由的配置方法: 通过三层交换机实现VLAN间相互通信: 实验背景 某企业有两个主要部门,技术部和销售部 ...

  7. 青岛新媒体运营教程:利用诱饵获取群流量

    又因为互联网的广泛性,使流量的大小已经不是最为重要的问题了,现在更重要的是流量的精度,越精准的流量就越能被我们转化成资源.大叔这一系列被动引流. 互联网的电商还是传统的零售,其中最核心的商业逻辑还都是 ...

  8. Windows Server入门系列32 利用SamInside获取系统密码Hash值

    如果希望破解远程系统的用户密码,那么就需要首先从远程系统的SAM文件中读取出密码Hash值,然后在本地通过LC5之类的软件进行破解. 获取系统密码Hash值的软件很多,比如GetHashes和SamI ...

  9. SU插件情报局 | Skatter 自然散射 入门教程(附插件获取)

    作者:活力网Andrew 同学们大家好! 活力网 SU插件情报局 一周一更又来了! 我们这期要讲的插件就是 中文名:自然散射 他是SketchUp圈中最知名的插件之一 当然呐 你也可以把之一去掉 说他 ...

最新文章

  1. 六十八、完成Vue项目推荐和周末游组件,并使用Ajax发起ajax请求
  2. 技术创业需胆识 谈IT技术人员的创业 (http://www.cnblogs.com/dudu/archive/2007/05/27/761740.html)...
  3. 计算机科学研究生规划,2019计算机考研备考:计算机科学与技术研究方向及复习规划...
  4. 2019上半年这10本新书,技术大牛们都在追着看
  5. 在线求CR,你觉得我这段Java代码还有优化的空间吗?
  6. HDOJ2035 人见人爱A^B
  7. typedef 浅析
  8. 快播王欣:区块链今天最重要的成果还只是理念布道
  9. Vue 3.0 Beta
  10. 2021-2025年中国主动脉内球囊反搏装置行业市场供需与战略研究报告
  11. 出现 Request Entity Too Large问题的解决方法
  12. .hpp文件_16、OpenCV读写XML和YML文件
  13. OSI七层参考模型、TCP/IP参考模型、数据封装与解封装、TCP三次握手四次挥手及面试题
  14. web.xml中配置spring的几种方式
  15. PS图层蒙版、参考线显示边距、盖印图层
  16. CSS3相比CSS新增哪些功能
  17. 美团校招,百度校招经历
  18. 内存错误分析工具----asan(AddressSanitizer)的介绍和使用
  19. 【Linux】深入解析Linux proc文件系统
  20. 2019-01-09 工作日志:记录web3连接 respon

热门文章

  1. 车载诊断数据库ODX——ODX参数解析类型(上)
  2. 51中断优先级及中断嵌套
  3. java获取指定周的第一天和最后一天(周统计报表)
  4. [问题已处理]-helm提示kubernetes configuration file is group-readable
  5. iPhone13充电宝选哪个?最适合iPhone13的充电宝品牌
  6. 同花顺选股python开发_Funcat 将同花顺、通达信等的公式写法移植到了 Python 中
  7. [运放滤波器]4_积分微分电路
  8. day9-数据库操作与Paramiko模块
  9. python-import自己的写的文件
  10. 文件篮的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告