ArgumentError:rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(Mol,int)

2024-09-29 19:20:28 发布

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

我正在使用RDKit,有以下问题。我试图创建一个函数,将一个分子从微笑字符串编码成指纹。但是发生了一个错误,我无法理解

这是我的代码:

 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)

谢谢


Tags: indfforindexmethodclassintbool
1条回答
网友
1楼 · 发布于 2024-09-29 19:20:28

这只是一个打字错误

改变

AllChem.GetMorganFingerprintAsBitVect(mol,2,n_Bits=n_位)

AllChem.GetMorganFingerprintAsBitVect(mol,2,nBits=n_位)

相关问题 更多 >

    热门问题