参考:
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相关推荐

  1. RDKit|摩根分子指纹计算、提取与可视化

    文章目录 一.摩根分子指纹计算 1.简介 2.SparseIntVects 3.ExplicitBitVects 4.FCFPs 5.更多泛化 二.摩根分子指纹提取 1.提取方法一 2.提取方法二 三 ...

  2. rdkit 分子性质描述符(Descriptors)

    文章目录 一.引入所需库 二.性质描述符计算 三.原子对性质的贡献可视化 分子性质也被称为描述符. RDKit中内置了大量的分子描述符的计算方法, 这些方法主要位于 rdkit.Chem.Descri ...

  3. RDKit | 化合物芳香度分子描述符的计算与相关性比较

    分子描述符是确定分子性质的指标. 本文想看看描述分子特性中侧重于" 化合物芳香度 "的描述符.随着交叉偶联反应的发展,将芳环引入分子变得更加容易.另一方面,已知具有多个芳环的化合物 ...

  4. RDKit | 通过Lipinski规则了解如何在RDKit中处理描述符

    以Lipinski的为主题,学习RDKit如何处理表征分子特性的" 描述符 ". 描述符         描述符是确定分子性质的指标.当然,水的性质是水的溶解度和大小的性质,生物活 ...

  5. 底物的分子描述符计算及 CYP450 酶-底物选择性技术研究

    本篇推文引自:基于网络的标签空间划分方法预测 CYP450 酶-底物选择性 1. 分子描述符计算     本文计算了四种类型的底物分子描述符并把他们当成 4 类特征表示用于机器学习建模,这 4 类特征 ...

  6. 计算分子描述符——使用E-Dragon

    介绍 计算分子描述符(又称理论分子描述符)不需借助于任何实验信息,只需要分子的结构信息就可以计算出来,例如分子的组成,拓扑结构以及量子化学描述符等等.其优点是对化合物结构的描述更全面细致,物理化学意义 ...

  7. 分子生成中常见分子描述符介绍及代码实现

    一.背景介绍 本文针对计算机辅助药物设计 (CADD)中的分子生成方向进行一下总结,主要内容是根据模型生成的分子理化性质检验,包括多种性质的定义.计算公式.评价指标及实现代码. 计算机辅助药物设计 ( ...

  8. rdkit 绘制分子【可视化分子】

    rdkit 内置了Draw模块,用于绘图,把一些经常用到的方法直接放在Draw下面. 文章目录 一.引入所需库 二.分子对象转化为图片 2.1 分子对象转图片文件函数解析 2.2 分子对象转图片函数解 ...

  9. rdkit 读写分子操作

    让计算机识别化学分子是计算化学的必备技能,也是对分子进行各种操作的基础. 文章目录 一.简介 二.读分子操作 2.1 引入所需库 2.2 读入smiles 2.3 读入mol文件 2.4 读入sdf文 ...

最新文章

  1. 和产品争论MySQL底层如何实现order by的,惨败!
  2. CentOS7.X的系统管理、安全设置及系统优化思路
  3. linux安装软件命令1003无标题,linux系统安装OFED(infiniband)
  4. 华为电脑c语言总是错误,关于华为机试题求代码!解决方法
  5. ASP.NET传统的三层架构
  6. java volatile lock_Java并发学习笔记 -- Java中的Lock、volatile、同步关键字
  7. 总结一下在ASP.NET中开发网站的一般步骤
  8. php仿微信界面设计,仿微信源码-泡泡IM
  9. 6. 单例模式有几种写法?
  10. 迈向新征程!2019国际第三代半导体大赛颁奖典礼盛大举办!
  11. Spring入门学习
  12. 细胞生长曲线拟合matlab,绘制细胞生长曲线及细胞群体倍增时间的简化计算
  13. 异形与铁血战士关系 时间线
  14. 利用PS的磁性套索工具进行抠图
  15. python下载安装教程电脑版,python下载好了怎么使用
  16. 调试绝对值编码器测试角速度值
  17. ubuntu18.04安装roboware studio
  18. 知识图谱与推荐系统综述
  19. 在使用JOOQ前,这些问题不能不清楚
  20. 2012-2013-2(复变函数56, 高等数学60)

热门文章

  1. 梅西确定代言 中国首秀牵手Mate 8
  2. coursera_poj_魔兽世界终结版
  3. 0807Python总结-装饰器,面向对象当中的方法,property
  4. 我的世界服务器世界前缀修改,大佬教你如何给玩家添加名字前缀后缀
  5. 星巴克的成功,一切与咖啡无关
  6. CodeMash 2008总结-您在做什么?
  7. 指纹安全再进一步 可区分真假指纹的技术诞生
  8. 唯品会二级分销+小程序:下一站,社交电商?
  9. PHP格式打印输出ladybug
  10. Photoneo3D相机以每秒40米的速度捕获运动中的物体图像