Spaces:
Running
Running
File size: 3,362 Bytes
bebad14 8b16c9c bebad14 dffaf30 bebad14 401871e 28cb117 21a7e32 bebad14 3240ef1 bebad14 fd32c9f 401871e 8b16c9c 401871e bebad14 401871e bebad14 f624b87 bebad14 fd32c9f 085cf46 3240ef1 fd32c9f 085cf46 fd32c9f f354223 bebad14 28cb117 bebad14 44470f9 28cb117 21a7e32 fd32c9f 21a7e32 fd32c9f 28cb117 21a7e32 28cb117 6242bac 28cb117 4853a01 54bb0ac 6242bac 54bb0ac 4853a01 6242bac 4853a01 54bb0ac 6242bac 54bb0ac 6242bac 54bb0ac 6242bac 54bb0ac 28cb117 8b16c9c 28cb117 8b16c9c bebad14 21a7e32 dffaf30 bebad14 |
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 |
import time
import json
import gradio as gr
from gradio_molecule3d import Molecule3D
import numpy as np
from biotite.structure.io.pdb import PDBFile
def set_all_to_zero(input_pdb_file_1, input_pdb_file_2, output_file):
structure1 = PDBFile.read(input_pdb_file_1).get_structure()
structure2 = PDBFile.read(input_pdb_file_2).get_structure()
structure1.coord = np.zeros_like(structure1.coord)
structure2.coord = np.zeros_like(structure2.coord)
out_structure = structure1 + structure2
file = PDBFile()
file.set_structure(out_structure)
file.write(output_file)
def predict(input_seq_1, input_msa_1, input_protein_1, input_seq_2, input_msa_2, input_protein_2):
# def predict(input_protein_1, input_protein_2):
start_time = time.time()
# Do inference here
# return an output pdb file with the protein and two chains A and B.
output_file = "test_out.pdb"
set_all_to_zero(input_protein_1, input_protein_2, output_file)
# also return a JSON with any metrics you want to report
metrics = {"F_nat": 100}
end_time = time.time()
run_time = end_time - start_time
return output_file, json.dumps(metrics), run_time
with gr.Blocks() as app:
gr.Markdown("# Template for inference")
gr.Markdown("Title, description, and other information about the model")
with gr.Row():
with gr.Column():
input_seq_1 = gr.Textbox(lines=3, label="Input Protein 1 sequence (FASTA)")
input_msa_1 = gr.File(label="Input MSA Protein 1 (A3M)")
input_protein_1 = gr.File(label="Input Protein 1 monomer (PDB)")
with gr.Column():
input_seq_2 = gr.Textbox(lines=3, label="Input Protein 2 sequence (FASTA)")
input_msa_2 = gr.File(label="Input MSA Protein 2 (A3M)")
input_protein_2 = gr.File(label="Input Protein 2 structure (PDB)")
# define any options here
# for automated inference the default options are used
# slider_option = gr.Slider(0,10, label="Slider Option")
# checkbox_option = gr.Checkbox(label="Checkbox Option")
# dropdown_option = gr.Dropdown(["Option 1", "Option 2", "Option 3"], label="Radio Option")
btn = gr.Button("Run Inference")
gr.Examples(
[
[
"",
"",
"3v1c_A.pdb",
"",
"",
"3v1c_B.pdb",
],
],
[input_seq_1, input_msa_1, input_protein_1, input_seq_2, input_msa_2, input_protein_2],
)
reps = [
{
"model": 0,
"style": "cartoon",
"chain": "A",
"color": "whiteCarbon",
},
{
"model": 0,
"style": "cartoon",
"chain": "B",
"color": "greenCarbon",
},
{
"model": 0,
"chain": "A",
"style": "stick",
"sidechain": True,
"color": "whiteCarbon",
},
{
"model": 0,
"chain": "B",
"style": "stick",
"sidechain": True,
"color": "greenCarbon"
}
]
# outputs
out = Molecule3D(reps=reps)
metrics = gr.JSON(label="Metrics")
run_time = gr.Textbox(label="Runtime")
btn.click(predict, inputs=[input_seq_1, input_msa_1, input_protein_1, input_seq_2, input_msa_2, input_protein_2], outputs=[out, metrics, run_time])
app.launch()
|