【问题标题】:Convert list of smiles strings ['x', 'y', 'z'] to mol files or MDL mol blocks using RDKit使用 RDKit 将微笑字符串列表 ['x', 'y', 'z'] 转换为 mol 文件或 MDL mol 块
【发布时间】:2018-11-12 00:50:39
【问题描述】:

我已经生成了一个微笑字符串列表并将它们定义为“结果”

我想使用 RDKit 将列表中的每个 SMILES 字符串转换为单独的 mol 文件。我目前的代码是这样的:

m = Chem.MolFromSmiles('result')
print(Chem.MolToMolBlock(m))

此脚本不起作用并返回:

ArgumentError:Python 参数类型在 rdkit.Chem.rdmolfiles.MolToMolBlock(NoneType) 与 C++ 签名不匹配: MolToMolBlock(RDKit::ROMol mol, bool includeStereo=True, int confId=-1, bool kekulize=True, bool forceV3000=False)

我将如何解决这个问题?

谢谢!

【问题讨论】:

    标签: python-3.x spyder rdkit


    【解决方案1】:

    您将字符串 'result' 转换为 RDKit mol 对象。这不能转换为 Molblock。 变量名不是字符串,所以不要使用引号。

    首先,您必须将 SMILES 一个一个地转换为 mol 对象。

    from rdkit import Chem
    result = ['C', 'CC', 'CCC']
    mo = [Chem.MolFromSmiles(r) for r in result]
    

    然后你可以一个一个打印 Molblocks。

    for m in mo:
        print(Chem.MolToMolBlock(m))
    

    这会给你这个:

         RDKit          2D
    
      1  0  0  0  0  0  0  0  0  0999 V2000
        0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    M  END
    
    
         RDKit          2D
    
      2  1  0  0  0  0  0  0  0  0999 V2000
        0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        1.2990    0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      1  2  1  0
    M  END
    
    
         RDKit          2D
    
      3  2  0  0  0  0  0  0  0  0999 V2000
        0.0000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        1.2990    0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
        2.5981   -0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
      1  2  1  0
      2  3  1  0
    M  END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多