ArgumentError: rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(Mol, int)
ArgumentError: rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(Mol, int)
我在使用 RDKit 时遇到了以下问题。我正在尝试创建一个函数,将 SMILES 字符串中的分子编码为指纹。但是出现了 ArgumentError,我想不通。
这是我的代码:
def get_fp(dfx, method="maccs", n_bits=2048):
ligands = [Chem.MolFromSmiles(mol) for mol in dfx.canonical_smiles]
if method == "morgan2":
data1 = []
for mol in ligands:
ecfp4 = [int(x) for x in AllChem.GetMorganFingerprintAsBitVect(mol, 2, n_Bits=n_bits)]
data1.append(ecfp4)
ecfp4_df = pd.DataFrame(data1, index=dfx.index)
return ecfp4_df
if method == "morgan3":
data2 = []
for mol in ligands:
ecfp6 = [int(x) for x in AllChem.GetMorganFingerprintAsBitVect(mol, 3, n_Bits=n_bits)]
data2.append(ecfp6)
ecfp6_df = pd.DataFrame(data2, index=dfx.index)
return ecfp6_df
if method == "maccs":
data3 = []
for mol in ligands:
maccs = [int(x) for x in MACCSkeys.GenMACCSKeys(mol)]
data3.append(maccs)
maccs_df = pd.DataFrame(data3, index=dfx.index)
return maccs_df
“maccs”方法有效,但摩根无效。我认为这是一个功能问题但我无法调试它...这是错误:
ArgumentError: Python argument types in
rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(Mol, int) did not match C++ signature:
GetMorganFingerprintAsBitVect(class RDKit::ROMol mol, unsigned int radius, unsigned int nBits=2048, class boost::python::api::object
invariants=[], class boost::python::api::object fromAtoms=[], bool
useChirality=False, bool useBondTypes=True, bool useFeatures=False,
class boost::python::api::object bitInfo=None, bool
includeRedundantEnvironments=False)
谢谢
这只是一个错字。
改变
AllChem.GetMorganFingerprintAsBitVect(mol, 2, n_Bits
= n_bits)
至
AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits
= n_bits)
我在使用 RDKit 时遇到了以下问题。我正在尝试创建一个函数,将 SMILES 字符串中的分子编码为指纹。但是出现了 ArgumentError,我想不通。
这是我的代码:
def get_fp(dfx, method="maccs", n_bits=2048):
ligands = [Chem.MolFromSmiles(mol) for mol in dfx.canonical_smiles]
if method == "morgan2":
data1 = []
for mol in ligands:
ecfp4 = [int(x) for x in AllChem.GetMorganFingerprintAsBitVect(mol, 2, n_Bits=n_bits)]
data1.append(ecfp4)
ecfp4_df = pd.DataFrame(data1, index=dfx.index)
return ecfp4_df
if method == "morgan3":
data2 = []
for mol in ligands:
ecfp6 = [int(x) for x in AllChem.GetMorganFingerprintAsBitVect(mol, 3, n_Bits=n_bits)]
data2.append(ecfp6)
ecfp6_df = pd.DataFrame(data2, index=dfx.index)
return ecfp6_df
if method == "maccs":
data3 = []
for mol in ligands:
maccs = [int(x) for x in MACCSkeys.GenMACCSKeys(mol)]
data3.append(maccs)
maccs_df = pd.DataFrame(data3, index=dfx.index)
return maccs_df
“maccs”方法有效,但摩根无效。我认为这是一个功能问题但我无法调试它...这是错误:
ArgumentError: Python argument types in rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(Mol, int) did not match C++ signature: GetMorganFingerprintAsBitVect(class RDKit::ROMol mol, unsigned int radius, unsigned int nBits=2048, class boost::python::api::object invariants=[], class boost::python::api::object fromAtoms=[], bool useChirality=False, bool useBondTypes=True, bool useFeatures=False, class boost::python::api::object bitInfo=None, bool includeRedundantEnvironments=False)
谢谢
这只是一个错字。
改变
AllChem.GetMorganFingerprintAsBitVect(mol, 2, n_Bits
= n_bits)
至
AllChem.GetMorganFingerprintAsBitVect(mol, 2, nBits
= n_bits)