dandan
dandan

Reputation: 1

Trouble with Rdkit when converting to molecular fingerprints

When attemping to get the rdkit to work i keep getting an argument error i am unsure of how to solve.

mol_list1 = [Chem.MolFromSmiles(i) for i in tqdm(df_database['Ligand SMILES'], desc='Creating mol objects from database Smiles')]
mol_list2 = [Chem.MolFromSmiles(i) for i in tqdm(df_metabolites['Smiles'].dropna(), desc='And now for the metabolites!')]
mfp1 = [AllChem.GetMorganFingerprint(j, 4) for j in tqdm(mol_list1, desc='Getting fingerprints for database mols')]

ArgumentError: Python argument types in rdkit.Chem.rdMolDescriptors.GetMorganFingerprint(NoneType, int) did not match C++ signature: GetMorganFingerprint(class RDKit::ROMol mol, unsigned int radius, class boost::python::api::object invariants=[], class boost::python::api::object fromAtoms=[], bool useChirality=False, bool useBondTypes=True, bool useFeatures=False, bool useCounts=True, class boost::python::api::object bitInfo=None, bool includeRedundantEnvironments=False)

This is from the third line GetMorganFingerprint Imports were;

import pandas as pd
import seaborn as sns
import numpy as np
import os
import matplotlib.pyplot as plt
from tqdm import tqdm
from rdkit import Chem
from rdkit.Chem import AllChem,MACCSkeys
from rdkit import DataStructs
from rdkit.Chem import Descriptors 
from rdkit.Chem import AllChem 
from rdkit import DataStructs
from rdkit.Chem import PandasTools

Please help!

Upvotes: 0

Views: 600

Answers (1)

pippo1980
pippo1980

Reputation: 3023

from RDKit Python API Reference : rdkit.Chem.rdMolDescriptors.GetMorganFingerprint....:

rdkit.Chem.rdMolDescriptors.GetMorganFingerprint((Mol)mol, (int)radius[, (AtomPairsParameters)invariants=[][, (AtomPairsParameters)fromAtoms=[][, (bool)useChirality=False[, (bool)useBondTypes=True[, (bool)useFeatures=False[, (bool)useCounts=True[, (AtomPairsParameters)bitInfo=None[, (bool)includeRedundantEnvironments=False]]]]]]]]) → UIntSparseIntVect :

Returns a Morgan fingerprint for a molecule

C++ signature : RDKit::SparseIntVect* GetMorganFingerprint(RDKit::ROMol,unsigned int [,boost::python::api::object=[] [,boost::python::api::object=[] [,bool=False [,bool=True [,bool=False [,bool=True [,boost::python::api::object=None [,bool=False]]]]]]]])

I suspect you are passing a None type instead of a mol object ??

Check for the j values in your code, we can't

ADDENDUM:

have a look here too : MolFromSmiles returns None without a warning message

Upvotes: 0

Related Questions