rdkit、mordred分子描述计算molecular descriptors、Lipinski
参考:
https://zhuanlan.zhihu.com/p/349670859
https://github.com/gashawmg/molecular-descriptors/blob/main/Molecular%20descriptors.ipynb
知识:simles 格式
1.原子用在方括号内的化学元素符号表示。
例如[Au]表示“金”,氢氧根离子是[OH-]。
有机物中的C、N、O、P、S、Br、Cl、I等原子可以省略方括号,其他元素必须包括在方括号之内。
2.氢原子常被省略。
对于省略了方括号的原子,用氢原子补足价数。
例如,水的SMILES就是O,乙醇是CCO。
3.双键用“=”表示;三键用“#”表示。
含有双键的二氧化碳则表示为O=C=O,含有三键的氰化氢表示为C#N。
4.如果结构中有环,则要打开。断开处的两个原子用同一个数字标记,表示原子间有键相连。
环己烷(C6H12)表示为C1CCCCC1。需要注意,标志应该是数字(在此例中为1)而不是“C1”这个组合。扩展的表示是(C1)-(C)-(C)-(C)-(C)-(C)-1而不是(C1)-(C)-(C)-(C)-(C)-(C)-(C1)。
5.芳环中的C、O、S、N原子分别用小写字母c,o,s,n表示。
6.碳链上的分支用圆括号表示。
比如丙酸表示为CCC(=O)O,FC(F)F或者C(F)(F)F表示三氟甲烷。
7. 在芳香结构中的N原子上连有一个H原子,用[nH]表示
8. 用@和@@表示手性
rdkit、mordred分子描述计算molecular descriptors
rdkit
mordred :具体参数说明链接:https://mordred-descriptor.github.io/documentation/master/descriptors.html
from rdkit.Chem import AllChem
from rdkit import Chem
from rdkit.Chem import Descriptors
from rdkit.ML.Descriptors import MoleculeDescriptors# https://pandas.pydata.org
import pandas as pd# https://numpy.org/doc/stable/release.html
import numpy as np#https://github.com/mordred-descriptor/mordred
from mordred import Calculator, descriptors### data.csv 案例分子
dataset = pd.read_csv("./data.csv")
dataset.shape## canonical_smiles主要把同一个分子的不同simles表示统一成一个
def canonical_smiles(smiles):mols = [Chem.MolFromSmiles(smi) for smi in smiles] smiles = [Chem.MolToSmiles(mol) for mol in mols]return smiles# 转化成统一simles和去重
Canon_SMILES = canonical_smiles(dataset.SMILES)
dataset['SMILES'] = Canon_SMILESdataset_new = dataset.drop_duplicates('SMILES')
rdkit计算 descriptors、Lipinski
##简单示例:
from rdkit.Chem import Descriptors
mm = Chem.MolFromSmiles('[*]C(=O)O') #[6*]C(=O)Ologp=Descriptors.MolLogP(mm)
logpmol_weight = Descriptors.MolWt(mm)
mol_weightheavy_atom_count = Descriptors.HeavyAtomCount(mm)
heavy_atom_countpolar_Surface_area = Descriptors.TPSA(mm)
polar_Surface_areafrom rdkit.Chem import Lipinskirotatable_bond = Lipinski.NumRotatableBonds(mm)
rotatable_bondhydrogen_bond_Acceptor_count = Lipinski.NumHAcceptors(mm)
hydrogen_bond_Acceptor_counthydrogen_bond_donor_count = Lipinski.NumHDonors(mm)
hydrogen_bond_donor_count
这是获取descriptors200个特征名称
calc = MoleculeDescriptors.MolecularDescriptorCalculator([x[0] for x in Descriptors._descList])desc_names = calc.GetDescriptorNames()
### RDkit_descriptors计算得出分子特征,200个def RDkit_descriptors(smiles):mols = [Chem.MolFromSmiles(i) for i in smiles] calc = MoleculeDescriptors.MolecularDescriptorCalculator([x[0] for x in Descriptors._descList])desc_names = calc.GetDescriptorNames()Mol_descriptors =[]for mol in mols:# add hydrogens to moleculesmol=Chem.AddHs(mol)# Calculate all 200 descriptors for each moleculedescriptors = calc.CalcDescriptors(mol)Mol_descriptors.append(descriptors)return Mol_descriptors,desc_names # Function call
Mol_descriptors,desc_names = RDkit_descriptors(dataset_new['SMILES'])df_with_200_descriptors = pd.DataFrame(Mol_descriptors,columns=desc_names)
df_with_200_descriptors
mordred计算
这是获取descriptors 1826个特征名称
descriptors_mord = {}
for i, desc in enumerate(Calculator(descriptors, ignore_3D=False).descriptors):descriptors_mord[desc.__str__()] = descdescriptors_mord
def All_Mordred_descriptors(data):calc = Calculator(descriptors, ignore_3D=False)mols = [Chem.MolFromSmiles(smi) for smi in data]# pandas dfdf = calc.pandas(mols)return dfmordred_descriptors = All_Mordred_descriptors(dataset_new['SMILES'])mordred_descriptors
rdkit、mordred分子描述计算molecular descriptors、Lipinski相关推荐
- RDKit|摩根分子指纹计算、提取与可视化
文章目录 一.摩根分子指纹计算 1.简介 2.SparseIntVects 3.ExplicitBitVects 4.FCFPs 5.更多泛化 二.摩根分子指纹提取 1.提取方法一 2.提取方法二 三 ...
- rdkit 分子性质描述符(Descriptors)
文章目录 一.引入所需库 二.性质描述符计算 三.原子对性质的贡献可视化 分子性质也被称为描述符. RDKit中内置了大量的分子描述符的计算方法, 这些方法主要位于 rdkit.Chem.Descri ...
- RDKit | 化合物芳香度分子描述符的计算与相关性比较
分子描述符是确定分子性质的指标. 本文想看看描述分子特性中侧重于" 化合物芳香度 "的描述符.随着交叉偶联反应的发展,将芳环引入分子变得更加容易.另一方面,已知具有多个芳环的化合物 ...
- RDKit | 通过Lipinski规则了解如何在RDKit中处理描述符
以Lipinski的为主题,学习RDKit如何处理表征分子特性的" 描述符 ". 描述符 描述符是确定分子性质的指标.当然,水的性质是水的溶解度和大小的性质,生物活 ...
- 底物的分子描述符计算及 CYP450 酶-底物选择性技术研究
本篇推文引自:基于网络的标签空间划分方法预测 CYP450 酶-底物选择性 1. 分子描述符计算 本文计算了四种类型的底物分子描述符并把他们当成 4 类特征表示用于机器学习建模,这 4 类特征 ...
- 计算分子描述符——使用E-Dragon
介绍 计算分子描述符(又称理论分子描述符)不需借助于任何实验信息,只需要分子的结构信息就可以计算出来,例如分子的组成,拓扑结构以及量子化学描述符等等.其优点是对化合物结构的描述更全面细致,物理化学意义 ...
- 分子生成中常见分子描述符介绍及代码实现
一.背景介绍 本文针对计算机辅助药物设计 (CADD)中的分子生成方向进行一下总结,主要内容是根据模型生成的分子理化性质检验,包括多种性质的定义.计算公式.评价指标及实现代码. 计算机辅助药物设计 ( ...
- rdkit 绘制分子【可视化分子】
rdkit 内置了Draw模块,用于绘图,把一些经常用到的方法直接放在Draw下面. 文章目录 一.引入所需库 二.分子对象转化为图片 2.1 分子对象转图片文件函数解析 2.2 分子对象转图片函数解 ...
- rdkit 读写分子操作
让计算机识别化学分子是计算化学的必备技能,也是对分子进行各种操作的基础. 文章目录 一.简介 二.读分子操作 2.1 引入所需库 2.2 读入smiles 2.3 读入mol文件 2.4 读入sdf文 ...
最新文章
- 和产品争论MySQL底层如何实现order by的,惨败!
- CentOS7.X的系统管理、安全设置及系统优化思路
- linux安装软件命令1003无标题,linux系统安装OFED(infiniband)
- 华为电脑c语言总是错误,关于华为机试题求代码!解决方法
- ASP.NET传统的三层架构
- java volatile lock_Java并发学习笔记 -- Java中的Lock、volatile、同步关键字
- 总结一下在ASP.NET中开发网站的一般步骤
- php仿微信界面设计,仿微信源码-泡泡IM
- 6. 单例模式有几种写法?
- 迈向新征程!2019国际第三代半导体大赛颁奖典礼盛大举办!
- Spring入门学习
- 细胞生长曲线拟合matlab,绘制细胞生长曲线及细胞群体倍增时间的简化计算
- 异形与铁血战士关系 时间线
- 利用PS的磁性套索工具进行抠图
- python下载安装教程电脑版,python下载好了怎么使用
- 调试绝对值编码器测试角速度值
- ubuntu18.04安装roboware studio
- 知识图谱与推荐系统综述
- 在使用JOOQ前,这些问题不能不清楚
- 2012-2013-2(复变函数56, 高等数学60)