Skip to content

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.