GuacaMol Oracle¶
An online oracle that scores arbitrary SMILES via a GuacaMol composite/multi-property
optimisation (MPO) benchmark task (e.g. osimertinib_mpo), computed fresh via RDKit on
every predict() call. For benchmark tasks, GuacaMol(BaseDataset).query() already
scores this way — there’s no corpus lookup for that mode either; every SMILES is re-scored
by the task function. What GuacaMolOracle avoids is everything else bundled into
GuacaMol(BaseDataset). Constructing one downloads and RDKit-scores GuacaMol’s entire
~1.6M-molecule corpus up front, whether or not that corpus ever gets used. It also returns
labels as a BaseDataset, which is why Oracle
classifies it as offline by type (see Oracle’s
own “the oracle is the dataset” vs. “the oracle is a model” contract). GuacaMolOracle is
a plain BaseModel instead: no corpus,
near-instant to construct, and it degrades gracefully on invalid SMILES (returns 0.0)
rather than raising — useful when a search protocol proposes something malformed. See
Switch offline to online for the online/offline
Oracle contract this implements.
MPO scores beat a single raw physicochemical property (e.g. LogP, QED) as an online AL target because raw properties are smooth functions of 2D structure — a surrogate learns them from very little data, leaving acquisition strategy nothing to do. MPO scores combine several thresholded/Gaussian sub-terms via a geometric mean instead, producing a sharper reward landscape: a few genuinely good candidates, mostly redundant.