rdkit.Chem.rdfiltercatalog module

Module containing FilterCatalog functionality for filtering molecules based on structural patterns.

class rdkit.Chem.rdfiltercatalog.ExclusionList(self)

Bases: FilterMatcher

AddPattern(self, base: rdkit.Chem.rdfiltercatalog.FilterMatcher) None

Add a FilterMatcherBase that should not appear in a molecule

SetExclusionPatterns(self, list: object) None

Set a list of FilterMatcherBases that should not appear in a molecule

class rdkit.Chem.rdfiltercatalog.FilterCatalog(self)
class rdkit.Chem.rdfiltercatalog.FilterCatalog(self, pickle: bytes)
class rdkit.Chem.rdfiltercatalog.FilterCatalog(self, pickle: str)
class rdkit.Chem.rdfiltercatalog.FilterCatalog(self, params: rdkit.Chem.rdfiltercatalog.FilterCatalogParams)
class rdkit.Chem.rdfiltercatalog.FilterCatalog(self, catalogs: rdkit.Chem.rdfiltercatalog.FilterCatalogParams.FilterCatalogs)

Bases: object

AddEntry(self, entry: rdkit.Chem.rdfiltercatalog.FilterCatalogEntry) None

Add a FilterCatalogEntry to the catalog

GetEntry(self, idx: int) rdkit.Chem.rdfiltercatalog.FilterCatalogEntry

Return the FilterCatalogEntry at the specified index

GetEntryWithIdx(self, idx: int) rdkit.Chem.rdfiltercatalog.FilterCatalogEntry

Return the FilterCatalogEntry at the specified index

GetFilterMatches(self, mol: rdkit.Chem.rdchem.Mol) list[rdkit.Chem.rdfiltercatalog.FilterMatch]

Return every matching filter from all catalog entries that match mol

GetFirstMatch(self, mol: rdkit.Chem.rdchem.Mol) rdkit.Chem.rdfiltercatalog.FilterCatalogEntry

Return the first catalog entry that matches mol

GetMatches(self, mol: rdkit.Chem.rdchem.Mol) list[rdkit.Chem.rdfiltercatalog.FilterCatalogEntry]

Return all catalog entries that match mol

GetNumEntries(self) int

Returns the number of entries in the catalog

HasMatch(self, mol: rdkit.Chem.rdchem.Mol) bool

Returns True if the catalog has an entry that matches mol

RemoveEntry(self, obj: object) bool

Remove the given entry from the catalog

Serialize(self) bytes
class rdkit.Chem.rdfiltercatalog.FilterCatalogEntry

Bases: object

A filter catalog entry is an entry in a filter catalog. Each filter is named and is used to flag a molecule usually for some undesirable property.

For example, a PAINS (Pan Assay INterference) catalog entry be appear as follows:

>>> from rdkit.Chem.FilterCatalog import *
>>> params = FilterCatalogParams()
>>> params.AddCatalog(FilterCatalogParams.FilterCatalogs.PAINS_A)
True
>>> catalog = FilterCatalog(params)
>>> mol = Chem.MolFromSmiles('O=C(Cn1cnc2c1c(=O)n(C)c(=O)n2C)N/N=C/c1c(O)ccc2c1cccc2')
>>> entry = catalog.GetFirstMatch(mol)
>>> print (entry.GetProp('Scope'))
PAINS filters (family A)
>>> print (entry.GetDescription())
hzone_phenol_A(479)

__init__(self) -> None __init__(self, name: str, matcher: rdkit.Chem.rdfiltercatalog.FilterMatcher) -> None

ClearProp(self, key: str) None
GetDescription(self) str

Get the description of the catalog entry

GetFilterMatches(self, mol: rdkit.Chem.rdchem.Mol) list[rdkit.Chem.rdfiltercatalog.FilterMatch]

Retrieve the list of filters that match the molecule

GetProp(self, key: str) str
GetPropList(self) list[str]
HasFilterMatch(self, mol: rdkit.Chem.rdchem.Mol) bool

Returns True if the catalog entry contains filters that match the molecule

IsValid(self) bool
Serialize(self) bytes
SetDescription(self, description: str) None

Set the description of the catalog entry

SetProp(self, key: str, val: str) None
class rdkit.Chem.rdfiltercatalog.FilterCatalogParams(self)
class rdkit.Chem.rdfiltercatalog.FilterCatalogParams(self, catalogs: rdkit.Chem.rdfiltercatalog.FilterCatalogParams.FilterCatalogs)

Bases: object

Overloaded function.

  1. __init__(self) -> None

  2. __init__(self, catalogs: rdkit.Chem.rdfiltercatalog.FilterCatalogParams.FilterCatalogs) -> None

Construct from a FilterCatalogs identifier (i.e. FilterCatalogParams.PAINS)

AddCatalog(self, catalogs: rdkit.Chem.rdfiltercatalog.FilterCatalogParams.FilterCatalogs) bool
class FilterCatalogs(*values)

Bases: IntEnum

ALL = 16382
BRENK = 16
CHEMBL = 16256
CHEMBL_BMS = 512
CHEMBL_Dundee = 256
CHEMBL_Glaxo = 128
CHEMBL_Inpharmatica = 4096
CHEMBL_LINT = 8192
CHEMBL_MLSMR = 2048
CHEMBL_SureChEMBL = 1024
NIH = 32
PAINS = 14
PAINS_A = 2
PAINS_B = 4
PAINS_C = 8
ZINC = 64
class rdkit.Chem.rdfiltercatalog.FilterHierarchyMatcher(self)
class rdkit.Chem.rdfiltercatalog.FilterHierarchyMatcher(self, matcher: rdkit.Chem.rdfiltercatalog.FilterMatcher)

Bases: FilterMatcher

Hierarchical Filter
basic constructors:

FilterHierarchyMatcher( matcher ) where can be any FilterMatcherBase (SmartsMatcher, etc)

FilterHierarchyMatcher’s have children and can form matching

trees. When GetFilterMatches is called, the most specific ( i.e. lowest node in a branch) is returned.

n.b. A FilterHierarchicalMatcher of functional groups is returned

by calling GetFunctionalGroupHierarchy()

>>> from rdkit.Chem import MolFromSmiles
>>> from rdkit.Chem.FilterCatalog import *
>>> functionalGroups = GetFunctionalGroupHierarchy()
>>> [match.filterMatch.GetName()
...     for match in functionalGroups.GetFilterMatches(
...         MolFromSmiles('c1ccccc1Cl'))]
['Halogen.Aromatic', 'Halogen.NotFluorine.Aromatic']

Overloaded function.

  1. __init__(self) -> None

  2. __init__(self, matcher: rdkit.Chem.rdfiltercatalog.FilterMatcher) -> None

Construct from a filtermatcher

AddChild(self, hierarchy: rdkit.Chem.rdfiltercatalog.FilterHierarchyMatcher) rdkit.Chem.rdfiltercatalog.FilterHierarchyMatcher

Add a child node to this hierarchy.

SetPattern(self, matcher: rdkit.Chem.rdfiltercatalog.FilterMatcher) None

Set the filtermatcher pattern for this node. An empty node is considered a root node and passes along the matches to the children.

class rdkit.Chem.rdfiltercatalog.FilterMatch(self, filter: rdkit.Chem.rdfiltercatalog.FilterMatcher, atomPairs: collections.abc.Sequence[tuple[int, int]])

Bases: object

Object that holds the result of running FilterMatcherBase::GetMatches

  • filterMatch holds the FilterMatchBase that triggered the match

  • atomPairs holds the [ (query_atom_idx, target_atom_idx) ] pairs for the matches.

Note that some matches may not have atom pairs (especially matches that use FilterMatchOps.Not

property atomPairs

(self) -> list[tuple[int, int]]

property filterMatch

(self) -> RDKit::FilterMatcherBase

class rdkit.Chem.rdfiltercatalog.FilterMatcher(self, name: str)

Bases: object

Base class for matching molecules to filters.

A FilterMatcherBase supplies the following API - IsValid() returns True if the matcher is valid for use, False otherwise - HasMatch(mol) returns True if the molecule matches the filter - GetMatches(mol) -> [FilterMatch, FilterMatch] returns all the FilterMatch data

that matches the molecule

print( FilterMatcherBase ) will print user-friendly information about the filter Note that a FilterMatcherBase can be combined from many FilterMatcherBases This is why GetMatches can return multiple FilterMatcherBases. >>> from rdkit.Chem.FilterCatalog import * >>> carbon_matcher = SmartsMatcher(‘Carbon’, ‘[#6]’, 0, 1) >>> oxygen_matcher = SmartsMatcher(‘Oxygen’, ‘[#8]’, 0, 1) >>> co_matcher = FilterMatchOps.Or(carbon_matcher, oxygen_matcher) >>> mol = Chem.MolFromSmiles(‘C’) >>> matches = co_matcher.GetMatches(mol) >>> len(matches) 1 >>> print(matches[0].filterMatch) Carbon

GetMatches(self, mol: rdkit.Chem.rdchem.Mol) list[rdkit.Chem.rdfiltercatalog.FilterMatch]

Returns the list of matching subfilters mol matches any filter

GetName(self) str
HasMatch(self, mol: rdkit.Chem.rdchem.Mol) bool

Returns True if mol matches the filter

IsValid(self) bool

Return True if the filter matcher is valid, False otherwise

rdkit.Chem.rdfiltercatalog.FilterMatcherBase

alias of FilterMatcher

rdkit.Chem.rdfiltercatalog.PythonFilterMatcher

alias of FilterMatcher

class rdkit.Chem.rdfiltercatalog.SmartsMatcher(self, name: str)
class rdkit.Chem.rdfiltercatalog.SmartsMatcher(self, rhs: rdkit.Chem.rdchem.Mol)
class rdkit.Chem.rdfiltercatalog.SmartsMatcher(self, name: str, mol: rdkit.Chem.rdchem.Mol, minCount: int = 1, maxCount: int = 4294967295)
class rdkit.Chem.rdfiltercatalog.SmartsMatcher(self, name: str, smarts: str, minCount: int = 1, maxCount: int = 4294967295)

Bases: FilterMatcher

Smarts Matcher Filter
basic constructors:

SmartsMatcher( name, smarts_pattern, minCount=1, maxCount=UINT_MAX ) SmartsMatcher( name, molecule, minCount=1, maxCount=UINT_MAX )

note: If the supplied smarts pattern is not valid, the IsValid() function will

return False

>>> from rdkit.Chem.FilterCatalog import *
>>> minCount, maxCount = 1,2
>>> carbon_matcher = SmartsMatcher('Carbon', '[#6]', minCount, maxCount)
>>> print (carbon_matcher.HasMatch(Chem.MolFromSmiles('CC')))
True
>>> print (carbon_matcher.HasMatch(Chem.MolFromSmiles('CCC')))
False
>>> carbon_matcher.SetMinCount(2)
>>> print (carbon_matcher.HasMatch(Chem.MolFromSmiles('C')))
False
>>> carbon_matcher.SetMaxCount(3)
>>> print (carbon_matcher.HasMatch(Chem.MolFromSmiles('CCC')))
True

Overloaded function.

  1. __init__(self, name: str) -> None

  2. __init__(self, rhs: rdkit.Chem.rdchem.Mol) -> None

Construct from a molecule

  1. __init__(self, name: str, mol: rdkit.Chem.rdchem.Mol, minCount: int = 1, maxCount: int = 4294967295) -> None

Construct from a name, molecule, minimum and maximum count

  1. __init__(self, name: str, smarts: str, minCount: int = 1, maxCount: int = 4294967295) -> None

Construct from a name, smarts pattern, minimum and maximum count

GetMaxCount(self) int

Get the maximum times pattern can appear for the filter to match

GetMinCount(self) int

Get the minimum times pattern must appear for the filter to match

GetPattern(self) rdkit.Chem.rdchem.Mol
IsValid(self) bool

Returns True if the SmartsMatcher is valid

SetMaxCount(self, count: int) None

Set the maximum times pattern can appear for the filter to match

SetMinCount(self, count: int) None

Set the minimum times pattern must appear to match

SetPattern(self, pat: rdkit.Chem.rdchem.Mol) None
SetPattern(self, pat: str) None

Overloaded function.

  1. SetPattern(self, pat: rdkit.Chem.rdchem.Mol) -> None

Set the pattern molecule for the SmartsMatcher

  1. SetPattern(self, pat: str) -> None

Set the smarts pattern for the Smarts Matcher (warning: MinimumCount is not reset)