参数错误:rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(NoneType,int)中的Python参数类型与C++签名不匹配

myss37ts  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(273)

所以我使用RDKit和Python将SMILES字符串转换为ECFP4指纹,我的代码如下所示。我得到了一个错误,但我也检查了这里的this question,但我似乎有正确的代码?但为什么我仍然得到一个错误?
是否有其他方法来编码此内容?

bits = 1024
PandasTools.AddMoleculeColumnToFrame(data, smilesCol='SMILES')
data_ECFP4 = [AllChem.GetMorganFingerprintAsBitVect(x, 3, nBits = bits) for x in data['ROMol']]
data_ecfp4_lists = [list(l) for l in data_ECFP4]
ecfp4_name = [f'B{i+1}' for i in range(1024)]
data_ecfp4_df = pd.DataFrame(data_ecfp4_lists, index = data.TARGET, columns = ecfp4_name)

我得到的错误是:
参数错误:rdkit.Chem.rdMolDescriptors.GetMorganFingerprintAsBitVect(NoneType,int)中的Python参数类型与C++签名不匹配:GetMorganFingerprintAsBitVect(class RDKit::ROMol mol,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)

ifsvaxew

ifsvaxew1#

很可能你的列表包含不规则的值,比如'None',nan,或者只是空的项目。在你的代码中,'x'应该对应一个字符串。

相关问题