SMILES标准化方法以及其中的一个坑(手性)

news2024/11/15 15:29:08

 rdkit.Chem.MolToSmiles()方法是用于将RDKit分子对象转换为SMILES字符串的方法。它的参数如下:

  • mol:必需,要转换为SMILES字符串的RDKit分子对象。
  • isomericSmiles:bool类型,是否生成同分异构体SMILES默认为False,即不生成同分异构体SMILES。
  • kekuleSmiles:bool类型,是否生成Kekule SMILES,默认为False,即生成熔合环上的芳香性保持未指定的杂化,如果是True,则生成使用Kekule表示法的SMILES。
  • canonical:bool类型,是否生成规范化的SMILES,默认为True,即生成规范化的SMILES。
  • allBondsExplicit:bool类型,是否为所有化学键添加显式的方向性和序数,即无论它们是单键、双键还是三键。默认为False。
  • allHsExplicit:bool类型,是否为所有氢原子添加显式的表示,默认为False。
  • sanitize:bool类型,是否在生成SMILES之前对分子进行净化,默认为True。净化操作将包括在分子中添加氢原子、移除未配对的电荷、设置正确的杂化和检查化学键长度等。

其中重要的一个参数:isomericSmiles”,它表示是否保存原始分子的手性,当时做分子生成的时候坑惨了,我说怎么生成的分子都是不带有手性的呢???

from rdkit import Chem

# 创建一个 SMILES 字符串
smiles = 'O=C(N[C@@H](C)C1=CC=C(C(O)=O)C=C1)C2=C(CC3=CC=C(OC(F)F)C(OC(F)F)=C3)SC4=C2CCOC4'

# 将 SMILES 字符串转换为 RDKit 分子对象
mol = Chem.MolFromSmiles(smiles)

# 输出标准化后的 不带有手性SMILES
print(Chem.MolToSmiles(mol, isomericSmiles=False, canonical=True))
# 输出标准化后的 带有手性SMILES
print(Chem.MolToSmiles(mol, isomericSmiles=True, canonical=True))

结果分析: 

所以一定要保留手性isomericSmiles = True

备注:手性

手性不会影响基本性质,例如MG,LogP....

手性中心个数(chiral_centers):过多的手性中心,会导致合成与纯化工艺难度的大幅提高。【chiral_center = len(Chem.FindMolChiralCenters(m, includeUnassigned=True))】

且会影响湿实验的结果,

我原来一直以为手性无关紧要,其实很有必要!!

"C@@H"和"C@H"区别以及和rdkit的标准化方法

"C@@H"和"C@H"这两种手性也是不一样的,以下两幅图的手性也是不同的,他们对应的化学反应可能也是不同的,

需要注意的是:带有"C@@H"的SMILES不一定就是第一幅图的实体黑色手性,它也有可能是第二附图的虚线手性,仅仅通过SMILES中的"C@@H"和"C@H"是无法判断手性是实体黑色还是虚线黑色,且带有"C@@H"的SMIELS和带有"C@H"的SMIELS可能是同一种物质【它们没有任何不同,也就说明rdkit的标准化方法可以很好的保留手性】:

标准化之前:O=C(N[C@@H](C)C1=CC=C(C(O)=O)C=C1)C2=C(CC3=CC=C(OC(F)F)C(OC(F)F)=C3)SC4=C2CCOC4

标准化之后:C[C@H](NC(=O)c1c(Cc2ccc(OC(F)F)c(OC(F)F)c2)sc2c1CCOC2)c1ccc(C(=O)O)cc1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

培训班出身的同学简历怎么做?面试要注意哪些?来自资深大厂HR的忠告

目录 1 不少培训班候选人的简历中,缺乏足够的商业项目年限 2 直接描述培训班学习经历会带来的负面影响 3 大龄转行Vs年轻的初级程序员,公司一般会如何选择? 4 经过培训班突击后,可以先面试小公司 5 面试官怎么面试有培训班经历…

安卓开发到底是做什么的

前言 在某平台看到了这样一个问题: 要知道,安卓开发是当前软件行业中的一个热门方向,它涉及到使用 Java 或 Kotlin 语言开发应用程序,运行在安卓操作系统上的手机、平板电脑、电视等设备上。在过去的几年中,随着智能…

追溯ChatGPT

ChatGPT 国内趋势 在国际学术界看来,ChatGPT / GPT-3.5 是一种划时代的产物 它与之前常见的语言模型 (Bert/ Bart/ T5) 的区别,几乎是导弹与弓箭的区别,一定要引起最高程度的重视 国际上的主流学术机构 (如斯坦福大学,伯克利加…

Ep_计网面试题-UDP实现TCP?

其实把TCP优点拿过来就行 直接上答案: 1、添加seq/ack机制,确保数据发送到对端 2、添加发送和接收缓冲区 3、添加超时重传机制 视频讲解: https://edu.csdn.net/course/detail/38090 点我进入 面试宝典 很多人不知道面试问什么,或者其他的XXGuide,那里边的太多没…

示波器上位机软件下载安装教程

软件:示波器软件NS-Scope 语言:简体中文 环境:NI-VISA安装环境:Win10以上版本(特殊需求请后台私信联系客服) 硬件要求:CPU2GHz 内存4G(或更高)硬盘500G(或更高) 驱动…

第十二 代码块、设计模式(懒汉、饿汉)

代码块概述 ●代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。 ●在ava类下,使用{}括起来的代码被称为代码块。 代码块分为 静态代码块: 格式:static{ 特点:需要通过static关键字修…

企业个人,没有品牌不好混

企业、个人没品牌没法持续混下去 “品牌资产”需要持续积累 频繁切换,品牌无法立 趣讲大白话:没点品牌没法混 【安志强趣讲信息科技91期】 ******************************* 企业品牌资产:指能给企业带来效益的消费者品牌认知,包括…

『C/C++养成计划』C++中的双冒号::名解析(Scope Resolution Operator)

C中的双冒号::名解析(Scope Resolution Operator)! 文章目录1. 访问命名空间中的成员2. 访问类中的静态成员3. 嵌套类访问4. 在类之外定义函数5. 当存在具有相同名称的局部变量时,要访问全局变量6. C模板参数的自动推导参考文献C中的双冒号名解析&#…

外贸人如何写出优秀的开发信?附详细思路

如何写出优秀的开发信?最近做出口生意的客户都在抱怨,开发信的回复率越来越低,其实原因有很多,有时候并非自己的能力实在很欠缺。原因总结如图:第一:市场不景气这个就是就属于客观因素了,这也许…

InstructGPT论文笔记

论文链接:https://arxiv.org/pdf/2203.02155.pdf 1 摘要 做的事: 1、标注了数据,问题和答案写出来,然后训练模型 2、收集数据集,排序模型的输出,使用强化学习训练这个排序的过程 效果层面来说&#xff1…

思迅软件端口不通导致软件和软锁报错的问题

一、端口不通导致软件和软锁报错的问题 问题说明:打开软件提示到:xxx.xxx.xxx.xxx失败! 处理步骤1: 假设软锁服务器IP为192.168.0.1,分别在服务器本机和客户端电脑测试软锁服务: 在服务器的浏览器中访问地址: http:/…

ChatGPT(GPT3.5) OpenAI官方API正式发布

OpenAI社区今天凌晨4点多发送的邮件,介绍了ChatGPT官方API的发布。官方介绍文档地址为“OpenAI API”和“OpenAI API”。 ChatGPT(GPT3.5)官方API模型名称为“gpt-3.5-turbo”和“gpt-3.5-turbo-0301”。API调用价格比GPT text-davinci-003模型便宜10倍。调用费用为…

补档:红黑树代码实现+简略讲解

红黑树讲解和实现1 红黑树介绍1.1 红黑树特性1.2 红黑树的插入1.3 红黑树的删除2 完整代码实现2.1 rtbtree.h头文件2.2 main.c源文件1 红黑树介绍 红黑树( Red-Black tree,简称RB树)是一种自平衡二叉查找树,是计算机科学中常见的一种数据结构&#xff0c…

python画直方图,刻画数据分布

先展示效果 准备一维数据 n 个数据元素计算最大值,最小值、均值、标准差、以及直方图分组 import numpy as np data list() for i in range(640):data.append(np.random.normal(1)) print(data)z np.histogram(data, bins64) print(list(z[0])) ### 对应 x 轴数据…

【C语言】LeetCode 27. 移除元素 的n种解法

文章目录题目描述解法一 快慢下标解法二 数组移位题目描述 OJ链接:27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(…

帮助100w人成功入职的软件测试面试常见问题以及答案

测试面试题怎么来设计测试方案根据测试需求(包括功能需求和非功能性需求),识别测试要点,识别测试环境要求,安排测试轮次,根据项目计划和开发计划做整体的测试安排。被测试的特性:通过对需求规格…

MyBatis - 10 - 处理多对一映射关系 + MyBatis延时加载

文章目录1.准备工作1.1 建表1.2 创建Maven项目1.2.1 在pom文件中,修改打包方式为jar包,导入依赖1.2.2 创建日志配置文件和jdbc.properties1.2.3 创建Mybatis核心配置文件1.2.4 创建实体类以及实体类之间的关系1.2.5 创建SqlSession工具类2.为什么要单独处…

Ubuntu配置静态IP的方法

Ubuntu配置静态IP的方法前言一、查看虚机分配的网卡IP二、查看网卡的网关IP三、配置静态IP1.配置IPv4地址2.执行netplan apply使改动生效3.配置的网卡未生效,修改50-cloud-init.yaml文件解决4.测试vlan网络通信总结前言 Ubuntu18.04 欧拉环境 vlan网络支持ipv6场景…

树状数组讲解

树状数组 文章目录树状数组引入例题AcWing241.楼兰图腾思路代码AcWing 242. 一个简单的整数问题思路代码AcWing 244. 谜一样的牛思路代码总结引入 树状数组主要维护的是这样一个数据结构: tr[x]表示以x为终点的长度为lowbit(x)的前缀和 对于树状数组主要就两种操作 …

机器学习系统架构的10个要素

这是一个AI赋能的时代,而机器学习则是实现AI的一种重要技术手段。那么,是否存在一个通用的通用的机器学习系统架构呢?在老码农的认知范围内,Anything is nothing,对系统架构而言尤其如此。但是,如果适用于大…