samgelman commited on
Commit
e86d6b3
Β·
verified Β·
1 Parent(s): c9b4304

Add new METL models in dropdown

Browse files

Updated the selection of METL models and expanded size of dropdown to account for longer model names

Files changed (1) hide show
  1. app.py +103 -17
app.py CHANGED
@@ -14,6 +14,78 @@ metl_config = AutoConfig.from_pretrained('gitter-lab/METL', trust_remote_code=Tr
14
  metl = AutoModel.from_pretrained('gitter-lab/METL', trust_remote_code=True, cache_dir='./cache')
15
  pdb_path = None
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  RADIO_CSS = """
18
  #indexing>div {
19
  flex-direction: column;
@@ -275,20 +347,26 @@ def empty_pdb_path(button):
275
  pdb_path = None
276
  return ""
277
 
278
- def load_model(model_id, _):
279
  global metl
280
 
281
- if not isinstance(model_id, str):
282
- return get_color(RED, "Select Model"), gr.Button(interactive=False)
 
 
 
283
 
284
- if model_id.lower() in metl.config.IDENT_UUID_MAP:
285
- metl.load_from_ident(model_id)
286
- elif model_id in metl.config.UUID_URL_MAP:
287
- metl.load_from_uuid(model_id)
288
- else:
289
- return get_color(RED, "Model Load Failed"), gr.Button(interactive=False)
 
 
 
290
 
291
- return get_color(GREEN, f"{model_id} loaded"), gr.Button(interactive=True)
292
 
293
  def update_pdb(variant_modal, indexing):
294
  if len(variant_modal['text']) == 0 and len(variant_modal['files']) == 0:
@@ -322,7 +400,7 @@ def hide_variants(checkbox_values):
322
  def populate_example():
323
  global pdb_path
324
 
325
- model = "metl-l-2m-3d-gb1"
326
  wt = "MQYKLILNGKTLKGETTTEAVDAATAEKVFKQYANDNGVDGEWTYDDATKTFTVTE"
327
  variants = '["T17P,T54F", "V28L,F51A"]'
328
  # "T17P,V28L,F51A,T54F"
@@ -419,12 +497,20 @@ def predict(input_multi_modal, variant_multi_modal, variant_index_type):
419
  return out_str, iframe, checkbox
420
 
421
  with gr.Blocks(css=RADIO_CSS) as demo:
422
- with gr.Row(equal_height=True, elem_id="modelPDBRow"):
423
- with gr.Column(elem_id="modelInputCol"):
424
- metl_model_id = gr.Dropdown(label="METL model IDENT or UUID", choices=list(metl.config.IDENT_UUID_MAP.keys()), allow_custom_value=False)
425
- metl_model_status = gr.HTML(get_color(RED, "Select Model"), elem_id="modelStatus")
426
- with gr.Column():
427
- upload_pdb = gr.File(label="PDB File upload", elem_id="pdbUpload", file_types=[".pdb", ".txt"])
 
 
 
 
 
 
 
 
428
 
429
  with gr.Column():
430
  metl_seq_input = gr.MultimodalTextbox(label="Input Protein Sequence", interactive=True, elem_classes="multiModalText", elem_id="wildTypeSequence")
 
14
  metl = AutoModel.from_pretrained('gitter-lab/METL', trust_remote_code=True, cache_dir='./cache')
15
  pdb_path = None
16
 
17
+ # UUID lookup for models -- used for the dropdown list
18
+ uuid_lookup = {
19
+ "Source / Global / 1D β€” [METL-G-20M-1D] (D72M9aEp)": "D72M9aEp",
20
+ "Source / Global / 3D β€” [METL-G-20M-3D] (Nr9zCKpR)": "Nr9zCKpR",
21
+ "Source / Global / 1D β€” [METL-G-50M-1D] (auKdzzwX)": "auKdzzwX",
22
+ "Source / Global / 3D β€” [METL-G-50M-3D] (6PSAzdfv)": "6PSAzdfv",
23
+ "Source / Local / GFP / 1D β€” [METL-L-2M-1D-GFP] (8gMPQJy4)": "8gMPQJy4",
24
+ "Source / Local / GFP / 3D β€” [METL-L-2M-3D-GFP] (Hr4GNHws)": "Hr4GNHws",
25
+ "Source / Local / DLG4 / 1D β€” [METL-L-2M-1D-DLG4_2022] (8iFoiYw2)": "8iFoiYw2",
26
+ "Source / Local / DLG4 / 3D β€” [METL-L-2M-3D-DLG4_2022] (kt5DdWTa)": "kt5DdWTa",
27
+ "Source / Local / GB1 / 1D β€” [METL-L-2M-1D-GB1] (DMfkjVzT)": "DMfkjVzT",
28
+ "Source / Local / GB1 / 3D β€” [METL-L-2M-3D-GB1] (epegcFiH)": "epegcFiH",
29
+ "Source / Local / GRB2 / 1D β€” [METL-L-2M-1D-GRB2] (kS3rUS7h)": "kS3rUS7h",
30
+ "Source / Local / GRB2 / 3D β€” [METL-L-2M-3D-GRB2] (X7w83g6S)": "X7w83g6S",
31
+ "Source / Local / Pab1 / 1D β€” [METL-L-2M-1D-Pab1] (UKebCQGz)": "UKebCQGz",
32
+ "Source / Local / Pab1 / 3D β€” [METL-L-2M-3D-Pab1] (2rr8V4th)": "2rr8V4th",
33
+ "Source / Local / PTEN / 1D β€” [METL-L-2M-1D-PTEN] (CEMSx7ZC)": "CEMSx7ZC",
34
+ "Source / Local / PTEN / 3D β€” [METL-L-2M-3D-PTEN] (PjxR5LW7)": "PjxR5LW7",
35
+ "Source / Local / TEM-1 / 1D β€” [METL-L-2M-1D-TEM-1] (PREhfC22)": "PREhfC22",
36
+ "Source / Local / TEM-1 / 3D β€” [METL-L-2M-3D-TEM-1] (9ASvszux)": "9ASvszux",
37
+ "Source / Local / Ube4b / 1D β€” [METL-L-2M-1D-Ube4b] (HscFFkAb)": "HscFFkAb",
38
+ "Source / Local / Ube4b / 3D β€” [METL-L-2M-3D-Ube4b] (H48oiNZN)": "H48oiNZN",
39
+ "METL-BIND / Source / Local / GB1 / 3D β€” [METL-BIND-2M-3D-GB1-STANDARD] (K6mw24Rg)": "K6mw24Rg",
40
+ "METL-BIND / Source / Local / GB1 / 3D β€” [METL-BIND-2M-3D-GB1-BINDING] (Bo5wn2SG)": "Bo5wn2SG",
41
+ "Finetuned / Global / GFP / 1D β€” (PeT2D92j)": "PeT2D92j",
42
+ "Finetuned / Global / GFP / 3D β€” (6JBzHpkQ)": "6JBzHpkQ",
43
+ "Finetuned / Global / DLG4-Abundance / 1D β€” (4Rh3WCbG)": "4Rh3WCbG",
44
+ "Finetuned / Global / DLG4-Abundance / 3D β€” (RBtqxzvu)": "RBtqxzvu",
45
+ "Finetuned / Global / DLG4-Binding / 1D β€” (4xbuC5y7)": "4xbuC5y7",
46
+ "Finetuned / Global / DLG4-Binding / 3D β€” (BuvxgE2x)": "BuvxgE2x",
47
+ "Finetuned / Global / GB1 / 1D β€” (dAndZfJ4)": "dAndZfJ4",
48
+ "Finetuned / Global / GB1 / 3D β€” (9vSB3DRM)": "9vSB3DRM",
49
+ "Finetuned / Global / GRB2-Abundance / 1D β€” (HenDpDWe)": "HenDpDWe",
50
+ "Finetuned / Global / GRB2-Abundance / 3D β€” (dDoCCvfr)": "dDoCCvfr",
51
+ "Finetuned / Global / GRB2-Binding / 1D β€” (cvnycE5Q)": "cvnycE5Q",
52
+ "Finetuned / Global / GRB2-Binding / 3D β€” (jYesS9Ki)": "jYesS9Ki",
53
+ "Finetuned / Global / Pab1 / 1D β€” (ho54gxzv)": "ho54gxzv",
54
+ "Finetuned / Global / Pab1 / 3D β€” (jhbL2FeB)": "jhbL2FeB",
55
+ "Finetuned / Global / PTEN-Abundance / 1D β€” (UEuMtmfx)": "UEuMtmfx",
56
+ "Finetuned / Global / PTEN-Abundance / 3D β€” (eJPPQYEW)": "eJPPQYEW",
57
+ "Finetuned / Global / PTEN-Activity / 1D β€” (U3X8mSeT)": "U3X8mSeT",
58
+ "Finetuned / Global / PTEN-Activity / 3D β€” (4gqYnW6V)": "4gqYnW6V",
59
+ "Finetuned / Global / TEM-1 / 1D β€” (ELL4GGQq)": "ELL4GGQq",
60
+ "Finetuned / Global / TEM-1 / 3D β€” (K6BjsWXm)": "K6BjsWXm",
61
+ "Finetuned / Global / Ube4b / 1D β€” (BAWw23vW)": "BAWw23vW",
62
+ "Finetuned / Global / Ube4b / 3D β€” (G9piq6WH)": "G9piq6WH",
63
+ "Finetuned / Local / GFP / 1D β€” (HaUuRwfE)": "HaUuRwfE",
64
+ "Finetuned / Local / GFP / 3D β€” (LWEY95Yb)": "LWEY95Yb",
65
+ "Finetuned / Local / DLG4-Abundance / 1D β€” (RMFA6dnX)": "RMFA6dnX",
66
+ "Finetuned / Local / DLG4-Abundance / 3D β€” (V3uTtXVe)": "V3uTtXVe",
67
+ "Finetuned / Local / DLG4-Binding / 1D β€” (YdzBYWHs)": "YdzBYWHs",
68
+ "Finetuned / Local / DLG4-Binding / 3D β€” (iu6ZahPw)": "iu6ZahPw",
69
+ "Finetuned / Local / GB1 / 1D β€” (Pgcseywk)": "Pgcseywk",
70
+ "Finetuned / Local / GB1 / 3D β€” (UvMMdsq4)": "UvMMdsq4",
71
+ "Finetuned / Local / GRB2-Abundance / 1D β€” (VNpi9Zjt)": "VNpi9Zjt",
72
+ "Finetuned / Local / GRB2-Abundance / 3D β€” (PqBMjXkA)": "PqBMjXkA",
73
+ "Finetuned / Local / GRB2-Binding / 1D β€” (Z59BhUaE)": "Z59BhUaE",
74
+ "Finetuned / Local / GRB2-Binding / 3D β€” (VwcRN6UB)": "VwcRN6UB",
75
+ "Finetuned / Local / Pab1 / 1D β€” (TdjCzoQQ)": "TdjCzoQQ",
76
+ "Finetuned / Local / Pab1 / 3D β€” (5SjoLx3y)": "5SjoLx3y",
77
+ "Finetuned / Local / PTEN-Abundance / 1D β€” (oUScGeHo)": "oUScGeHo",
78
+ "Finetuned / Local / PTEN-Abundance / 3D β€” (DhuasDEr)": "DhuasDEr",
79
+ "Finetuned / Local / PTEN-Activity / 1D β€” (m9UsG7dq)": "m9UsG7dq",
80
+ "Finetuned / Local / PTEN-Activity / 3D β€” (8Vi7ENcC)": "8Vi7ENcC",
81
+ "Finetuned / Local / TEM-1 / 1D β€” (64ncFxBR)": "64ncFxBR",
82
+ "Finetuned / Local / TEM-1 / 3D β€” (PncvgiJU)": "PncvgiJU",
83
+ "Finetuned / Local / Ube4b / 1D β€” (e9uhhnAv)": "e9uhhnAv",
84
+ "Finetuned / Local / Ube4b / 3D β€” (NfbZL7jK)": "NfbZL7jK",
85
+ "GFP DESIGN / Finetuned / Local / GFP / 1D β€” (YoQkzoLD)": "YoQkzoLD",
86
+ "GFP DESIGN / Finetuned / Local / GFP / 3D β€” (PEkeRuxb)": "PEkeRuxb"
87
+ }
88
+
89
  RADIO_CSS = """
90
  #indexing>div {
91
  flex-direction: column;
 
347
  pdb_path = None
348
  return ""
349
 
350
+ def load_model(model_input, _):
351
  global metl
352
 
353
+ # Case 1: input is one of the dropdown labels β†’ lookup UUID
354
+ if model_input in uuid_lookup:
355
+ uuid = uuid_lookup[model_input]
356
+ metl.load_from_uuid(uuid)
357
+ return get_color(GREEN, f"{model_input} loaded (from dropdown)"), gr.Button(interactive=True)
358
 
359
+ # Case 2: input is a raw UUID
360
+ elif model_input in metl.config.UUID_URL_MAP:
361
+ metl.load_from_uuid(model_input)
362
+ return get_color(GREEN, f"{model_input} loaded (direct UUID)"), gr.Button(interactive=True)
363
+
364
+ # Case 3: input is a raw IDENT
365
+ elif model_input in metl.config.IDENT_UUID_MAP:
366
+ metl.load_from_ident(model_input)
367
+ return get_color(GREEN, f"{model_input} loaded (direct IDENT)"), gr.Button(interactive=True)
368
 
369
+ return get_color(RED, "Model not recognized"), gr.Button(interactive=False)
370
 
371
  def update_pdb(variant_modal, indexing):
372
  if len(variant_modal['text']) == 0 and len(variant_modal['files']) == 0:
 
400
  def populate_example():
401
  global pdb_path
402
 
403
+ model = "Source / Local / GB1 / 3D β€” [METL-L-2M-3D-GB1] (epegcFiH)"
404
  wt = "MQYKLILNGKTLKGETTTEAVDAATAEKVFKQYANDNGVDGEWTYDDATKTFTVTE"
405
  variants = '["T17P,T54F", "V28L,F51A"]'
406
  # "T17P,V28L,F51A,T54F"
 
497
  return out_str, iframe, checkbox
498
 
499
  with gr.Blocks(css=RADIO_CSS) as demo:
500
+ # with gr.Row(equal_height=True, elem_id="modelPDBRow"):
501
+ # with gr.Column(elem_id="modelInputCol"):
502
+ # # metl_model_id = gr.Dropdown(label="METL model IDENT or UUID", choices=list(metl.config.IDENT_UUID_MAP.keys()), allow_custom_value=False)
503
+ # metl_model_id = gr.Dropdown(label="METL model", choices=['Source / Global / 1D β€” [METL-G-20M-1D] (D72M9aEp)', 'Source / Global / 3D β€” [METL-G-20M-3D] (Nr9zCKpR)', 'Source / Global / 1D β€” [METL-G-50M-1D] (auKdzzwX)', 'Source / Global / 3D β€” [METL-G-50M-3D] (6PSAzdfv)', 'Source / Local / GFP / 1D β€” [METL-L-2M-1D-GFP] (8gMPQJy4)', 'Source / Local / GFP / 3D β€” [METL-L-2M-3D-GFP] (Hr4GNHws)', 'Source / Local / DLG4 / 1D β€” [METL-L-2M-1D-DLG4_2022] (8iFoiYw2)', 'Source / Local / DLG4 / 3D β€” [METL-L-2M-3D-DLG4_2022] (kt5DdWTa)', 'Source / Local / GB1 / 1D β€” [METL-L-2M-1D-GB1] (DMfkjVzT)', 'Source / Local / GB1 / 3D β€” [METL-L-2M-3D-GB1] (epegcFiH)', 'Source / Local / GRB2 / 1D β€” [METL-L-2M-1D-GRB2] (kS3rUS7h)', 'Source / Local / GRB2 / 3D β€” [METL-L-2M-3D-GRB2] (X7w83g6S)', 'Source / Local / Pab1 / 1D β€” [METL-L-2M-1D-Pab1] (UKebCQGz)', 'Source / Local / Pab1 / 3D β€” [METL-L-2M-3D-Pab1] (2rr8V4th)', 'Source / Local / PTEN / 1D β€” [METL-L-2M-1D-PTEN] (CEMSx7ZC)', 'Source / Local / PTEN / 3D β€” [METL-L-2M-3D-PTEN] (PjxR5LW7)', 'Source / Local / TEM-1 / 1D β€” [METL-L-2M-1D-TEM-1] (PREhfC22)', 'Source / Local / TEM-1 / 3D β€” [METL-L-2M-3D-TEM-1] (9ASvszux)', 'Source / Local / Ube4b / 1D β€” [METL-L-2M-1D-Ube4b] (HscFFkAb)', 'Source / Local / Ube4b / 3D β€” [METL-L-2M-3D-Ube4b] (H48oiNZN)', 'METL-BIND / Source / Local / GB1 / 3D β€” [METL-BIND-2M-3D-GB1-STANDARD] (K6mw24Rg)', 'METL-BIND / Source / Local / GB1 / 3D β€” [METL-BIND-2M-3D-GB1-BINDING] (Bo5wn2SG)', 'Finetuned / Global / GFP / 1D β€” (PeT2D92j)', 'Finetuned / Global / GFP / 3D β€” (6JBzHpkQ)', 'Finetuned / Global / DLG4-Abundance / 1D β€” (4Rh3WCbG)', 'Finetuned / Global / DLG4-Abundance / 3D β€” (RBtqxzvu)', 'Finetuned / Global / DLG4-Binding / 1D β€” (4xbuC5y7)', 'Finetuned / Global / DLG4-Binding / 3D β€” (BuvxgE2x)', 'Finetuned / Global / GB1 / 1D β€” (dAndZfJ4)', 'Finetuned / Global / GB1 / 3D β€” (9vSB3DRM)', 'Finetuned / Global / GRB2-Abundance / 1D β€” (HenDpDWe)', 'Finetuned / Global / GRB2-Abundance / 3D β€” (dDoCCvfr)', 'Finetuned / Global / GRB2-Binding / 1D β€” (cvnycE5Q)', 'Finetuned / Global / GRB2-Binding / 3D β€” (jYesS9Ki)', 'Finetuned / Global / Pab1 / 1D β€” (ho54gxzv)', 'Finetuned / Global / Pab1 / 3D β€” (jhbL2FeB)', 'Finetuned / Global / PTEN-Abundance / 1D β€” (UEuMtmfx)', 'Finetuned / Global / PTEN-Abundance / 3D β€” (eJPPQYEW)', 'Finetuned / Global / PTEN-Activity / 1D β€” (U3X8mSeT)', 'Finetuned / Global / PTEN-Activity / 3D β€” (4gqYnW6V)', 'Finetuned / Global / TEM-1 / 1D β€” (ELL4GGQq)', 'Finetuned / Global / TEM-1 / 3D β€” (K6BjsWXm)', 'Finetuned / Global / Ube4b / 1D β€” (BAWw23vW)', 'Finetuned / Global / Ube4b / 3D β€” (G9piq6WH)', 'Finetuned / Local / GFP / 1D β€” (HaUuRwfE)', 'Finetuned / Local / GFP / 3D β€” (LWEY95Yb)', 'Finetuned / Local / DLG4-Abundance / 1D β€” (RMFA6dnX)', 'Finetuned / Local / DLG4-Abundance / 3D β€” (V3uTtXVe)', 'Finetuned / Local / DLG4-Binding / 1D β€” (YdzBYWHs)', 'Finetuned / Local / DLG4-Binding / 3D β€” (iu6ZahPw)', 'Finetuned / Local / GB1 / 1D β€” (Pgcseywk)', 'Finetuned / Local / GB1 / 3D β€” (UvMMdsq4)', 'Finetuned / Local / GRB2-Abundance / 1D β€” (VNpi9Zjt)', 'Finetuned / Local / GRB2-Abundance / 3D β€” (PqBMjXkA)', 'Finetuned / Local / GRB2-Binding / 1D β€” (Z59BhUaE)', 'Finetuned / Local / GRB2-Binding / 3D β€” (VwcRN6UB)', 'Finetuned / Local / Pab1 / 1D β€” (TdjCzoQQ)', 'Finetuned / Local / Pab1 / 3D β€” (5SjoLx3y)', 'Finetuned / Local / PTEN-Abundance / 1D β€” (oUScGeHo)', 'Finetuned / Local / PTEN-Abundance / 3D β€” (DhuasDEr)', 'Finetuned / Local / PTEN-Activity / 1D β€” (m9UsG7dq)', 'Finetuned / Local / PTEN-Activity / 3D β€” (8Vi7ENcC)', 'Finetuned / Local / TEM-1 / 1D β€” (64ncFxBR)', 'Finetuned / Local / TEM-1 / 3D β€” (PncvgiJU)', 'Finetuned / Local / Ube4b / 1D β€” (e9uhhnAv)', 'Finetuned / Local / Ube4b / 3D β€” (NfbZL7jK)', 'GFP DESIGN / Finetuned / Local / GFP / 1D β€” (YoQkzoLD)', 'GFP DESIGN / Finetuned / Local / GFP / 3D β€” (PEkeRuxb)'], allow_custom_value=False)
504
+ # metl_model_status = gr.HTML(get_color(RED, "Select Model"), elem_id="modelStatus")
505
+ # with gr.Column():
506
+ # upload_pdb = gr.File(label="PDB File upload", elem_id="pdbUpload", file_types=[".pdb", ".txt"])
507
+
508
+ with gr.Column():
509
+ metl_model_id = gr.Dropdown(label="METL model", choices=list(uuid_lookup.keys()), allow_custom_value=False)
510
+ metl_model_status = gr.HTML(get_color(RED, "Select Model"), elem_id="modelStatus")
511
+
512
+ with gr.Column():
513
+ upload_pdb = gr.File(label="PDB File upload", elem_id="pdbUpload", file_types=[".pdb", ".txt"])
514
 
515
  with gr.Column():
516
  metl_seq_input = gr.MultimodalTextbox(label="Input Protein Sequence", interactive=True, elem_classes="multiModalText", elem_id="wildTypeSequence")