c++ 有人能告诉我为什么Chem.MolFromSmiles没有将SMILES列表转换为RDKit中的mol对象吗?

dffbzjpn  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(266)

我有一个包含298个SMILES的列表,我想将这298个SMILES转换为mol对象,但是rdkit给了我上面的错误。

TypeError: No registered converter was able to produce a C++  

 rvalue of type std::basic_string<wchar_t, 
  std::char_traits<wchar_t>, std::allocator<wchar_t> > from this 
  Python object of type float

这是我的代码:

for mol in str_smiles:
  Chem.MolFromSmiles(mol)
  mol_object_list.append(mol)

有人能告诉我出什么事了吗?

e4eetjau

e4eetjau1#

首先,你所展示的代码不会起作用,因为你需要先将对象赋值给某个对象,比如:

mol_object_list = []
for smi in str_smiles:
    mol = Chem.MolFromSmiles(smi)
    mol_object_list.append(mol)

回到您的错误,当SMILES字符串输入无效时会发生错误。可能str_smiles列表中的某些SMILES是错误的。请尝试以下代码段来找出是哪些错误:

mol_object_list = []
for smi in str_smiles:
    try:  # Try converting the SMILES to mol object
        mol = Chem.MolFromSmiles(smi)
        mol_object_list.append(mol)
    except:  # Print the SMILES if there was an error in converting
        print(smi)

打印的SMILES无效,您必须修复它们。
另外,我假设str_smiles是一个python列表。

相关问题