使用RDKIT:以整数/计数形式生成指纹

2024-05-15 01:04:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Rdkit的新手。我需要生成整数/计数形式的指纹。我尝试过很多选择,但我总能得到这样的信息:

DataStructs.ConvertToNumpyArray(fps2[i], arr[i])
ArgumentError: Python argument types in
rdkit.DataStructs.cDataStructs.ConvertToNumpyArray(UIntSparseIntVect, numpy.ndarray)
did not match C++ signature:
ConvertToNumpyArray(RDKit::DiscreteValueVect bv, boost::python::api::object destArray)
ConvertToNumpyArray(ExplicitBitVect bv, boost::python::api::object destArray)

我的代码如下:

import numpy as np
from rdkit.Chem import AllChem as Chem
from rdkit import DataStructs
from rdkit.Chem.AtomPairs import Pairs

suppl = Chem.SDMolSupplier('5ht3ligs.sdf')
fps1 = [Chem.RDKFingerprint(x, fpSize=1024, minPath=1, maxPath=4) for x in suppl]
fps2 = [Chem.GetHashedMorganFingerprint(x, radius=2, nBits=1024) for x in suppl]
fps3 = [Chem.GetMorganFingerprint(x, radius=2, useCounts= True) for x in suppl]
fps4 = [Pairs.GetAtomPairFingerprintAsIntVect(x) for x in suppl]
arr = np.zeros((4,1024), dtype = np.int8)
for i in range(0,len(suppl)):
DataStructs.ConvertToNumpyArray(fps2[i], arr[i])
print(arr)

我还想知道在Rdkit中是否有一种方法可以将指纹直接打印到类似于Chem.SDwrite的文本文件中,但可以保存指纹?但是,如果我可以将计数指纹转换为数组,那么我可以使用Python代码保存到文本文件


Tags: infromimportfornp指纹计数arr

热门问题