Rdkit转换mol为SMILES出现原xyz无的氢、字符串编号如何解读
问题1 为什么转换得到的SMILES中会出现原始结构不存在的氢原子?
这是RDKit默认的分子校验(sanitize)流程导致的:RDKit默认针对有机小分子设计,内置了常规元素的价态规则,解析分子时会自动为成键数未达到默认价态要求的原子补充隐式氢,来满足价层电子稳定规则。
你处理的是铝团簇结构,不属于常规有机分子范畴,RDKit内置的铝元素价态规则和团簇中Al的实际成键模式不匹配,识别到Al的成键数不符合预设要求时就会自动添加氢原子补价,和原始xyz文件中是否存在氢没有关联。
你现有代码没有关闭默认的sanitize流程,因此触发了自动补氢逻辑,可修改读取代码关闭相关校验避免多余氢生成:
m3 = Chem.MolFromMolFile('Al_neutral.mol', strictParsing=False, sanitize=False, removeHs=False)
问题2 上述SMILES字符串中的数字该如何解读?
这些数字是SMILES语法中的环闭合标记,用于表示非链式的环结构成键关系,规则如下:
- 数字第一次出现在某个原子后方时,代表对该原子的成键位置做对应数字的标记
- 同一个数字第二次出现在另一个原子后方时,代表两个标记了相同数字的位置之间形成化学键,闭合为环
- 单个原子后方跟随多个数字,代表该原子同时参与多个不同的环
你给出的SMILES对应多连接的铝团簇结构,单个Al原子会和多个其他Al成键形成大量交错的环,因此会出现单原子后带多个数字的情况,例如开头的[Al]12代表这个Al原子同时是1号环和2号环的起点,后续出现的1、2标记对应的原子都会和该Al成键。
内容的提问来源于stack exchange,提问作者hemanta
相关产品推荐
相关产品推荐

