update taxonomy to 2x5 (DesignApproach x MolecularSubject), fix diversity formula, real scores
Browse files- app.py +49 -57
- leaderboard_data.json +132 -253
app.py
CHANGED
|
@@ -28,42 +28,30 @@ ADMIN_PASSWORD = os.environ.get("BDB_ADMIN_PASSWORD", "")
|
|
| 28 |
# ═══════════════════════════════════════════════════════════════════
|
| 29 |
|
| 30 |
PAPER_URL = "#"
|
| 31 |
-
GITHUB_URL = "https://github.com/
|
| 32 |
-
HF_URL = "https://huggingface.co/spaces/
|
| 33 |
|
| 34 |
|
| 35 |
# ═══════════════════════════════════════════════════════════════════
|
| 36 |
# Taxonomy & scoring constants
|
| 37 |
# ═══════════════════════════════════════════════════════════════════
|
| 38 |
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
"
|
| 42 |
-
"
|
| 43 |
-
"complex_engineering",
|
| 44 |
-
"conformational_design",
|
| 45 |
-
]
|
| 46 |
-
TASK_TYPE_LABELS = {
|
| 47 |
-
"de_novo_binder": "De Novo Binder",
|
| 48 |
-
"sequence_optimization": "Seq Optimization",
|
| 49 |
-
"de_novo_backbone": "De Novo Backbone",
|
| 50 |
-
"complex_engineering": "Complex Eng.",
|
| 51 |
-
"conformational_design": "Conformational",
|
| 52 |
}
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
"
|
| 56 |
-
"
|
| 57 |
-
"
|
| 58 |
-
"
|
| 59 |
-
"
|
| 60 |
}
|
| 61 |
VALID_CELLS = {
|
| 62 |
-
"
|
| 63 |
-
"
|
| 64 |
-
"de_novo_backbone": {"str"},
|
| 65 |
-
"complex_engineering": {"enz", "sig", "str"},
|
| 66 |
-
"conformational_design": {"enz", "sig", "str", "flu"},
|
| 67 |
}
|
| 68 |
COMPONENTS = [
|
| 69 |
"approach",
|
|
@@ -415,7 +403,7 @@ def build_leaderboard_table(
|
|
| 415 |
|
| 416 |
|
| 417 |
def build_heatmap(entry: dict) -> str:
|
| 418 |
-
"""HTML heatmap table for one agent across
|
| 419 |
ts = entry.get("taxonomy_scores", {})
|
| 420 |
TH = (
|
| 421 |
"background:#0f172a;color:white;padding:0.6rem 0.8rem;"
|
|
@@ -427,15 +415,15 @@ def build_heatmap(entry: dict) -> str:
|
|
| 427 |
)
|
| 428 |
|
| 429 |
rows = []
|
| 430 |
-
for
|
| 431 |
cells = [
|
| 432 |
f'<td style="{TD};text-align:left;font-weight:600;'
|
| 433 |
-
f'background:#f8fafc">{
|
| 434 |
]
|
| 435 |
vals = []
|
| 436 |
-
for
|
| 437 |
-
if
|
| 438 |
-
val = ts.get(
|
| 439 |
bg = _heat_color(val)
|
| 440 |
text = f"{val:.0f}" if val is not None else "\u2014"
|
| 441 |
cells.append(f'<td style="{TD};background:{bg}">{text}</td>')
|
|
@@ -454,9 +442,9 @@ def build_heatmap(entry: dict) -> str:
|
|
| 454 |
)
|
| 455 |
rows.append(f'<tr>{"".join(cells)}</tr>')
|
| 456 |
|
| 457 |
-
|
| 458 |
-
f'<th style="{TH}">{
|
| 459 |
-
for
|
| 460 |
)
|
| 461 |
|
| 462 |
return f"""
|
|
@@ -464,8 +452,8 @@ def build_heatmap(entry: dict) -> str:
|
|
| 464 |
border-radius:10px;overflow:hidden;
|
| 465 |
box-shadow:0 1px 3px rgba(0,0,0,0.08)">
|
| 466 |
<thead><tr>
|
| 467 |
-
<th style="{TH};text-align:left">
|
| 468 |
-
{
|
| 469 |
<th style="{TH}">Avg</th>
|
| 470 |
</tr></thead>
|
| 471 |
<tbody>{''.join(rows)}</tbody>
|
|
@@ -586,8 +574,8 @@ def build_about() -> str:
|
|
| 586 |
</div>
|
| 587 |
<div {stat_box}>
|
| 588 |
<div style="font-size:1.8rem;font-weight:800;color:#0f172a">
|
| 589 |
-
|
| 590 |
-
<div style="font-size:0.78rem;color:#64748b">taxonomy
|
| 591 |
</div>
|
| 592 |
<div {stat_box}>
|
| 593 |
<div style="font-size:1.8rem;font-weight:800;color:#0f172a">
|
|
@@ -679,8 +667,8 @@ Response:
|
|
| 679 |
<strong>Novelty (5 pts)</strong> — sequence identity to
|
| 680 |
reference (lower identity = more novel = higher score)</p>
|
| 681 |
<p {p}>
|
| 682 |
-
<strong>Diversity (10 pts)</strong> —
|
| 683 |
-
diversity
|
| 684 |
</div>
|
| 685 |
|
| 686 |
<div {card}>
|
|
@@ -704,32 +692,36 @@ Response:
|
|
| 704 |
|
| 705 |
|
| 706 |
def chart_taxonomy_bar(entry: dict) -> go.Figure:
|
| 707 |
-
"""
|
| 708 |
ts = entry.get("taxonomy_scores", {})
|
| 709 |
-
|
| 710 |
-
|
| 711 |
-
vals = [v for v in ts.get(tt, {}).values() if v is not None]
|
| 712 |
-
avgs.append(sum(vals) / len(vals) if vals else 0)
|
| 713 |
|
| 714 |
-
fig = go.Figure(
|
| 715 |
-
|
| 716 |
-
|
| 717 |
-
|
| 718 |
-
|
| 719 |
-
|
| 720 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 721 |
textposition="auto",
|
| 722 |
-
)
|
| 723 |
-
|
| 724 |
mode = entry.get("mode") or "\u2014"
|
| 725 |
fig.update_layout(
|
| 726 |
**_base_layout(
|
| 727 |
title=dict(
|
| 728 |
-
text=f"{entry['agent_name']} ({mode}) \u2014 Score by
|
| 729 |
font_size=14,
|
| 730 |
),
|
| 731 |
yaxis=dict(range=[0, 100], title="Average Score"),
|
| 732 |
xaxis=dict(title=""),
|
|
|
|
| 733 |
height=300,
|
| 734 |
)
|
| 735 |
)
|
|
|
|
| 28 |
# ═══════════════════════════════════════════════════════════════════
|
| 29 |
|
| 30 |
PAPER_URL = "#"
|
| 31 |
+
GITHUB_URL = "https://github.com/RomeroLab/BioDesignBench"
|
| 32 |
+
HF_URL = "https://huggingface.co/spaces/RomeroLab-Duke/BioDesignBench-Leaderboard"
|
| 33 |
|
| 34 |
|
| 35 |
# ═══════════════════════════════════════════════════════════════════
|
| 36 |
# Taxonomy & scoring constants
|
| 37 |
# ═══════════════════════════════════════════════════════════════════
|
| 38 |
|
| 39 |
+
DESIGN_APPROACHES = ["de_novo", "redesign"]
|
| 40 |
+
APPROACH_LABELS = {
|
| 41 |
+
"de_novo": "De Novo",
|
| 42 |
+
"redesign": "Redesign",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
}
|
| 44 |
+
MOLECULAR_SUBJECTS = ["antibody", "enzyme", "binder", "scaffold", "fluorescent_protein"]
|
| 45 |
+
SUBJECT_LABELS = {
|
| 46 |
+
"antibody": "Antibody",
|
| 47 |
+
"enzyme": "Enzyme",
|
| 48 |
+
"binder": "Binder",
|
| 49 |
+
"scaffold": "Scaffold",
|
| 50 |
+
"fluorescent_protein": "Fluorescent Protein",
|
| 51 |
}
|
| 52 |
VALID_CELLS = {
|
| 53 |
+
"de_novo": {"antibody", "enzyme", "binder", "scaffold", "fluorescent_protein"},
|
| 54 |
+
"redesign": {"antibody", "enzyme", "scaffold", "fluorescent_protein"},
|
|
|
|
|
|
|
|
|
|
| 55 |
}
|
| 56 |
COMPONENTS = [
|
| 57 |
"approach",
|
|
|
|
| 403 |
|
| 404 |
|
| 405 |
def build_heatmap(entry: dict) -> str:
|
| 406 |
+
"""HTML heatmap table for one agent across 2×5 taxonomy cells."""
|
| 407 |
ts = entry.get("taxonomy_scores", {})
|
| 408 |
TH = (
|
| 409 |
"background:#0f172a;color:white;padding:0.6rem 0.8rem;"
|
|
|
|
| 415 |
)
|
| 416 |
|
| 417 |
rows = []
|
| 418 |
+
for ap in DESIGN_APPROACHES:
|
| 419 |
cells = [
|
| 420 |
f'<td style="{TD};text-align:left;font-weight:600;'
|
| 421 |
+
f'background:#f8fafc">{APPROACH_LABELS[ap]}</td>'
|
| 422 |
]
|
| 423 |
vals = []
|
| 424 |
+
for subj in MOLECULAR_SUBJECTS:
|
| 425 |
+
if subj in VALID_CELLS[ap]:
|
| 426 |
+
val = ts.get(ap, {}).get(subj)
|
| 427 |
bg = _heat_color(val)
|
| 428 |
text = f"{val:.0f}" if val is not None else "\u2014"
|
| 429 |
cells.append(f'<td style="{TD};background:{bg}">{text}</td>')
|
|
|
|
| 442 |
)
|
| 443 |
rows.append(f'<tr>{"".join(cells)}</tr>')
|
| 444 |
|
| 445 |
+
subj_headers = "".join(
|
| 446 |
+
f'<th style="{TH}">{SUBJECT_LABELS[s]}</th>'
|
| 447 |
+
for s in MOLECULAR_SUBJECTS
|
| 448 |
)
|
| 449 |
|
| 450 |
return f"""
|
|
|
|
| 452 |
border-radius:10px;overflow:hidden;
|
| 453 |
box-shadow:0 1px 3px rgba(0,0,0,0.08)">
|
| 454 |
<thead><tr>
|
| 455 |
+
<th style="{TH};text-align:left">Approach</th>
|
| 456 |
+
{subj_headers}
|
| 457 |
<th style="{TH}">Avg</th>
|
| 458 |
</tr></thead>
|
| 459 |
<tbody>{''.join(rows)}</tbody>
|
|
|
|
| 574 |
</div>
|
| 575 |
<div {stat_box}>
|
| 576 |
<div style="font-size:1.8rem;font-weight:800;color:#0f172a">
|
| 577 |
+
2×5</div>
|
| 578 |
+
<div style="font-size:0.78rem;color:#64748b">taxonomy matrix</div>
|
| 579 |
</div>
|
| 580 |
<div {stat_box}>
|
| 581 |
<div style="font-size:1.8rem;font-weight:800;color:#0f172a">
|
|
|
|
| 667 |
<strong>Novelty (5 pts)</strong> — sequence identity to
|
| 668 |
reference (lower identity = more novel = higher score)</p>
|
| 669 |
<p {p}>
|
| 670 |
+
<strong>Diversity (10 pts)</strong> — 65% pairwise sequence
|
| 671 |
+
diversity + 35% positional entropy across designs</p>
|
| 672 |
</div>
|
| 673 |
|
| 674 |
<div {card}>
|
|
|
|
| 692 |
|
| 693 |
|
| 694 |
def chart_taxonomy_bar(entry: dict) -> go.Figure:
|
| 695 |
+
"""Grouped bar chart of scores by approach × subject for one agent."""
|
| 696 |
ts = entry.get("taxonomy_scores", {})
|
| 697 |
+
subjects = MOLECULAR_SUBJECTS
|
| 698 |
+
colors = {"de_novo": "rgba(49,130,206,0.7)", "redesign": "rgba(237,137,54,0.7)"}
|
|
|
|
|
|
|
| 699 |
|
| 700 |
+
fig = go.Figure()
|
| 701 |
+
for ap in DESIGN_APPROACHES:
|
| 702 |
+
vals = []
|
| 703 |
+
for s in subjects:
|
| 704 |
+
v = ts.get(ap, {}).get(s)
|
| 705 |
+
vals.append(v if v is not None else 0)
|
| 706 |
+
fig.add_trace(go.Bar(
|
| 707 |
+
name=APPROACH_LABELS[ap],
|
| 708 |
+
x=[SUBJECT_LABELS[s] for s in subjects],
|
| 709 |
+
y=vals,
|
| 710 |
+
marker_color=colors[ap],
|
| 711 |
+
text=[f"{v:.0f}" if v else "" for v in vals],
|
| 712 |
textposition="auto",
|
| 713 |
+
))
|
| 714 |
+
|
| 715 |
mode = entry.get("mode") or "\u2014"
|
| 716 |
fig.update_layout(
|
| 717 |
**_base_layout(
|
| 718 |
title=dict(
|
| 719 |
+
text=f"{entry['agent_name']} ({mode}) \u2014 Score by Approach \u00d7 Subject",
|
| 720 |
font_size=14,
|
| 721 |
),
|
| 722 |
yaxis=dict(range=[0, 100], title="Average Score"),
|
| 723 |
xaxis=dict(title=""),
|
| 724 |
+
barmode="group",
|
| 725 |
height=300,
|
| 726 |
)
|
| 727 |
)
|
leaderboard_data.json
CHANGED
|
@@ -18,29 +18,18 @@
|
|
| 18 |
"diversity": 10.0
|
| 19 |
},
|
| 20 |
"taxonomy_scores": {
|
| 21 |
-
"
|
| 22 |
-
"
|
| 23 |
-
"
|
| 24 |
-
"
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
"
|
| 29 |
-
"
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
"
|
| 33 |
-
"bnd": 84.0,
|
| 34 |
-
"scf": 78.0
|
| 35 |
-
},
|
| 36 |
-
"de_novo_backbone": {
|
| 37 |
-
"scf": 98.0
|
| 38 |
-
},
|
| 39 |
-
"sequence_optimization": {
|
| 40 |
-
"enz": 99.0,
|
| 41 |
-
"fp": 97.0,
|
| 42 |
-
"ab": 98.0,
|
| 43 |
-
"scf": 98.0
|
| 44 |
}
|
| 45 |
},
|
| 46 |
"tasks_completed": 76,
|
|
@@ -66,29 +55,18 @@
|
|
| 66 |
"diversity": 2.6
|
| 67 |
},
|
| 68 |
"taxonomy_scores": {
|
| 69 |
-
"
|
| 70 |
-
"
|
| 71 |
-
"
|
| 72 |
-
"
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
"
|
| 77 |
-
"
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
"
|
| 81 |
-
"bnd": 76.0,
|
| 82 |
-
"scf": 67.0
|
| 83 |
-
},
|
| 84 |
-
"de_novo_backbone": {
|
| 85 |
-
"scf": 84.0
|
| 86 |
-
},
|
| 87 |
-
"sequence_optimization": {
|
| 88 |
-
"enz": 48.0,
|
| 89 |
-
"fp": 51.0,
|
| 90 |
-
"ab": 65.0,
|
| 91 |
-
"scf": 54.0
|
| 92 |
}
|
| 93 |
},
|
| 94 |
"tasks_completed": 76,
|
|
@@ -114,29 +92,18 @@
|
|
| 114 |
"diversity": 3.4
|
| 115 |
},
|
| 116 |
"taxonomy_scores": {
|
| 117 |
-
"
|
| 118 |
-
"
|
| 119 |
-
"
|
| 120 |
-
"
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
"
|
| 125 |
-
"
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
"
|
| 129 |
-
"bnd": 66.0,
|
| 130 |
-
"scf": 60.0
|
| 131 |
-
},
|
| 132 |
-
"de_novo_backbone": {
|
| 133 |
-
"scf": 37.0
|
| 134 |
-
},
|
| 135 |
-
"sequence_optimization": {
|
| 136 |
-
"enz": 61.0,
|
| 137 |
-
"fp": 66.0,
|
| 138 |
-
"ab": 83.0,
|
| 139 |
-
"scf": 62.0
|
| 140 |
}
|
| 141 |
},
|
| 142 |
"tasks_completed": 76,
|
|
@@ -162,29 +129,18 @@
|
|
| 162 |
"diversity": 2.0
|
| 163 |
},
|
| 164 |
"taxonomy_scores": {
|
| 165 |
-
"
|
| 166 |
-
"
|
| 167 |
-
"
|
| 168 |
-
"
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
"
|
| 173 |
-
"
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
"
|
| 177 |
-
"bnd": 64.0,
|
| 178 |
-
"scf": 64.0
|
| 179 |
-
},
|
| 180 |
-
"de_novo_backbone": {
|
| 181 |
-
"scf": 11.0
|
| 182 |
-
},
|
| 183 |
-
"sequence_optimization": {
|
| 184 |
-
"enz": 70.0,
|
| 185 |
-
"fp": 67.0,
|
| 186 |
-
"ab": 57.0,
|
| 187 |
-
"scf": 75.0
|
| 188 |
}
|
| 189 |
},
|
| 190 |
"tasks_completed": 76,
|
|
@@ -210,29 +166,18 @@
|
|
| 210 |
"diversity": 3.0
|
| 211 |
},
|
| 212 |
"taxonomy_scores": {
|
| 213 |
-
"
|
| 214 |
-
"
|
| 215 |
-
"
|
| 216 |
-
"
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
"
|
| 221 |
-
"
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
"
|
| 225 |
-
"bnd": 56.0,
|
| 226 |
-
"scf": 52.0
|
| 227 |
-
},
|
| 228 |
-
"de_novo_backbone": {
|
| 229 |
-
"scf": 54.0
|
| 230 |
-
},
|
| 231 |
-
"sequence_optimization": {
|
| 232 |
-
"enz": 55.0,
|
| 233 |
-
"fp": 41.0,
|
| 234 |
-
"ab": 69.0,
|
| 235 |
-
"scf": 72.0
|
| 236 |
}
|
| 237 |
},
|
| 238 |
"tasks_completed": 76,
|
|
@@ -258,29 +203,18 @@
|
|
| 258 |
"diversity": 3.1
|
| 259 |
},
|
| 260 |
"taxonomy_scores": {
|
| 261 |
-
"
|
| 262 |
-
"
|
| 263 |
-
"
|
| 264 |
-
"
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
"
|
| 269 |
-
"
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
"
|
| 273 |
-
"bnd": 57.0,
|
| 274 |
-
"scf": 53.0
|
| 275 |
-
},
|
| 276 |
-
"de_novo_backbone": {
|
| 277 |
-
"scf": 45.0
|
| 278 |
-
},
|
| 279 |
-
"sequence_optimization": {
|
| 280 |
-
"enz": 48.0,
|
| 281 |
-
"fp": 52.0,
|
| 282 |
-
"ab": 71.0,
|
| 283 |
-
"scf": 62.0
|
| 284 |
}
|
| 285 |
},
|
| 286 |
"tasks_completed": 76,
|
|
@@ -306,29 +240,18 @@
|
|
| 306 |
"diversity": 2.2
|
| 307 |
},
|
| 308 |
"taxonomy_scores": {
|
| 309 |
-
"
|
| 310 |
-
"
|
| 311 |
-
"
|
| 312 |
-
"
|
| 313 |
-
|
| 314 |
-
|
| 315 |
-
|
| 316 |
-
"
|
| 317 |
-
"
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
"
|
| 321 |
-
"bnd": 66.0,
|
| 322 |
-
"scf": 53.0
|
| 323 |
-
},
|
| 324 |
-
"de_novo_backbone": {
|
| 325 |
-
"scf": 33.0
|
| 326 |
-
},
|
| 327 |
-
"sequence_optimization": {
|
| 328 |
-
"enz": 48.0,
|
| 329 |
-
"fp": 60.0,
|
| 330 |
-
"ab": 67.0,
|
| 331 |
-
"scf": 18.0
|
| 332 |
}
|
| 333 |
},
|
| 334 |
"tasks_completed": 76,
|
|
@@ -354,29 +277,18 @@
|
|
| 354 |
"diversity": 1.7
|
| 355 |
},
|
| 356 |
"taxonomy_scores": {
|
| 357 |
-
"
|
| 358 |
-
"
|
| 359 |
-
"
|
| 360 |
-
"
|
| 361 |
-
|
| 362 |
-
|
| 363 |
-
|
| 364 |
-
"
|
| 365 |
-
"
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
"
|
| 369 |
-
"bnd": 55.0,
|
| 370 |
-
"scf": 37.0
|
| 371 |
-
},
|
| 372 |
-
"de_novo_backbone": {
|
| 373 |
-
"scf": 44.0
|
| 374 |
-
},
|
| 375 |
-
"sequence_optimization": {
|
| 376 |
-
"enz": 40.0,
|
| 377 |
-
"fp": 51.0,
|
| 378 |
-
"ab": 58.0,
|
| 379 |
-
"scf": 20.0
|
| 380 |
}
|
| 381 |
},
|
| 382 |
"tasks_completed": 76,
|
|
@@ -402,29 +314,18 @@
|
|
| 402 |
"diversity": 0.9
|
| 403 |
},
|
| 404 |
"taxonomy_scores": {
|
| 405 |
-
"
|
| 406 |
-
"
|
| 407 |
-
"
|
| 408 |
-
"
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
|
| 412 |
-
"
|
| 413 |
-
"
|
| 414 |
-
|
| 415 |
-
|
| 416 |
-
"
|
| 417 |
-
"bnd": 49.0,
|
| 418 |
-
"scf": 26.0
|
| 419 |
-
},
|
| 420 |
-
"de_novo_backbone": {
|
| 421 |
-
"scf": 45.0
|
| 422 |
-
},
|
| 423 |
-
"sequence_optimization": {
|
| 424 |
-
"enz": 44.0,
|
| 425 |
-
"fp": 52.0,
|
| 426 |
-
"ab": 52.0,
|
| 427 |
-
"scf": 49.0
|
| 428 |
}
|
| 429 |
},
|
| 430 |
"tasks_completed": 76,
|
|
@@ -450,29 +351,18 @@
|
|
| 450 |
"diversity": 1.5
|
| 451 |
},
|
| 452 |
"taxonomy_scores": {
|
| 453 |
-
"
|
| 454 |
-
"
|
| 455 |
-
"
|
| 456 |
-
"
|
| 457 |
-
|
| 458 |
-
|
| 459 |
-
|
| 460 |
-
"
|
| 461 |
-
"
|
| 462 |
-
|
| 463 |
-
|
| 464 |
-
"
|
| 465 |
-
"bnd": 35.0,
|
| 466 |
-
"scf": 22.0
|
| 467 |
-
},
|
| 468 |
-
"de_novo_backbone": {
|
| 469 |
-
"scf": 21.0
|
| 470 |
-
},
|
| 471 |
-
"sequence_optimization": {
|
| 472 |
-
"enz": 33.0,
|
| 473 |
-
"fp": 36.0,
|
| 474 |
-
"ab": 53.0,
|
| 475 |
-
"scf": 22.0
|
| 476 |
}
|
| 477 |
},
|
| 478 |
"tasks_completed": 76,
|
|
@@ -498,29 +388,18 @@
|
|
| 498 |
"diversity": 1.6
|
| 499 |
},
|
| 500 |
"taxonomy_scores": {
|
| 501 |
-
"
|
| 502 |
-
"
|
| 503 |
-
"
|
| 504 |
-
"
|
| 505 |
-
|
| 506 |
-
|
| 507 |
-
|
| 508 |
-
"
|
| 509 |
-
"
|
| 510 |
-
|
| 511 |
-
|
| 512 |
-
"
|
| 513 |
-
"bnd": 32.0,
|
| 514 |
-
"scf": 27.0
|
| 515 |
-
},
|
| 516 |
-
"de_novo_backbone": {
|
| 517 |
-
"scf": 21.0
|
| 518 |
-
},
|
| 519 |
-
"sequence_optimization": {
|
| 520 |
-
"enz": 30.0,
|
| 521 |
-
"fp": 33.0,
|
| 522 |
-
"ab": 52.0,
|
| 523 |
-
"scf": 15.0
|
| 524 |
}
|
| 525 |
},
|
| 526 |
"tasks_completed": 76,
|
|
|
|
| 18 |
"diversity": 10.0
|
| 19 |
},
|
| 20 |
"taxonomy_scores": {
|
| 21 |
+
"redesign": {
|
| 22 |
+
"antibody": 78,
|
| 23 |
+
"enzyme": 96,
|
| 24 |
+
"fluorescent_protein": 98,
|
| 25 |
+
"scaffold": 86
|
| 26 |
+
},
|
| 27 |
+
"de_novo": {
|
| 28 |
+
"binder": 83,
|
| 29 |
+
"enzyme": 80,
|
| 30 |
+
"fluorescent_protein": 85,
|
| 31 |
+
"scaffold": 87,
|
| 32 |
+
"antibody": 74
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
}
|
| 34 |
},
|
| 35 |
"tasks_completed": 76,
|
|
|
|
| 55 |
"diversity": 2.6
|
| 56 |
},
|
| 57 |
"taxonomy_scores": {
|
| 58 |
+
"redesign": {
|
| 59 |
+
"antibody": 52,
|
| 60 |
+
"enzyme": 50,
|
| 61 |
+
"fluorescent_protein": 53,
|
| 62 |
+
"scaffold": 52
|
| 63 |
+
},
|
| 64 |
+
"de_novo": {
|
| 65 |
+
"binder": 74,
|
| 66 |
+
"enzyme": 46,
|
| 67 |
+
"fluorescent_protein": 61,
|
| 68 |
+
"scaffold": 68,
|
| 69 |
+
"antibody": 65
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
}
|
| 71 |
},
|
| 72 |
"tasks_completed": 76,
|
|
|
|
| 92 |
"diversity": 3.4
|
| 93 |
},
|
| 94 |
"taxonomy_scores": {
|
| 95 |
+
"redesign": {
|
| 96 |
+
"antibody": 57,
|
| 97 |
+
"enzyme": 58,
|
| 98 |
+
"fluorescent_protein": 62,
|
| 99 |
+
"scaffold": 57
|
| 100 |
+
},
|
| 101 |
+
"de_novo": {
|
| 102 |
+
"binder": 64,
|
| 103 |
+
"enzyme": 56,
|
| 104 |
+
"fluorescent_protein": 61,
|
| 105 |
+
"scaffold": 51,
|
| 106 |
+
"antibody": 60
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
}
|
| 108 |
},
|
| 109 |
"tasks_completed": 76,
|
|
|
|
| 129 |
"diversity": 2.0
|
| 130 |
},
|
| 131 |
"taxonomy_scores": {
|
| 132 |
+
"redesign": {
|
| 133 |
+
"antibody": 41,
|
| 134 |
+
"enzyme": 69,
|
| 135 |
+
"fluorescent_protein": 52,
|
| 136 |
+
"scaffold": 66
|
| 137 |
+
},
|
| 138 |
+
"de_novo": {
|
| 139 |
+
"binder": 59,
|
| 140 |
+
"enzyme": 28,
|
| 141 |
+
"fluorescent_protein": 61,
|
| 142 |
+
"scaffold": 40,
|
| 143 |
+
"antibody": 52
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
}
|
| 145 |
},
|
| 146 |
"tasks_completed": 76,
|
|
|
|
| 166 |
"diversity": 3.0
|
| 167 |
},
|
| 168 |
"taxonomy_scores": {
|
| 169 |
+
"redesign": {
|
| 170 |
+
"antibody": 51,
|
| 171 |
+
"enzyme": 52,
|
| 172 |
+
"fluorescent_protein": 50,
|
| 173 |
+
"scaffold": 60
|
| 174 |
+
},
|
| 175 |
+
"de_novo": {
|
| 176 |
+
"binder": 54,
|
| 177 |
+
"enzyme": 40,
|
| 178 |
+
"fluorescent_protein": 40,
|
| 179 |
+
"scaffold": 48,
|
| 180 |
+
"antibody": 46
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
}
|
| 182 |
},
|
| 183 |
"tasks_completed": 76,
|
|
|
|
| 203 |
"diversity": 3.1
|
| 204 |
},
|
| 205 |
"taxonomy_scores": {
|
| 206 |
+
"redesign": {
|
| 207 |
+
"antibody": 42,
|
| 208 |
+
"enzyme": 46,
|
| 209 |
+
"fluorescent_protein": 46,
|
| 210 |
+
"scaffold": 56
|
| 211 |
+
},
|
| 212 |
+
"de_novo": {
|
| 213 |
+
"binder": 56,
|
| 214 |
+
"enzyme": 40,
|
| 215 |
+
"fluorescent_protein": 55,
|
| 216 |
+
"scaffold": 47,
|
| 217 |
+
"antibody": 52
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
}
|
| 219 |
},
|
| 220 |
"tasks_completed": 76,
|
|
|
|
| 240 |
"diversity": 2.2
|
| 241 |
},
|
| 242 |
"taxonomy_scores": {
|
| 243 |
+
"redesign": {
|
| 244 |
+
"antibody": 42,
|
| 245 |
+
"enzyme": 47,
|
| 246 |
+
"fluorescent_protein": 56,
|
| 247 |
+
"scaffold": 32
|
| 248 |
+
},
|
| 249 |
+
"de_novo": {
|
| 250 |
+
"binder": 59,
|
| 251 |
+
"enzyme": 48,
|
| 252 |
+
"fluorescent_protein": 45,
|
| 253 |
+
"scaffold": 39,
|
| 254 |
+
"antibody": 48
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 255 |
}
|
| 256 |
},
|
| 257 |
"tasks_completed": 76,
|
|
|
|
| 277 |
"diversity": 1.7
|
| 278 |
},
|
| 279 |
"taxonomy_scores": {
|
| 280 |
+
"redesign": {
|
| 281 |
+
"antibody": 36,
|
| 282 |
+
"enzyme": 37,
|
| 283 |
+
"fluorescent_protein": 54,
|
| 284 |
+
"scaffold": 23
|
| 285 |
+
},
|
| 286 |
+
"de_novo": {
|
| 287 |
+
"binder": 49,
|
| 288 |
+
"enzyme": 38,
|
| 289 |
+
"fluorescent_protein": 41,
|
| 290 |
+
"scaffold": 41,
|
| 291 |
+
"antibody": 33
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 292 |
}
|
| 293 |
},
|
| 294 |
"tasks_completed": 76,
|
|
|
|
| 314 |
"diversity": 0.9
|
| 315 |
},
|
| 316 |
"taxonomy_scores": {
|
| 317 |
+
"redesign": {
|
| 318 |
+
"antibody": 30,
|
| 319 |
+
"enzyme": 36,
|
| 320 |
+
"fluorescent_protein": 54,
|
| 321 |
+
"scaffold": 41
|
| 322 |
+
},
|
| 323 |
+
"de_novo": {
|
| 324 |
+
"binder": 44,
|
| 325 |
+
"enzyme": 22,
|
| 326 |
+
"fluorescent_protein": 44,
|
| 327 |
+
"scaffold": 39,
|
| 328 |
+
"antibody": 40
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 329 |
}
|
| 330 |
},
|
| 331 |
"tasks_completed": 76,
|
|
|
|
| 351 |
"diversity": 1.5
|
| 352 |
},
|
| 353 |
"taxonomy_scores": {
|
| 354 |
+
"redesign": {
|
| 355 |
+
"antibody": 22,
|
| 356 |
+
"enzyme": 29,
|
| 357 |
+
"fluorescent_protein": 29,
|
| 358 |
+
"scaffold": 21
|
| 359 |
+
},
|
| 360 |
+
"de_novo": {
|
| 361 |
+
"binder": 36,
|
| 362 |
+
"enzyme": 8,
|
| 363 |
+
"fluorescent_protein": 0,
|
| 364 |
+
"scaffold": 19,
|
| 365 |
+
"antibody": 31
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 366 |
}
|
| 367 |
},
|
| 368 |
"tasks_completed": 76,
|
|
|
|
| 388 |
"diversity": 1.6
|
| 389 |
},
|
| 390 |
"taxonomy_scores": {
|
| 391 |
+
"redesign": {
|
| 392 |
+
"antibody": 31,
|
| 393 |
+
"enzyme": 26,
|
| 394 |
+
"fluorescent_protein": 32,
|
| 395 |
+
"scaffold": 14
|
| 396 |
+
},
|
| 397 |
+
"de_novo": {
|
| 398 |
+
"binder": 34,
|
| 399 |
+
"enzyme": 8,
|
| 400 |
+
"fluorescent_protein": 0,
|
| 401 |
+
"scaffold": 18,
|
| 402 |
+
"antibody": 30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 403 |
}
|
| 404 |
},
|
| 405 |
"tasks_completed": 76,
|