Использование RDKIT: генерировать отпечаток пальца в виде целого числа / числа - PullRequest
0 голосов
/ 03 марта 2020

Я новичок в 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 для сохранения в текстовый файл.

...