TypeError: No registered converter was able to produce a C++ rvalue of type class

最近使用RDKit出现TypeError: No registered converter was able to produce a C++ rvalue of type class std::basic_string<wchar_t,struct std::cahr_traits<wchar_t>,class std::allocator<w_char_t> > from this Python object oftype float,发现RDKit的GitHub网站上已经有关于这个错误的讨论(网址

abuhaby

  • RDKit 版本:‘2019.03.4’
  • 操作系统:Windows 10 64位
  • Python版本:3.7
  • 是否用conda:是

问题描述:
当我试图在jupyter notebook中运行以下代码时:

smiles_list = ['C(C(=O)ON','NC@@HC(O)=O']
mol_list = []
for smiles in smiles_list:
	mol = Chem.MolFromSmiles(smiles_list)
	mol_list.append(mol)
img = Draw.MolToGridImage(mol_list)
img

得到错误信息:
TypeError: No registered converter was able to produce a C++ rvalue of type class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > from this Python object of type list

ptosco

你在遍历列表smiles_list,但是你没有把列表中的元素当成参数传递给Chem.MolFromSmiles,而是把列表直接当做参数传递给函数,你的代码应该改为

smiles_list = ['C(C(=O)O)N' , 'NC@@HC(O)=O']
mol_list = []
for smiles in smiles_list:
	mol = Chem.MolFromSmiles(smiles)
	mol_list.append(mol)
img = Draw.MolsToGridImage(mol_list)

或者更简洁的方式

mol_list = [Chem.MolFromSmiles(smiles) for smiles in smiles_list]
img = Draw.MolsToGridImage(mol_list)

导致该错误的主要原因是传递给Chem.MolFromSmiles函数的变量类型错误,正常的参数类型应该是字符串类型。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值