示例#1
0
def zinc_molecule_filter(mol):
    """
    Flags molecules based on problematic functional groups as
    provided set of ZINC rules from
    http://blaster.docking.org/filtering/rules_default.txt.
    :param mol: rdkit mol object
    :return: Returns True if molecule is okay (ie does not match any of
    therules), False if otherwise
    """
    params = FilterCatalogParams()
    params.AddCatalog(FilterCatalogParams.FilterCatalogs.ZINC)
    catalog = FilterCatalog(params)
    return not catalog.HasMatch(mol)
示例#2
0
def init():
    global catalog
    params = FilterCatalogParams()
    params.AddCatalog(FilterCatalogParams.FilterCatalogs.PAINS_A)
    params.AddCatalog(FilterCatalogParams.FilterCatalogs.PAINS_B)
    params.AddCatalog(FilterCatalogParams.FilterCatalogs.PAINS_C)
    catalog = FilterCatalog(params)
示例#3
0
# https://www.rdkit.org/docs/source/rdkit.Chem.rdfiltercatalog.html

import pandas as pd
from rdkit import Chem
from rdkit.Chem.FilterCatalog import FilterCatalog, FilterCatalogParams
from rdkit.Chem import Draw
# from rdkit.Chem.Draw import IPythonConsole

# Read list with SMARTS for PAINS
pains_list = pd.read_csv("../pains/wehi_pains.csv", header=None)
pains_list.columns = ["SMARTS", "ID"]

# initialize filter
params = FilterCatalogParams()
params.AddCatalog(FilterCatalogParams.FilterCatalogs.PAINS)
catalog = FilterCatalog(params)


def pass_pains(smiles):
    # Returns True if mol has no PAINS substructures
    mol = Chem.MolFromSmiles(smiles)
    entry = catalog.GetFirstMatch(mol)  # Get first matching PAINS
    # entry.GetDescription().capitalize()
    if entry:
        return False
    return True


def pains_highlight(smiles):
    # Returns image of molecule with PAINS highlighted
    # Note: maybe some SMARTS strings will throw errors: https://github.com/rdkit/rdkit/issues/3912