遇到这个问题很简单,只要你打印一下你的smile的mol是否存在即可,利用以下命令将smiles转mol:
mol = Chem.MolFromSmiles(smi)
SMILES变成它的Mol对象,它只是返回None,这就是为什么错误说'NoneType'而不是RDKit内部Mol对象。检查您试图加载的SMILES字符串,并确保它是正确的。所以你需要重新审视你输入的smiles的准确性。有两种处理方式:
1、要么对当前报错块区域进行如下修改,对转换之后的mol进行过滤
if mol is None: continue
2、要么对生成smiles文件进行重新生成,对原smiles进行处理
mol = Chem.MolFromSmiles(smi) if not mol: return '' if remove_atom_mapping: for atom in mol.GetAtoms(): if atom.HasProp("molAtomMapNumber"): atom.ClearProp("molAtomMapNumber")