Spaces:
Running
Running
File size: 6,087 Bytes
c78ecd5 952c4f4 c78ecd5 952c4f4 c78ecd5 952c4f4 c78ecd5 952c4f4 46bec0c 952c4f4 bd81d17 424b04d c78ecd5 46bec0c 952c4f4 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 46bec0c c78ecd5 bd81d17 424b04d c78ecd5 952c4f4 c78ecd5 952c4f4 c78ecd5 952c4f4 |
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 |
import os
import base64
import gradio as gr
import pandas as pd
from apscheduler.schedulers.background import BackgroundScheduler
from src.about import (
CITATION_BUTTON_LABEL,
CITATION_BUTTON_TEXT,
)
from src.display.css_html_js import custom_css
from src.envs import API, REPO_ID
current_dir = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(current_dir, "images/pb_logo.png"), "rb") as image_file:
main_logo = base64.b64encode(image_file.read()).decode('utf-8')
def restart_space():
API.restart_space(repo_id=REPO_ID)
TITLE="""
# ProteinBench: A Holistic Evaluation of Protein Foundation Models"""
INTRO_TEXT="""
Recent years have witnessed a surge in the development of protein foundation models,
significantly improving performance in protein prediction and generative tasks
ranging from 3D structure prediction and protein design to conformational dynamics.
However, the capabilities and limitations associated with these models remain poorly understood due to the absence of a unified evaluation framework.
To fill this gap, we introduce <b>ProteinBench</b>,
a holistic evaluation framework designed to enhance the transparency of protein foundation models.
Our approach consists of three key components:
(i) A taxonomic classification of tasks that broadly encompass the main challenges in the protein domain,
based on the relationships between different protein modalities;
(ii) A multi-metric evaluation approach that assesses performance across four key dimensions: quality, novelty, diversity, and robustness;
and (iii) In-depth analyses from various user objectives, providing a holistic view of model performance.
Our comprehensive evaluation of protein foundation models reveals several key findings that shed light on their current capabilities and limitations.
To promote transparency and facilitate further research, we release the evaluation dataset, code, and a public leaderboard publicly for further analysis
and a general modular toolkit. We intend for ProteinBench to be a living benchmark for establishing a standardized,
in-depth evaluation framework for protein foundation models, driving their development and application while fostering collaboration within the field.
## [Paper](https://www.arxiv.org/pdf/2409.06744) | [Website](https://proteinbench.github.io/)
"""
# ### Space initialisation
demo = gr.Blocks(css=custom_css)
with demo:
with gr.Row():
with gr.Column(scale=6):
gr.Markdown(TITLE)
with gr.Row():
with gr.Column(scale=6):
gr.Markdown(INTRO_TEXT)
with gr.Column(scale=1):
gr.HTML(f'<img src="data:image/jpeg;base64,{main_logo}" style="width:16em;vertical-align: middle"/>')
with gr.Tabs(elem_classes="tab-buttons") as tabs:
with gr.TabItem("π Inverse Folding Leaderboard", elem_id='inverse-folding-table', id=0,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/inverse_folding.csv'),
height=1000,
)
with gr.TabItem("π Structure Design Leaderboard", elem_id='structure-design-table', id=1,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/structure_design.csv'),
height=1000,
)
with gr.TabItem("π Sequence Design Leaderboard", elem_id='sequence-design-table', id=2,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/sequence_design.csv'),
height=1000,
)
with gr.TabItem("π Sequence-Structure Co-Design Leaderboard", elem_id='co-design-table', id=3,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/co_design.csv'),
height=1000,
)
with gr.TabItem("π Motif Scaffolding Leaderboard", elem_id='motif-scaffolding-table', id=4,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/motif_scaffolding.csv'),
height=1000,
)
with gr.TabItem("π Antibody Design Leaderboard", elem_id='antibody-design-table', id=5,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/antibody_design.csv'),
height=1000,
)
with gr.TabItem("π
Protein Folding Leaderboard", elem_id='protein-folding-table', id=6,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/protein_folding.csv'),
height=1000,
)
with gr.TabItem("π
Multi-State Prediction Leaderboard", elem_id='multi-state-prediction-table', id=7,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/multi_state_prediction.csv'),
height=1000,
)
with gr.TabItem("π
Conformation Prediction Leaderboard", elem_id='conformation-prediction-table', id=8,):
with gr.Row():
inverse_folding_table = gr.components.DataFrame(
pd.read_csv('data/conformation_prediction.csv'),
height=1000,
)
with gr.Row():
with gr.Accordion("π Citation", open=True):
citation_button = gr.Textbox(
value=CITATION_BUTTON_TEXT,
label=CITATION_BUTTON_LABEL,
lines=9,
elem_id="citation-button",
show_copy_button=True,
)
scheduler = BackgroundScheduler()
scheduler.add_job(restart_space, "interval", seconds=1800)
scheduler.start()
demo.queue(default_concurrency_limit=40).launch() |