我已使用RDKIT库将一种微笑转换为一种热编码,同时转换了整个包含微笑的.csv文件,但我遇到了错误。
成功的实验:
new = 'O=C(O)C1=C(N2N=CC=N2)C=CC(N)=N1'
output :
array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]])
但是尝试多个笑容时出现此错误
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 DataFrame
我正在共享我的代码文件,同时您可以看到该演示
如果有人可以帮助我,请告诉我。
答案 0 :(得分:0)
Chem.MolToSmiles(Chem.MolFromSmiles( smiles ))
只能将一个SMILES转换为另一个,但是您尝试了整个数据帧。
您必须在数据框中遍历SMILES。
这应该有效。
df = pd.read_csv('RouteSynthesisPrediction_o2h.csv')
for smi in df['Target']:
smiles = Chem.CanonSmiles(smi)
mat = smiles_encoder(smiles)
dec = smiles_decoder(mat)
print(mat)
print(smi)
print(smiles)
print(dec)
print()
输出:
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]
O=C(O)C1=C(N2N=CC=N2)C=CC(N)=N1
Nc1ccc(-n2nccn2)c(C(=O)O)n1
Nc1ccc(-n2nccn2)c(C(=O)O)n1
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]
O=C(OC)C1=C(N2N=CC=N2)C=CC(N)=N1
COC(=O)c1nc(N)ccc1-n1nccn1
COC(=O)c1nc(N)ccc1-n1nccn1
.
.
.
答案 1 :(得分:-1)
这里真的没有足够的信息来提供完整的答案。输出看起来像一个Numpy数组,并且Numpy需要预分配浮点数的长度。如果您有第一行是10个浮点数,则在添加第二行时它必须在10个以内且不能超过。无法为其分配内存。