File size: 8,841 Bytes
d491463
 
 
2826344
d491463
2826344
d491463
 
a3d3554
 
2826344
a3d3554
 
2826344
 
d491463
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2826344
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
import torch
import torch.nn.functional as F  # Importing the functional module for softmax
from torch import nn
import zipfile
import gradio as gr
from transformers import BertTokenizer, BertForSequenceClassification
import os

tokenizer = BertTokenizer.from_pretrained("dmis-lab/biobert-base-cased-v1.1")
model = BertForSequenceClassification.from_pretrained("dmis-lab/biobert-base-cased-v1.1", num_labels=2)

# loading the pretrained weights into the model
model.load_state_dict(torch.load('Bio_BERT_model.pth'))

device = "cpu"

def predict_drug_target_interaction(sentence):
    # Tokenize the input sentence
    inputs = tokenizer.encode_plus(
        sentence,
        add_special_tokens=True,
        max_length=128,
        padding="max_length",
        truncation=True,
        return_tensors='pt'
    )

    input_ids = inputs['input_ids'].to(device)
    attention_mask = inputs['attention_mask'].to(device)
    token_type_ids = inputs.get('token_type_ids', None)
    if token_type_ids is not None:
        token_type_ids = token_type_ids.to(device)

    # Make prediction
    with torch.inference_mode():
        outputs = model(input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)
        logits = outputs.logits
        probabilities = F.softmax(logits, dim=-1)  # Calculate softmax probabilities
        predictions = torch.argmax(logits, dim=-1)

    # Convert predictions to human-readable labels
    label = 'Drug-Target Interaction' if predictions.item() == 1 else 'No Interaction'
    
    # Extract probabilities for both classes
    prob_interaction = probabilities[0][1].item()  # Probability for Drug-Target Interaction
    prob_no_interaction = probabilities[0][0].item()  # Probability for No Interaction

    return label, prob_interaction, prob_no_interaction

# Gradio Interface
def combined_prediction_and_extraction(sentence):
    # Get the prediction and probabilities
    label, prob_interaction, prob_no_interaction = predict_drug_target_interaction(sentence)

    if prob_interaction > prob_no_interaction:
      response = "There is a possible interaction between drug and target in the given input! ✔️"
    elif prob_interaction < prob_no_interaction:
      response = "There is NO interaction between the drug and target in the given input. ❌"
    else:
      response = "This interaction needs further studies to classify. 🔬"

    
    pred_labels_and_probs_gradio = {"Drug Interaction": prob_interaction, "No Interaction": prob_no_interaction}
    
    return pred_labels_and_probs_gradio, response

# Description for the new tab
description = """
# The Importance of Drug-Target Interactions in Pharmaceutical Development

## 🌟 **Mechanism of Action**
Understanding how a drug interacts with its target—usually a protein, enzyme, or receptor—is essential for uncovering its mechanism of action. This insight helps researchers grasp the therapeutic effects of drugs, paving the way for the development of **more effective treatments**.

## 🎯 **Selectivity and Specificity**
Targeting specific proteins and pathways minimizes side effects and boosts drug efficacy. **High specificity** ensures that the drug primarily interacts with its intended target, reducing the risk of off-target effects that could lead to adverse reactions.

## 💡 **Drug Design and Development**
Knowledge of drug-target interactions is crucial for crafting new pharmaceuticals. **Optimizing lead compounds** to enhance their affinity for the target can significantly elevate a drug's effectiveness, leading to **innovative treatment solutions**.

## 🔍 **Predicting Pharmacokinetics and Pharmacodynamics**
Understanding these interactions aids in predicting how a drug behaves in the body, including its absorption, distribution, metabolism, and excretion. This knowledge is vital for determining **appropriate dosages** and anticipating potential drug-drug interactions.

## 🛡️ **Resistance Mechanisms**
In fields like oncology and infectious diseases, drug-target interactions are crucial for understanding how **resistance** to treatments develops. By studying these interactions, researchers can devise strategies to **overcome or prevent resistance**, ensuring better patient outcomes.

## ⚠️ **Safety and Toxicity**
Understanding how drugs interact with unintended targets is essential for assessing **safety profiles**. This information is key to identifying potential toxic effects and **mitigating risks** associated with drug therapy.

"""

datainfo = """
The most prominent node in the graph is metformin, which is linked to various targets. This suggests that metformin has a wide range of biological interactions, possibly indicating its involvement in multiple pathways or therapeutic effects beyond its traditional use as an anti-diabetic drug.

* Metformin interacts with AMP-activated protein kinase (AMPK), which is known to play a crucial role in cellular energy homeostasis. This aligns with metformin’s known mechanism of action in diabetes, where it helps modulate glucose metabolism through AMPK activation.
Other significant metformin interactions include ROR1.69 and nucleoside, indicating additional pathways of relevance, possibly connected to immune modulation or other metabolic pathways.

* Warfarin, an anticoagulant, is another highly connected node. Its targets include CYP2C9, an enzyme critical for its metabolism, and S-warfarin, which represents its active form. The network also includes its interaction with estrogen, AXIN1, and monoamine oxidase A, indicating potential off-target effects or interactions with other biological pathways.

* The interaction between serotonin transporter protein and drugs like norepinephrine and serotonin indicates involvement in pathways related to mood regulation, which could be pertinent in psychiatric conditions.

> The network shows that some drugs share common targets. Both metformin and warfarin interact with multiple common targets (like estrogen). This overlap could imply the potential for drug-drug interactions in patients taking both medications, possibly requiring careful management of therapy.
"""


def display_image():
    return "DTI_knowledge graph highlighted.png"  # Change this to your image path or URL



title = "Unlocking Precision: Predicting Drug-Target Interactions for Safer, Smarter Treatments"
article = "Stay Safe!"
examples = [
    ["Targeting the secretion of sEV PD-L1 has emerged as a promising strategy to enhance immunotherapy"],
    ["These results suggested that AM would be a useful platform for the development of a new radiopharmaceutical targeting ER"],
    ["AP significantly depended on a three-way interaction among the mouse group ORX-KO vs WT, the wake-sleep state, and the drug or vehicle infused."],
    ["In addition, the pharmacodynamic genes SLC6A4 serotonin transporter and HTR2A serotonin-2A receptor have been examined in relation to efficacy and side effect profiles of these drugs"]
]


with gr.Blocks() as demo:
    gr.Markdown(f"# {title}")

    with gr.Tab("Model Inference"):
        with gr.Row():
            with gr.Column(scale=1, min_width=300):
                input_text = gr.Textbox(label="Input", placeholder="Enter your text here...")
                gr.Markdown("### Examples")
                gr.Examples(
                    examples=examples,
                    inputs=input_text,
                    outputs=None,  # Outputs are handled by the button click
                    label="Select an Example"
                )
                
                # Create a Row for Submit and Clear buttons
                with gr.Row():
                    submit_button = gr.Button("Submit")
                    clear_button = gr.Button("Clear")

            with gr.Column(scale=1, min_width=300):
                predictions_output = gr.Label(num_top_classes=2, label="Predictions")
                inference_output = gr.Textbox(label="Prediction Inference", interactive=False)  # Making it read-only

                # Bind the button to the prediction function
                submit_button.click(
                    fn=combined_prediction_and_extraction,
                    inputs=input_text,
                    outputs=[predictions_output, inference_output]
                )

                # Bind the clear button to reset the input field and outputs
                clear_button.click(
                    fn=lambda: ("", "", ""),  # Reset input and outputs
                    inputs=None,
                    outputs=[input_text, predictions_output, inference_output]
                )
    with gr.Tab("Description"):
      gr.Markdown(description)
    
    with gr.Tab("About Data"):
      gr.Markdown(datainfo)
      gr.Image(value=display_image(), type="filepath")


# Launch the interface
demo.launch()