解决Rdkit Explicit valence for atom # 1 C, 5, is greater than permitted,价键不对的问题

news/2024/9/20 20:49:09 标签: python, rdkit, 化合物

本文主要介绍如何利用RDKit解决化合物SMILES表示中出现的原子价态错误,报错Explicit valence for atom # 1 C, 5, is greater than permitted。

问题现象:

python">mol = Chem.MolFromSmiles("C[CH2+]1(C#N)CC1")  #运行后报错如下 
>>> [11:09:12] Explicit valence for atom # 1 C, 5, is greater than permitted

问题原因
出现以上问题主要是原子的价键有问题,第一个C原子有5个键,所以出现上面这个报错。只要重新设置一下第一个原子的键价即可。

解决办法:

python"># 首先需要设置sanitize = False,读取不合理的分子
mol = Chem.MolFromSmiles("C[CH2+]1(C#N)CC1", sanitize=False) 
# 先更新Proterty,这样后面才能计算显示氢
mol.UpdatePropertyCache(strict=False)
# 通过GetAtomWithIdx获得报错的那个原子,然后计算他的形式电荷FormalCharge,和化合键数量
# 从上面的那个报错来看,是第1个C原子有问题,因此拿到第一个原子的Atom
mol.GetAtomWithIdx(1).GetFormalCharge()   # 电荷是1
>>> 1
mol.GetAtomWithIdx(1).GetExplicitValence()  # 化合键是 6
>>> 6
# 化合键是6,形式电荷只有1,所以上面会报错C是5键,正常情况下C只有4个化合键,因此需要重新设置显示氢的个数1。
mol.GetAtomWithIdx(1).SetNumExplicitHs(1)
# 设置完成之后,输出更新好键价的Smiles
print(Chem.MolToSmiles(mol))

输出:

C[CH+]1(C#N)CC1

验证:输出是否已经正确

python">mol_new = Chem.MolFromSmiles('C[CH+]1(C#N)CC1')
print(Chem.AddHs(mol_new))  # 输出如下
<rdkit.Chem.rdchem.Mol object at 0x0000027073390AC0>

至此已经解决,欢迎大家提出问题,我们随时交流。


http://www.niftyadmin.cn/n/5667628.html

相关文章

智慧交通,智能消防系统助力高铁站安全

智慧交通是一项基于现代技术的创新领域&#xff0c;正不断为我们生活带来便利。在智慧交通领域中&#xff0c;高铁站是一个非常重要的环节。高铁站作为人流密集的区域&#xff0c;安全问题一直备受关注。为了提升高铁站的安全性和效率&#xff0c;智慧消防设备监测与集中监控系…

麒麟操作系统快捷键设置

这些是银河麒麟操作系统常用的快捷键&#xff0c;和Windows系统有点儿相似。 但也有一些快捷键为未列出来&#xff0c;如CtrlALTT打开终端&#xff0c;Ctrld关闭终端&#xff0c;F2&#xff1a;重命名&#xff1b; CtrlshiftN&#xff1a;新建文件夹。

中国电子学会202403青少年软件编程(Python)等级考试试卷(二级)真题

一、选择题 1.期末考试结束了,全班的语文成绩都储存在列表 score 中,班主任老师请小明找到全班最高分,小明准备用 Python 来完成,以下哪个选项,可以获取最高分呢?( ) A.min(score) B.max(score) C.score.max() D.score.min() 2.已知列表 a = [1,2,3,4,5,6],想输出…

云韧性,现代云服务不可或缺的组成部分

韧性&#xff0c;一个物理学概念&#xff0c;表示材料在变形或者破裂过程中吸收能量的能力。韧性越好&#xff0c;则发生脆性断裂的可能性越小。 如今&#xff0c;韧性也延伸到企业特质、产品特征等之中&#xff0c;用于形容企业、产品乃至服务的优劣。同样&#xff0c;随着云…

Ubuntu与Windows之间实现复制粘贴

1.卸载已有的工具 sudo apt-get autoremove open-vm-tools 2.安装工具open-vm-tools sudo apt-get install open-vm-tools 3.安装open-vm-tools-desktop sudo apt-get install open-vm-tools-desktop

【C++】——vector

文章目录 vector介绍vector的使用vector的构造vector迭代器vector空间增减vector增删查改 vector介绍 vector是一个动态数组&#xff0c;可以根据需求变大变小vector支持随机访问vector会自动管理内存分配和释放vector在尾部添加和删除的效率非常高&#xff0c;中间和头部插入较…

报错error: RPC failed,curl 16 Error in the HTTP2 framing layer解决方法

error: RPC failed&#xff1b; curl 16 Error in the HTTP2 framing layerfatal: expected flush after ref listing 问题描述&#xff1a; git pull origin main报错error: RPC failed&#xff0c;curl 16 Error in the HTTP2 framing laye 解决方法1&#xff1a; git con…

GPTo1论文详解

Learning to Reason with LLMs – OpenAI o1 论文详解 Abstract OpenAI 推出了 OpenAI o1&#xff0c;这是一种新的大型语言模型&#xff0c;通过强化学习进行训练&#xff0c;用于执行复杂的推理。o1 在回答之前会思考 - 在响应用户之前&#xff0c;它可以产生一个很长的内部…