fishankhan's picture
Initial protein predictor
fbdaace
import gradio as gr
import torch
from transformers import EsmForProteinFolding, EsmTokenizer
import py3Dmol
# Load model
model = EsmForProteinFolding.from_pretrained("facebook/esmfold_v1")
tokenizer = EsmTokenizer.from_pretrained("facebook/esmfold_v1")
def predict_structure(sequence):
# Tokenize sequence
inputs = tokenizer(sequence, return_tensors="pt", add_special_tokens=False)
# Predict structure (ML happens here)
with torch.no_grad():
output = model(**inputs)
# Extract PDB string
pdb_str = output["pdb"]
# Visualize structure
viewer = py3Dmol.view(width=400, height=400)
viewer.addModel(pdb_str, "pdb")
viewer.setStyle({"cartoon": {"color": "spectrum"}})
viewer.zoomTo()
return viewer.show(), pdb_str
# Gradio UI
iface = gr.Interface(
fn=predict_structure,
inputs=gr.Textbox(label="Enter Amino Acid Sequence", placeholder="MKTAYIAKQRQISFVK..."),
outputs=[
gr.HTML(label="3D Structure"),
gr.Textbox(label="PDB Output")
],
title="Protein Structure Prediction",
description="Enter a protein sequence to predict its 3D structure using ESMFold."
)
iface.launch()