
Cheminformatics filters on SMILES: MACCS keys, REOS alerts and synthetic accessibility
Source:R/ChemFilters.R
MaccsFingerprint.RdMaccsFingerprint: the 166 public MACCS structural keys as SMARTS
indicators (the definitions of RDKit's MACCSkeys.py). Key k is on
when its SMARTS has more than the listed number of distinct matches; key
125 counts SSSR rings whose bonds are all aromatic (on above one), key 166
counts fragments (on above one), and key 1 (isotope) is undefined as in
RDKit.
Value
MaccsFingerprint: list with on_bits and bits (length 167,
index 1 unused). MolecularProperties: list with MW, LogP, HBD,
HBA, TPSA, Rot, heavy_atoms, charge. ReosFilter: list with passed,
filter, alerts, properties, violations. MorganEnvironments: list
with counts (named by identifier) and environments (identifier, atom,
radius). SaScore: list with score, fragment_score, complexity,
symmetry, n_stereo, n_spiro, n_bridgehead, macrocycle.
Details
MolecularProperties: the rd_filters descriptor set, namely average
molecular weight, Wildman-Crippen logP, the distinct matches of RDKit's
NumHBD and NumHBA patterns, Ertl's topological polar surface area over N
and O, RDKit's strict rotatable-bond count, heavy atoms and total charge.
ReosFilter: a REOS-style nuisance filter (Walters and Murcko 2002)
as implemented in rd_filters: a molecule passes when no substructure alert
of the chosen rule sets matches and every property lies in its closed
range. Defaults are rd_filters' rules.json: MW 0 to 500, logP -5 to 5, HBD
0 to 5, HBA 0 to 10, TPSA 0 to 200, rotatable bonds 0 to 10, Inpharmatica
alerts. Rule sets: Glaxo, Dundee, BMS, PAINS, SureChEMBL, MLSMR,
Inpharmatica, LINT (1251 alerts in all).
MorganEnvironments: unfolded Morgan (ECFP-like) environment
identifiers as RDKit's generator computes them, from invariants hashing
atomic number, total degree, total hydrogens, charge, mass shift and ring
membership with RDKit's 32-bit hash_combine, dropping an environment whose
bond set was already seen and retiring its atom.
SaScore: the synthetic accessibility score of Ertl and Schuffenhauer
(2009), 1 (easy) to 10 (hard), as RDKit's sascorer: the count-weighted mean
fragment contribution of the radius-2 Morgan environments (unknown ones
score -4) plus complexity penalties for size, stereocentres, spiro and
bridgehead atoms and macrocycles, a symmetry correction, and the mapping to
1 to 10 with smoothing above 8. Fragment contributions are supplied by the
caller (RDKit's fpscores data are not bundled), so with none given every
environment counts as unknown and only the complexity terms inform the
score. Identical to the Python arm morie.fn.chemfilt (atom indices
1-based here, 0-based there).
References
Durant, J. L., Leland, B. A., Henry, D. R. and Nourse, J. G. (2002). Reoptimization of MDL keys for use in drug discovery. Journal of Chemical Information and Computer Sciences 42, 1273-1280.
Walters, W. P. and Murcko, M. A. (2002). Prediction of drug-likeness. Advanced Drug Delivery Reviews 54, 255-271.
Rogers, D. and Hahn, M. (2010). Extended-connectivity fingerprints. Journal of Chemical Information and Modeling 50, 742-754.
Ertl, P. and Schuffenhauer, A. (2009). Estimation of synthetic accessibility score of drug-like molecules based on molecular complexity and fragment contributions. Journal of Cheminformatics 1, 8.
Ertl, P., Rohde, B. and Selzer, P. (2000). Fast calculation of molecular polar surface area as a sum of fragment-based contributions. Journal of Medicinal Chemistry 43, 3714-3717.
Examples
MaccsFingerprint("CNO")$on_bits
#> [1] 24 68 69 71 93 94 102 124 131 139 151 158 160 161 164
MolecularProperties("CC(=O)Oc1ccccc1C(=O)O")$TPSA
#> [1] 63.6
ReosFilter("CC(=O)Oc1ccccc1C(=O)O")$filter
#> [1] "OK"
MorganEnvironments("CC", radius = 1)$counts
#> 2246728737 3545175291
#> 2 1
SaScore("c1ccccc1")$complexity
#> [1] -0.05399428