Python RDKit化学信息库 2)分子基本信息获取

在化学信息学中,获取分子的基础信息是进一步建模、计算与筛选的前提。RDKit 提供了强大的 API,可以轻松查询分子式、分子量、原子属性、键属性以及环结构。


2.1 分子式与分子量

2.1.1 分子式(Molecular Formula)

from rdkit import Chem
from rdkit.Chem import rdMolDescriptors

mol = Chem.MolFromSmiles("CCO")  # 乙醇
formula = rdMolDescriptors.CalcMolFormula(mol)
print("分子式:", formula)

输出:

分子式: C2H6O

2.1.2 分子量(Molecular Weight)

from rdkit.Chem import Descriptors

mw = Descriptors.MolWt(mol)
print("分子量:", mw)

输出:

分子量: 46.069

RDKit 中的 Descriptors 模块提供了多种分子描述符,例如 LogP、TPSA 等,我们会在第七章详细讲解。


2.2 原子信息获取

RDKit 中的原子对象是 Atom 类型,可以通过 mol.GetAtoms() 遍历。

for atom in mol.GetAtoms():
    print(
        f"原子序号 {atom.GetIdx()}, 元素: {atom.GetSymbol()}, "
        f"价态: {atom.GetTotalValence()}, 电荷: {atom.GetFormalCharge()}"
    )

输出示例:

原子序号 0, 元素: C, 价态: 4, 电荷: 0
原子序号 1, 元素: C, 价态: 4, 电荷: 0
原子序号 2, 元素: O, 价态: 2, 电荷: 0

常用的 原子属性

  • GetSymbol():返回元素符号
  • GetAtomicNum():返回原子序数
  • GetTotalValence():返回总价态
  • GetFormalCharge():返回形式电荷
  • GetDegree():连接的原子个数

2.3 键信息获取

RDKit 中的键对象是 Bond 类型,可以通过 mol.GetBonds() 遍历。

for bond in mol.GetBonds():
    print(
        f"键序号 {bond.GetIdx()}, "
        f"类型: {bond.GetBondType()}, "
        f"起点原子: {bond.GetBeginAtomIdx()}, 终点原子: {bond.GetEndAtomIdx()}"
    )

输出示例:

键序号 0, 类型: SINGLE, 起点原子: 0, 终点原子: 1
键序号 1, 类型: SINGLE, 起点原子: 1, 终点原子: 2

常用的 键属性

  • GetBondType():返回键类型(SINGLE, DOUBLE, TRIPLE, AROMATIC)
  • GetIsConjugated():是否为共轭键
  • IsInRing():是否属于环

2.4 环结构检测

RDKit 提供了 mol.GetRingInfo() 用于环的分析。

mol_benzene = Chem.MolFromSmiles("c1ccccc1")  # 苯
ring_info = mol_benzene.GetRingInfo()

print("环的数量:", ring_info.NumRings())
print("每个环的原子索引:", ring_info.AtomRings())

输出示例:

环的数量: 1
每个环的原子索引: ((0, 1, 2, 3, 4, 5),)

还可以判断某个原子或键是否在环中:

atom = mol_benzene.GetAtomWithIdx(0)
print("原子是否在环中:", atom.IsInRing())

bond = mol_benzene.GetBondWithIdx(0)
print("键是否在环中:", bond.IsInRing())

小贴士

  1. 分子式与分子量rdMolDescriptors.CalcMolFormulaDescriptors.MolWt 是两个最常用的基础计算函数。
  2. 原子索引从 0 开始:RDKit 中的原子编号从 0 起,常用于子结构匹配与图结构操作。
  3. 键类型要熟悉:常见的键类型是 SINGLE, DOUBLE, TRIPLE, AROMATIC,它们对于反应建模非常关键。
  4. 环结构分析很常用:尤其在药物化学与芳香化合物分析中,环的判断是必不可少的。

练习

  1. 写一个函数,输入 SMILES,输出该分子的:

    • 分子式
    • 分子量
    • 原子数
    • 键数
  2. 用 RDKit 分析 咖啡因 (Cn1cnc2c1c(=O)n(c(=O)n2C)C):

    • 打印分子式与分子量
    • 输出所有环的原子索引
    • 判断分子中是否含有芳香环
  3. 用 RDKit 分析 青霉素 G (CC1(C)SCC(N1C(=O)C2=CC=CC=C2)C(=O)O):

    • 输出分子中所有含氧原子的序号与电荷
    • 输出所有双键的原子索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是Jamon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值