Python argument types in rdkit.Chem.rdmolfiles.MolToSmiles(NoneType) did not match C++ signature

         在调用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])) 

        有问题欢迎在评论区讨论!

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Burger~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值