You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使分子第二张图的Vertex labeling与第一张图保持一致?

统一分子图顶点标签的方法

针对同一分子两张图顶点标签不一致的情况,可按以下方式调整第二张图的标签,使其与第一张完全匹配:

  • 拓扑匹配定位对应原子
    先通过分子的拓扑结构(原子连接方式、元素类型、邻接原子特征),找到两张图中每个原子的一一对应关系。比如你提供的图示里,两张图是同一分子,只是标签顺序错位,可通过原子的连接键数量、相邻原子类型来匹配对应原子。

  • 工具批量调整(适合复杂结构)
    用化学信息学工具(如RDKit)实现自动化调整:

    1. 读取两张分子的结构文件(SMILES/SDF等格式)
    2. 提取第一张图的原子标签与对应原子的拓扑特征,建立映射表
    3. 遍历第二张图的每个原子,匹配拓扑特征后替换为第一张图对应的标签
    4. 导出调整后的分子图结构
      示例代码片段(RDKit):
    from rdkit import Chem
    
    # 加载两张分子
    mol1 = Chem.MolFromSmiles("你的第一张图SMILES")
    mol2 = Chem.MolFromSmiles("你的第二张图SMILES")
    
    # 获取mol1的原子标签映射(假设标签存在于原子属性中)
    label_map = {atom.GetIdx(): atom.GetProp("vertexLabel") for atom in mol1.GetAtoms()}
    
    # 找到拓扑匹配的原子对应关系
    matcher = Chem.AtomPairs.CompleteAtomPairMatcher()
    matches = matcher.GetMatches(mol1, mol2)
    match = next(matches)  # 取第一个匹配结果(同一分子只有一组对应)
    
    # 给mol2设置对应标签
    for idx1, idx2 in enumerate(match):
        atom2 = mol2.GetAtomWithIdx(idx2)
        atom2.SetProp("vertexLabel", label_map[idx1])
    
    # 保存调整后的分子
    Chem.MolToMolFile(mol2, "adjusted_mol.sdf")
    
  • 手动修改(适合小结构)
    如果分子结构简单,直接对照第一张图的标签位置,逐个修改第二张图的顶点标签,确保每个原子的元素、连接关系对应后替换标签即可。

内容的提问来源于stack exchange,提问作者zainab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:02:08