在调用rdkit库的Chem.MolToSmiles()时报这样的错误:
首先安装的库是没有问题的,所以考虑读取的文件格式有问题,对其进行定位:
from rdkit import Chem
f = '../../data/fastei/HMDB/structures.sdf'
suppl = Chem.SDMolSupplier(f)
for j in tqdm(range(len(suppl))):
try:
smi = Chem.MolToSmiles(suppl[j])
except:
print('Error:', j)
然后我们打印一下idx为1380的mol,发现它是None:
所以我们需要过滤掉格式错误的mol,可以用这样一个列表推导式:
mols = [mol for mol in suppl if mol] # 如果是mol的话那么保留它
print(len(mols)) # 217766,论文中说是217759
这样就过滤掉了格式不正确的mol:
然后就可以调用MolToSmiles()了:
print(Chem.MolToSmiles(mols[0]))
有问题欢迎在评论区讨论!