Skip to main content
Docs

Search guides and API endpoints, for example “Idempotency-Key” or “submit job”.

    Tools · Custom Modeling

    Custom ADMET Models

    Adapt ADMET-AI predictions to your own assay: recalibrate an endpoint onto your units, or stack a model on all 41 predictions
    On this page

    Prices, workflows, and method papersOpen in the app

    Run it from the API

    Submit with Submit a job and the job_type below. Price it first with Estimate job reservation cost: submitting reserves that amount from your wallet, and the charge settles at the actual runtime.

    Custom ADMET Model Training train-admet-custom

    Job type
    train-admet-custom
    Hardware
    cpu (default)
    Typical runtime
    10 min on CPU

    Payload

    Payload fields
    FieldTypeDescription
    model_namerequiredstring

    Limits: min length 1

    admet_endpointrequiredstring

    One of: "admet_hia_hou", "admet_bioavailability_ma", "admet_solubility_aqsoldb", "admet_lipophilicity_astrazeneca", "admet_hydrationfreeenergy_freesolv", "admet_caco2_wang", "admet_pampa_ncats", "admet_pgp_broccatelli", "admet_bbb_martins", "admet_ppbr_az", "admet_vdss_lombardo", "admet_half_life_obach", "admet_clearance_hepatocyte_az", "admet_clearance_microsome_az", "admet_cyp1a2_veith", "admet_cyp2c19_veith", "admet_cyp2c9_veith", "admet_cyp2d6_veith", "admet_cyp3a4_veith", "admet_cyp2c9_substrate_carbonmangels", "admet_cyp2d6_substrate_carbonmangels", "admet_cyp3a4_substrate_carbonmangels", "admet_herg", "admet_clintox", "admet_ames", "admet_dili", "admet_carcinogens_lagunin", "admet_ld50_zhu", "admet_skin_reaction", "admet_nr_ar", "admet_nr_ar_lbd", "admet_nr_ahr", "admet_nr_aromatase", "admet_nr_er", "admet_nr_er_lbd", "admet_nr_ppar_gamma", "admet_sr_are", "admet_sr_atad5", "admet_sr_hse", "admet_sr_mmp", "admet_sr_p53"

    taskstring

    Default: "regression"One of: "regression"

    methods[]string[]

    One of: "recal_linear", "recal_isotonic", "stack_linear", "stack_random_forest", "stack_lightgbm", "stack_svm"Limits: min items 1

    features[]string[]

    Default: ["morgan_counts","rdkit2d"]One of: "morgan_counts", "rdkit2d"

    prediction_transformstring

    Default: "none"One of: "none", "log10"

    morgan_radiusinteger

    Default: 2One of: 1, 2, 3, 4

    morgan_bitsinteger

    Default: 2048One of: 512, 1024, 2048, 4096

    input_data[]string[]

    Limits: min items 1, max items 10000

    input_formatstring

    Default: "smiles"One of: "smiles"

    targets[]number[]

    Limits: min items 1, max items 10000

    splits[]string[]

    One of: "train", "training", "val", "valid", "validation", "test"Limits: min items 1

    activity_tablestring | object[] | artifactRef
    smiles_columnstring

    Default: "smiles"Limits: min length 1

    target_columnstring

    Default: "p_activity"Limits: min length 1

    split_columnstring

    Limits: min length 1

    endpointstring

    Limits: min length 1

    include_censoredboolean

    Default: false

    training_data_sources[]object[]

    Limits: max items 1

    training_data_sources.sourcerequired"chembl"
    training_data_sources.releasestring | null
    selection_metricstring

    Default: "rmse"One of: "rmse", "mae", "r2"

    cv_foldsinteger

    Default: 5Limits: ≥ 3, ≤ 10

    split_methodstring

    One of: "random", "scaffold", "cluster", "provided"

    test_sizenumber

    Default: 0.1Limits: ≥ 0, ≤ 0.5

    random_seedinteger

    Limits: ≥ 0

    unitstring
    model_descriptionstring
    tags[]string[]

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "model_name": "admet-custom-tiny",
        "admet_endpoint": "admet_lipophilicity_astrazeneca",
        "input_data": ["CCO", "CCCO", "CCCCO", "CCCCCO", "CC(C)O", "… 35 more"],
        "targets": [-0.001, 0.389, 0.779, 1.169, 0.387, "… 35 more"],
        "methods": ["recal_linear", "recal_isotonic", "stack_linear"],
        "features": ["morgan_counts"],
        "morgan_bits": 512,
        "cv_folds": 3,
        "test_size": 0.2,
        "random_seed": 0,
        "unit": "logD",
    }
    
    estimate = client.jobs.estimate(job_type="train-admet-custom", payload=payload, resource="cpu")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-train-admet-custom-run",
        job_type="train-admet-custom",
        payload=payload,
        resource="cpu",
    )
    status = client.jobs.wait(job.process_id)
    if status.status == "completed":
        client.jobs.result(job.process_id, save_path=".")

    Sample data from the job catalog; long values are shortened here. Each job_name must be unique among your jobs.

    Workflow inputs

    • Table (list) · optionalCSV, TSV, JSON
    • Molecules (list) · optionalSMILES

    Workflow outputs

    • ArchiveZIP
    • TableCSV
    • Trained modelOPAQUE