Skip to contents

MaccsFingerprint: 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.

Usage

MaccsFingerprint(smiles)

MolecularProperties(smiles)

ReosFilter(
  smiles,
  rule_sets = "Inpharmatica",
  mw = c(0, 500),
  logp = c(-5, 5),
  hbd = c(0, 5),
  hba = c(0, 10),
  tpsa = c(0, 200),
  rot = c(0, 10)
)

MorganEnvironments(smiles, radius = 2)

SaScore(smiles, fragment_scores = NULL)

Arguments

smiles

SMILES string.

rule_sets

Character vector of alert rule sets to apply.

mw, logp, hbd, hba, tpsa, rot

Length-two inclusive property ranges.

radius

Morgan radius.

fragment_scores

Named numeric vector or list of environment identifier to contribution (names are the identifiers as strings).

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