ADMET (Admet)¶
Predict absorption, distribution, metabolism, excretion, and toxicity endpoints
via deeporigin.admet-properties (CLI: Admet, tool major version 2).
ADMET is billed (DO_TOGO, per molecule). Inline ligands are limited to
100 structures; larger sets upload a Ligand list file automatically and run
as an async workflow. Project-wide runs use ligands=[] with
client.project_id set and call start() only.
from deeporigin.drug_discovery import Admet, Ligand
ligand = Ligand.from_smiles("CCO")
admet = Admet(ligands=[ligand])
admet.properties = ["hERG_classification", "AMES_classification"]
df = admet.run()
Bulk and project runs¶
# 101+ ligands: async workflow (auto ligands_file)
from deeporigin.drug_discovery import LigandSet
ligand_set = LigandSet.from_csv("ligands.csv") # "smiles" column
large = Admet(ligands=ligand_set, batch_size=100) # optional; smaller batches run more in parallel (min 50)
large.start()
large.wait()
df = large.get_results()
# All ligands in the current project (client.project_id must be set):
project_admet = Admet(ligands=[])
project_admet.properties = ["hERG_classification"]
project_admet.start()
project_admet.wait()
df = project_admet.get_results()
Ligands that already have predictions¶
ADMET skips ligands that already have predictions. get_results() only
returns what that run predicted, so skipped ligands are not in it. To get predictions for your
ligands no matter which run made them, use fetch_results:
from deeporigin.drug_discovery import Admet
df = Admet.fetch_results(ligands, properties=["hERG_classification"])
You get one row per ligand that has predictions. If a property was predicted
more than once, the most recent value is used. Ligands are matched by their
platform ID, which they get from any ADMET run. You'll see a warning if some
ligands have no platform ID or no predictions yet (those are left out), or if a
requested property was never predicted (that value is empty, NaN). If none
of your ligands have predictions, you'll get an error instead.
ADMET also skips ligands that got no prediction on an earlier run with the same
method and model version. fetch_results names those ligands in its warning,
apart from ligands that were never run. To predict every ligand again, pass
force=True:
df = admet.run(force=True) # or admet.start(force=True)
Quotes and confirmation¶
Request an estimate with run(quote=True) or start(quote=True). When the
platform returns Quoted status from a normal run() (for example when the
cost exceeds your auto-approve threshold), run() returns None — call
confirm(), then get_results().
Molprops remains free; use Admet for toxicity and related ADMET endpoints,
not Molprops.
Working with existing runs¶
from deeporigin.drug_discovery import Admet
job = Admet.from_id("<executionId>")
job.get_results()
from_dto / from_id restore inline ligands, ligands_file, or project-only
inputs from Studio or prior SDK sessions.