File size: 4,264 Bytes
46b9840 | 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 | import torch
from DeepPD.predictor import predict
from DeepPD.data_helper import Data2EqlTensor
import gradio as gr
from Bio import SeqIO
device = "cuda" if torch.cuda.is_available() else "cpu"
def mus_classifier(file,threshold):
data = []
for record in SeqIO.parse(file.name, 'fasta'):
data.append((record.id, str(record.seq)))
seqs,_ = Data2EqlTensor(data,40)
mus_peptide_pred = predict(seqs,data, './weight-Mus/4.pth', threshold, device)
return mus_peptide_pred
def homo_classifier(file,threshold):
data = []
for record in SeqIO.parse(file.name, 'fasta'):
data.append((record.id, str(record.seq)))
seqs,_ = Data2EqlTensor(data,40)
homo_peptide_pred = predict(seqs, data, './weight-Homo/4.pth', threshold, device)
return homo_peptide_pred
# {peptide_id:[Type:int(1->peptide,0->non-peptide)]}
with gr.Blocks() as demo:
gr.Markdown(" ## DeepPD")
gr.Markdown("In this study, we developed a peptide detectability prediction model. The model was used to predict the probability that an amino acid sequence is a peptide.")
with gr.Tab("Prediction Model(Homo sapiens)"):
with gr.Row():
with gr.Column(scale=2):
input_fasta_homo = gr.File()
with gr.Column(scale=2):
homo_cutoff = gr.Slider(0, 1, step=0.1, value=0.5, interactive=True, label="Threshold")
gr.Markdown("### Note")
gr.Markdown("- Limit the number of input sequences to less than 128.")
gr.Markdown("- The file should be the Fasta format.")
gr.Markdown("- We used only the first 20 amino acids of each N-terminal and C-terminal of the sequence for prediction.")
image_button_homo = gr.Button("Submit")
with gr.Column():
# gr.Markdown(" ### Flip text or image files using this demo.")
gr.Markdown("Note: the output scores indicates the probability of the input sequence to be predicted as a Peptide or a Non-Peptide.")
frame_homo_output = gr.DataFrame(
headers=["Sequence Id", "Sequence", "Probability of peptides", "Peptide"],
datatype=["str", "str", "str", 'str'],)
image_button_homo.click(homo_classifier, inputs=[input_fasta_homo, homo_cutoff], outputs=frame_homo_output)
with gr.Tab("Prediction Model(Mus musculus)"):
# cutoff = gr.Slider(0, 1, step=0.1, value=0.5, interactive=True)
with gr.Row():
with gr.Column(scale=2):
input_fasta_mus = gr.File()
# cutoff = gr.Slider(0, 1, step=0.1, value=0.5, interactive=True, label="threshold")
# image_button = gr.Button("Submit")
with gr.Column(scale=2):
mus_cutoff = gr.Slider(0, 1, step=0.1, value=0.5, interactive=True, label="Threshold")
gr.Markdown("### Note")
gr.Markdown("- Limit the number of input sequences to less than 128.")
gr.Markdown("- The file should be the Fasta format.")
gr.Markdown("- We used only the first 20 amino acids of each N-terminal and C-terminal of the sequence for prediction.")
image_button_mus = gr.Button("Submit")
with gr.Column():
# gr.Markdown(" ### Flip text or image files using this demo.")
gr.Markdown("Note: the output scores indicates the probability of the input sequence to be predicted as a Peptide or a Non-Peptide.")
frame_mus_output = gr.DataFrame(
headers=["Sequence Id", "Sequence", "Probability of peptides", "Peptide"],
datatype=["str", "str", "str", 'str'],)
image_button_mus.click(mus_classifier, inputs=[input_fasta_mus, mus_cutoff], outputs=frame_mus_output)
with gr.Accordion("Citation"):
gr.Markdown("- GitHub: https://github.com/leonern/DeepPD")
with gr.Accordion("License"):
gr.Markdown("- Released under the [MIT license](https://github.com/leonern/DeepPD/blob/main/LICENSE). ")
with gr.Accordion("Contact"):
gr.Markdown("- If you have any questions, please file a Github issue or contact me at 107552103310@stu.xju.edu.cn")
demo.queue(4)
demo.launch() #share=True |