Skip to main content

    Inference & export

    Load a DeepPurpose checkpoint, predict one drug-target pair or a CSV batch, run virtual_screening or oneliner.repurpose, and export the network to ONNX.

    DeepPurpose provides flexible inference options for drug-target interaction (DTI) prediction. This guide covers loading trained models and running predictions.

    Load a saved model

    from DeepPurpose import DTI as models
    
    # Load a trained model
    model = models.model_pretrained(path_dir="outputs/model")
    
    # Or use a pretrained model from the model zoo
    model = models.model_pretrained(model='MPNN_CNN_BindingDB')

    DeepPurpose includes several pretrained models trained on benchmark datasets:

    • MPNN_CNN_DAVIS: MPNN drug encoder + CNN target encoder, trained on DAVIS
    • Morgan_CNN_BindingDB: Morgan fingerprints + CNN, trained on BindingDB
    • Transformer_CNN_BindingDB: Transformer + CNN, trained on BindingDB

    Single prediction

    For quick predictions on individual drug-target pairs:

    from DeepPurpose import utils
    
    # Single drug-target pair prediction
    drug_smiles = "CC(=O)Oc1ccccc1C(=O)O"  # Aspirin
    target_sequence = "MKKFFDSRREQGGSGLGSGSSGGGGSTSGLGSGYIGRVFGIGRQQVTVDEVLAE..."
    
    # Encode and predict
    X_drug, X_target, _ = utils.data_process(
        X_drug=[drug_smiles],
        X_target=[target_sequence],
        y=[0],  # Dummy label for processing
        drug_encoding="Morgan",
        target_encoding="CNN",
        split_method='no_split'
    )
    
    score = model.predict(X_drug, X_target)
    print(f"Predicted binding affinity: {score[0]:.4f}")

    Batch predict

    import pandas as pd
    from DeepPurpose import utils
    
    data = pd.read_csv("inputs/predict.csv")
    
    # Process data for prediction (no split needed)
    X_drug, X_target, _ = utils.data_process(
        X_drug=data["smiles"].tolist(),
        X_target=data["protein"].tolist(),
        y=[0] * len(data),  # Dummy labels
        drug_encoding="Morgan",
        target_encoding="CNN",
        split_method='no_split'
    )
    
    scores = model.predict(X_drug, X_target)
    data["predicted_affinity"] = scores
    data.to_csv("outputs/predictions.csv", index=False)

    Virtual screening

    Screen a library of compounds against one or more targets:

    from DeepPurpose import virtual_screening
    
    # Screen drug library against target(s)
    result = virtual_screening.virtual_screening(
        X_drugs=drug_smiles_list,
        X_targets=target_sequence_list,
        model=model,
        drug_names=drug_names,
        target_names=target_names,
        result_folder="./screening_results"
    )
    
    # Results sorted by predicted affinity
    print(result.head(10))

    Export to ONNX (optional)

    If your model uses torch-based encoders, export for serving:

    import torch
    
    dummy_drug = torch.randn(1, model.drug_encoder.output_size).cuda()
    dummy_target = torch.randn(1, model.target_encoder.output_size).cuda()
    
    torch.onnx.export(
        model.network,
        (dummy_drug, dummy_target),
        "outputs/model.onnx",
        input_names=["drug", "target"],
        output_names=["score"],
        opset_version=17,
    )

    Run metadata

    • Log model path, git commit, and DeepPurpose/torch versions.
    • Include the encoding types (drug_encoding, target_encoding) with outputs.
    • Save a SUMMARY.json with run args and the number of predictions produced.

    Drug repurposing workflow

    DeepPurpose provides a streamlined one-liner API for drug repurposing:

    from DeepPurpose import oneliner
    
    # Repurpose approved drugs for a new target
    oneliner.repurpose(
        target='MKKFFDSRREQGGSGLGSGSSGGGGSTSGLGSGYIGRVFGIGRQQVTVDEVLAE...',
        target_name='SARS-CoV-2 3CL Protease',
        drug_names=['Remdesivir', 'Hydroxychloroquine', 'Lopinavir'],
        save_path='./repurposing_results'
    )

    The results include ranked predictions with confidence scores for potential drug candidates.

    Canvas Visualization

    When a DeepPurpose job completes, a result card appears on the canvas.

    • Card size: 300x250px
    • Border color: Brown (#795548)
    • Visualization: Scatter chart of binding probability predictions

    Tier 2 Metrics

    • Binding probability (%)
    • Interaction score
    • Drug SMILES
    • Target sequence snippet

    Was this page helpful?

    On this page

    On this page

    Loading...