Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何利用RDKit计算微笑结构列表的分子指纹和相似性?

如何利用RDKit计算微笑结构列表的分子指纹和相似性?
EN

Stack Overflow用户
提问于 2018-08-03 17:15:22
回答 1查看 12.6K关注 0票数 4

我用RDKit计算了两个微笑结构的分子列表之间的分子相似度。现在,我能够从两个单独的csv文件中提取微笑结构。我想知道如何将这些结构放入RDKit中的指纹模块,以及如何计算两个分子列表之间的相似性。

代码语言:javascript
运行
AI代码解释
复制
from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
ms = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO'), ... Chem.MolFromSmiles('COC')]
fps = [FingerprintMols.FingerprintMol(x) for x in ms]
DataStructs.FingerprintSimilarity(fps[0],fps[1])

我想把我所有的微笑结构(超过10,000)放到“女士”名单中,并得到他们的指纹。然后比较两个列表中每对分子之间的相似性,也许这里需要一个for循环?

提前感谢!

我使用熊猫数据格式来选择和打印带有结构的列表,并将列表保存到list_1和list_2中。当它运行到ms1行时,它会出现以下错误:

代码语言:javascript
运行
AI代码解释
复制
TypeError: No registered converter was able to produce a C++ rvalue of type std::__cxx11::basic_string<wchar_t, 
std::char_traits<wchar_t>, std::allocator<wchar_t> > from this Python object of type float

然后我检查了文件,在微笑栏里只有微笑。但是当我手动将一些分子结构放到测试列表中时,仍然存在一些错误

代码语言:javascript
运行
AI代码解释
复制
fpArgs['minSize']. 

例如,小枝酰胺的微笑是"O=C1O-234567O=C(CN2(CCN3(CC(O-4)=O)CCN5(CC(=O6)NC)CC(=O)O-7)C1)NC",,错误代码如下(运行fps行时):

代码语言:javascript
运行
AI代码解释
复制
ArgumentError: Python argument types in
rdkit.Chem.rdmolops.RDKFingerprint(NoneType, int, int, int, int, int, float, int)
did not match C++ signature:
RDKFingerprint(RDKit::ROMol mol, unsigned int minPath=1, 
unsigned int maxPath=7, unsigned int fpSize=2048, unsigned int nBitsPerHash=2, 
bool useHs=True, double tgtDensity=0.0, unsigned int minSize=128, bool branchedPaths=True, 
bool useBondOrder=True, boost::python::api::object atomInvariants=0, boost::python::api::object fromAtoms=0, 
boost::python::api::object atomBits=None, boost::python::api::object bitInfo=None).

如果原始csv文件如下所示,如何在输出文件中包括分子名称以及相似度值:

名字,微笑,价值,value2

molecule1,CCOCN(C)(C),0.25,A

molecule2,CCO,1.12,B

molecule3,COC,2.25,C

我添加了这些代码,以便在输出文件中包含分子名称,这是一些有关名称的数组值错误(特别是对于d2):

代码语言:javascript
运行
AI代码解释
复制
name_1 = df_1['id1']
name_2 = df_2['id2']
name_3 = pd.concat([name_1, name_2])
# create a list for the dataframe
d1, qu, d2, ta, sim = [], [], [], [], []
for n in range(len(fps)-1): 
    s = DataStructs.BulkTanimotoSimilarity(fps[n], fps[n+1:]) 
    #print(c_smiles[n], c_smiles[n+1:])
    for m in range(len(s)):
        qu.append(c_smiles[n])
        ta.append(c_smiles[n+1:][m])
        sim.append(s[m])
        d1.append(name_3[n])
        d2.append(name_3[n+1:][m])
    #print()
d = {'ID_1':d1, 'query':qu, 'ID_2':d2, 'target':ta, 'Similarity':sim}
df_final = pd.DataFrame(data=d)
df_final = df_final.sort_values('Similarity', ascending=False)
for index, row in df.iterrows():
    print (row["ID_1"], row["query"], row["ID_2"], row["target"], row["Similarity"])
print(df_final)
# save as csv
df_final.to_csv('RESULT_3.csv', index=False, sep=',')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 22:58:25

编辑了答案以捕捉所有评论.

RDKit具有很大的相似性功能,因此您可以将一个指纹与一个指纹列表进行比较。只需翻阅指纹清单。

如果CSV看起来像这样

第一个微笑无效的csv

代码语言:javascript
运行
AI代码解释
复制
smiles,value,value2
CCOCN(C)(C),0.25,A
CCO,1.12,B
COC,2.25,C

第二次正确微笑的csv

代码语言:javascript
运行
AI代码解释
复制
smiles,value,value2
CCOCC,0.55,D
CCCO,2.58,E
CCCCO,5.01,F

这是如何读出微笑,删除无效的,做指纹相似性没有重复和保存排序的值。

代码语言:javascript
运行
AI代码解释
复制
from rdkit import Chem
from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
import pandas as pd

# read and Conconate the csv's
df_1 = pd.read_csv('first.csv')
df_2 = pd.read_csv('second.csv')
df_3 = pd.concat([df_1, df_2])

# proof and make a list of SMILES
df_smiles = df_3['smiles']
c_smiles = []
for ds in df_smiles:
    try:
        cs = Chem.CanonSmiles(ds)
        c_smiles.append(cs)
    except:
        print('Invalid SMILES:', ds)
print()

# make a list of mols
ms = [Chem.MolFromSmiles(x) for x in c_smiles]

# make a list of fingerprints (fp)
fps = [FingerprintMols.FingerprintMol(x) for x in ms]

# the list for the dataframe
qu, ta, sim = [], [], []

# compare all fp pairwise without duplicates
for n in range(len(fps)-1): # -1 so the last fp will not be used
    s = DataStructs.BulkTanimotoSimilarity(fps[n], fps[n+1:]) # +1 compare with the next to the last fp
    print(c_smiles[n], c_smiles[n+1:]) # witch mol is compared with what group
    # collect the SMILES and values
    for m in range(len(s)):
        qu.append(c_smiles[n])
        ta.append(c_smiles[n+1:][m])
        sim.append(s[m])
print()

# build the dataframe and sort it
d = {'query':qu, 'target':ta, 'Similarity':sim}
df_final = pd.DataFrame(data=d)
df_final = df_final.sort_values('Similarity', ascending=False)
print(df_final)

# save as csv
df_final.to_csv('third.csv', index=False, sep=',')

打印出来的:

代码语言:javascript
运行
AI代码解释
复制
Invalid SMILES: CCOCN(C)(C)C

CCO ['COC', 'CCOCC', 'CCCO', 'CCCCO']
COC ['CCOCC', 'CCCO', 'CCCCO']
CCOCC ['CCCO', 'CCCCO']
CCCO ['CCCCO']

   query target  Similarity
9   CCCO  CCCCO    0.769231
2    CCO   CCCO    0.600000
1    CCO  CCOCC    0.500000
7  CCOCC   CCCO    0.466667
3    CCO  CCCCO    0.461538
8  CCOCC  CCCCO    0.388889
4    COC  CCOCC    0.333333
5    COC   CCCO    0.272727
0    CCO    COC    0.250000
6    COC  CCCCO    0.214286
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51681659

复制
相关文章
Rdkit实现分子指纹
Morgan Fingerprints (CircularFingerprints)
DrugScience
2021/02/04
2.5K0
RDKit:运用RDKit计算USRCAT(形状相似性)
USRCAT是基于形状的方法,它的工作速度非常快。代码是免费提供的,如果要使用代码,用户需要安装它。
DrugAI
2021/01/28
1.2K0
RDKit | 化学信息学与AI(专辑)
介绍RDKit相关知识点和运用以及RDKit作为处理化学、生物、药学和材料学科中分子数据作为可输入机器学习和深度学习模型的重要工具应用。内容涵盖了基于RDKit的Python3的分子的读写、化合物的分子指纹和分子描述符计算、化合物的2D/2D比对、化合物相似性搜索、化合物骨架分析和亚结构搜索、RMSD计算与构象生成优化、分子相似图与聚类分析、化学反应处理、可视化与化学空间探索及RDkit相关的机器学习、深度学习应用过程详解
DrugAI
2021/02/02
2.4K0
RDKit | 化学信息学与AI(专辑)
Milvus 赋能 AI 药物研发
新药研发领域长期以来都以耗时长、成本高、风险大、回报率低而著称,一款新药的平均研发成本已经高达 26 亿美元,而平均耗时需要十年。尽管付出了如此高昂的研发成本和漫长的研发周期,却依然无法保证所研发的药物能够顺利通过全部临床实验而投放市场。即便是难度较低的仿制药研发,其研发的进程也是十分缓慢。
Zilliz RDS
2020/05/24
1K0
AI医疗高精尖!基于AI的新药研发!⛵
人工智能作为一种新兴技术,是新药研发实现降本增效的重要方式之一,『人工智能+新药研发』成为国内外医药企业加速创新转型的重要驱动力,一个更快、更便宜、更有效的新药物研发时代已经到来。
ShowMeAI
2022/11/15
6980
AI医疗高精尖!基于AI的新药研发!⛵
开源化学信息学工具包(Open Access Cheminformatics Toolkits)
CDK是结构化学信息学和生物信息学的开源Java库。 该项目由Christoph Steinbeck,Egon Willighagen与Jmol和JChemPaint的开发人员Dan Gezelter于2000年发起。迄今为止,它是在科学界广泛支持下开展的最活跃的开源化学信息学项目之一。
DrugAI
2021/02/01
2.4K0
RDKit:计算不同小分子构象之间的RMSD
python isoRMSD.py mol1.pdb mol2.pdb rmsd.txt
DrugAI
2021/01/28
1.6K0
基于RDKit探索DrugBank(demo)
https://russodanielp.github.io/exploring-drugbank-using-rdkit.html
DrugAI
2021/01/28
8320
R语言之分子指纹(1)计算分子指纹及批量保存sdf格式
用DS2019读取这些sdf文件后,全部visible,然后保存为sdf格式,即可将所有小分子保存到一个sdf文件中。
用户1359560
2021/01/20
1.8K1
RDkit&mol2vec :靶标抑制剂活性二分类模型对比
RDKit提供各种功能,如不同的化学I/O格式,包括SMILES/SMARTS,结构数据格式(SDF),Thor数据树(TDT),Sybyl线符号(SLN),Corina mol2和蛋白质数据库(PDB)。子结构搜索; 标准SMILES; 手性支持;化学转化;化学反应;分子序列化;相似性/多样性选择;二维药效团;分层子图/片段分析; Bemis和Murcko骨架;逆合成组合分析程序(RECAP); 多分子最大共同亚结构;功能图;基于形状的相似性;基于RMSD的分子分子比对;基于形状的对齐;使用Open3-DALIGN算法的无监督分子-分子比对;与PyMOL进行3D可视化集成;功能组过滤;分子描述符库;相似图;机器学习等。
DrugAI
2021/01/29
1.2K0
Nat. Mach. Intell. | 利用条件循环神经网络生成特定性质分子
今天给大家介绍瑞士知名药企阿斯利康和伯尔尼大学的 Esben Jannik Bjerrum团队在Nature Machine Intelligence上的一篇论文。该研究提出基于分子SMILES表示的条件循环神经网络,输入目标性质,模型可直接生成具有对应性质的分子。
DrugAI
2021/02/01
6740
Nat. Mach. Intell. | 利用条件循环神经网络生成特定性质分子
图神经网络12-分子指纹GCN:Neural FPs
论文:Convolutional Networks on Graphs for Learning Molecular Fingerprints 图卷积网络用于学习分子指纹 链接:http://arxiv.org/pdf/1509.09292.pdf 作者:David Duvenaud†, Dougal Maclaurin†, Jorge Aguilera-Iparraguirre (哈佛大学) 来源:NIPS 2015 代码:https://github.com/HIPS/neural-fingerprint
致Great
2021/05/11
1.2K0
图神经网络12-分子指纹GCN:Neural FPs
Nat. Methods | MSNovelist:从质谱生成小分子结构的新方法
今天给大家介绍来自苏黎世联邦理工学院和耶拿弗里德里希-席勒-耶拿大学团队发表在Nature Methods上的文章,文章提出了一种基于encoder-decoder神经网络的从质谱生成小分子结构的新方法:MSNovelist,它首先使用SIRIUS和CSI:FingerID来分别从质谱中预测出分子的指纹和表达式,然后将其输入到一个基于encoder-decoder的RNN模型来生成分子的SMILES。作者使用来自Global Natural Product Social Molecular Networking网站上的3863个质谱数据集进行评估,MSNovelist重现出了61%的分子结构,这些重现的分子结构都是未在训练集中见过的;并且使用CASMI2016数据集进行了评估,MSNovelist重现了64%的分子结构。最后,本文将MSNovelist应用在苔藓植物质谱数据集上进行验证,结果表明MSNovelist非常适合在分析物类别和新化合物表现不佳的情况下注释质谱对应的分子。
DrugAI
2022/11/28
6680
Nat. Methods | MSNovelist:从质谱生成小分子结构的新方法
RDKit相关文章汇总
RDKit在2000-2006年期间在Rational Discovery开发和使用,用于构建吸收、分布、代谢、代谢、毒性和生物活性的预测模型。2006年6月Rational Discovery被关闭,但该工具包在BSD许可证下作为开源发布。目前,RDKit的开源开发由诺华积极贡献,其中包括诺华捐赠的源代码。
DrugAI
2021/02/01
5740
结构分析(4)化合物分子相似性
相似性原理(similar property principle)指出,总体相似的分子应具有相似的生物活性。
用户1359560
2021/01/29
2K1
JCIM|深度学习用于血液毒性预测和血液毒性化合物的结构分析
2022年12月6日,中南大学湘雅药学院曹东升教授团队和浙江大学药学院侯廷军教授团队合作在Journal of Chemical Information and Modeling期刊上发表论文“Structural Analysis and Prediction of Hematotoxicity Using Deep Learning Approaches”。
智药邦
2023/02/28
1.4K0
JCIM|深度学习用于血液毒性预测和血液毒性化合物的结构分析
DGL & RDKit | 基于GCN的多任务分类模型
纽约大学、纽约大学上海分校、AWS上海研究院以及AWS MXNet Science Team共同开源了一个面向图神经网络及图机器学习的全新框架,命名为Deep Graph Library(DGL)。
DrugAI
2021/02/01
2.1K1
J. Chem. Inf. Model. | 增强指纹图注意力网络(FinGAT)模型用于抗生素发现
今天为大家介绍的是来自JunJie Wee和Kelin Xia团队的一篇关于抗生素发现的论文。人工智能(AI)技术在改变抗生素发现行业方面具有巨大潜力。高效和有效的分子特征化是实现高准确性学习用于抗生素发现的模型的关键。作者提出了一种通过结合基于序列的2D指纹和基于结构的图表示的指纹增强的图注意力网络(FinGAT)模型。在特征学习过程中,序列信息转化为指纹向量,结构信息通过GAT模块编码为另一个向量。这两个向量被连接并输入到多层感知机(MLP)进行抗生素活性分类。模型经过广泛的测试并与现有模型进行比较。研究发现, FinGAT在抗生素发现中可以胜过各种最先进的GNN模型。
DrugAI
2023/09/19
3930
J. Chem. Inf. Model. | 增强指纹图注意力网络(FinGAT)模型用于抗生素发现
J Cheminform | SimVec:一种新型的基于知识图谱的药物副作用预测模型
2022年7月26日,来自JetBrains Research的Nina Lukashina等人[1]在Journal of Cheminfomatics上发表文章。文章提出了一种新方法SimVec,该方法通过使用结构感知的节点初始化和加权药物相似性边,来增强药物互相作用的知识图谱结构,并设计了一个新的三步学习过程,它迭代地更新了与副作用边缘,相似性边缘和有限知识的药物有关的节点嵌入。所提出的方法显著优于现有的模型。
智药邦
2022/11/16
5070
J Cheminform | SimVec:一种新型的基于知识图谱的药物副作用预测模型
RDKit:化合物相似性搜索
化合物相似性在化学信息学和药物发现中具有悠久的历史,许多计算方法采用相似度测定来鉴定研究的新化合物。
DrugAI
2021/01/28
1.3K0

相似问题

可以直接把储存在熊猫身上的微笑结构输入RDKit来计算分子指纹和相似性吗?

12

如何使用rdkit将微笑转换为指纹?

144

无法使用rdkit将分子转换为指纹

143

使用RDKit计算sdf文件和结构微笑之间的田本相似度?

113

RDkit指纹

116
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文