rdkit.Chem.FilterCatalog module — The RDKit 2025.09.6 documentation

# rdkit.Chem.FilterCatalog module

class rdkit.Chem.FilterCatalog.FilterMatcher((object)self, (object)callback) → None :

  Bases: `PythonFilterMatcher`

  FilterMatcher - This class allows creation of Python based filters. Subclass this class to create a Filter useable in a FilterCatalogEntry

  Simple Example:

  from rdkit.Chem import rdMolDescriptors class MWFilter(FilterMatcher):

  > def __init__(self, minMw, maxMw):

  >   FilterMatcher.__init__(self, “MW violation”) self.minMw = minMw self.maxMw = maxMw

  > def IsValid(self):

  >   return True

  > def HasMatch(self, mol):

  >   mw = rdMolDescriptors.CalcExactMolWt(mol) return not self.minMw <= mw <= self.maxMw

  C++ signature :

    void __init__(_object*,_object*)

  GetMatches(mol, matchVect)

    Return True if the filter matches the molecule (By default, this calls HasMatch and does not modify matchVect)

    matchVect is a vector of FilterMatch’s which hold the matching filter and the matched query_atom, mol_atom pairs if applicable. To append to this vector: v = MatchTypeVect() v.append(IntPair( query_atom_idx, mol_atom_idx ) ) match = FilterMatch(self, v) matchVect.append( match )

  GetName((FilterMatcherBase)self) → str :
    C++ signature :

      std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > GetName(RDKit::FilterMatcherBase {lvalue})

  HasMatch(mol)

    Return True if the filter matches the molecule

  IsValid(mol)

    Must override this function