我正在使用RDKit包将一些SMILES转换为指纹。
我的问题,我使用Scikit学习,我想做一个简历。对于CV,我需要np.array数据结构...... 对于某种指纹,我将数据结构转换为0和1的结构。 这只是一个任意的例子
打印x: 一个包含很多的vektor: 0x05E498F0对象的rdkit.DataStructs.cDataStructs.ExplicitBitVect对象将是createt
X = np.array(x)的 print x:将创建1和0的向量。
我不知道为什么numpy数组转换,改变类型?
对于像0x05DDF960这样的对象,如rdkit.DataStructs.cDataStructs.LongSparseIntVect对象 numpy将向量更改为相同的结构。
我只是问,因为从4个指纹中的2个,我得到了这个错误,由于numpy转换:
AttributeError:'numpy.ndarray'对象没有属性'GetNumBits' 用于指纹摩根
from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
from rdkit.Chem import AllChem
from rdkit import Chem
from rdkit import DataStructs
from rdkit.Chem import MACCSkeys
import numpy as np
ms = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO'),Chem.MolFromSmiles('COC')]
fps = [MACCSkeys.GenMACCSKeys(x) for x in ms]
a=DataStructs.FingerprintSimilarity(fps[0],fps[1])
#everything is fine
print fps
print a
# output: [<rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x0325CE30>, <rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x0325CE68>, <rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x0325CEA0>]
#now the error occures
fps=np.array(fps)
print fps
#output: [[0 0 0 0 1 0 1 .....] [1 0 0 0 1...0 1] [1 0 0 .... 1 1]
a=DataStructs.FingerprintSimilarity(fps[0],fps[1])
#AttributeError: 'numpy.ndarray' object has no attribute 'GetNumBits'
DrückenSieeine beliebige Taste。 。 。 print fps