import time import traceback import gradio as gr from gradio_molecule3d import Molecule3D from run_on_seq import run_on_sample_seqs from env_consts import RUN_CONFIG_PATH, OUTPUT_PROT_PATH, OUTPUT_LIG_PATH, MODEL_NAME_TO_CKPT def predict(input_sequence, input_ligand, input_protein, model_variation): print("Strating inference!!!!!!!!!!!!!!!!!", input_sequence, input_ligand, input_protein) start_time = time.time() try: ckpt_path = MODEL_NAME_TO_CKPT[model_variation] metrics = run_on_sample_seqs(input_sequence, input_protein, input_ligand, OUTPUT_PROT_PATH, OUTPUT_LIG_PATH, RUN_CONFIG_PATH, ckpt_path) end_time = time.time() run_time = end_time - start_time return [OUTPUT_PROT_PATH, OUTPUT_LIG_PATH], metrics, run_time except Exception as e: print(f"Error during inference: {e}") traceback.print_exc() # Print the full traceback return None, {"error": str(e)}, "Error occurred" # return error message to the output. with gr.Blocks() as app: print("Starting app!!!!") gr.Markdown("DockFormer") model_variation = gr.Dropdown( choices=["DockFormer-Screen", "DockFormer-PDBBind", "DockFormer-PLINDER"], label="Select model variation", value="DockFormer-Screen" # Default value ) # gr.Markdown("Title, description, and other information about the model") with gr.Row(): input_sequence = gr.Textbox(lines=3, label="Input Protein sequence (FASTA)") input_ligand = gr.Textbox(lines=3, label="Input ligand SMILES") with gr.Row(): # input_msa = gr.File(label="Input Protein MSA (A3M)") input_protein = gr.File(label="Input protein monomer") # 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( [ [ "MLLLPLPLLLFLLCSRAEAGEIIGGTESKPHSRPYMAYLEIVTSNGPSKFCGGFLIRRNFVLTAAHCAGRSITVTLGAHNITEEEDTWQKLEVIKQFRHPKYNTSTLHHDIMLLKLKEKASLTLAVGTLPFPSQKNFVPPGRMCRVAGWGRTGVLKPGSDTLQEVKLRLMDPQACSHFRDFDHNLQLCVGNPRKTKSAFKGDSGGPLLCAGVAQGIVSYGRSDAKPPAVFTRISHYRPWINQILQAN", "[nH]1c5c(c(c1C(c2ccccc2)C3=C(C(CC3=O)c4ccccc4)O)CCNC(=O)C)ccc(c5)CC", "resources/example/L1001.pdb" ], ], [input_sequence, input_ligand, input_protein], ) reps = [ { "model": 0, "style": "cartoon", "color": "whiteCarbon", }, { "model": 1, "style": "stick", "color": "greenCarbon", } ] out = Molecule3D(reps=reps) metrics = gr.JSON(label="Metrics") run_time = gr.Textbox(label="Runtime") btn.click(predict, inputs=[input_sequence, input_ligand, input_protein, model_variation], outputs=[out, metrics, run_time]) app.launch()