File size: 2,991 Bytes
db541e4
4d5beeb
f73076c
4d5beeb
 
db541e4
4d5beeb
c72f5fe
4d5beeb
c72f5fe
4d5beeb
f73076c
 
 
 
 
 
 
 
 
 
c72f5fe
 
4d5beeb
 
 
 
 
 
 
affd796
4d5beeb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
affd796
 
 
2f14da2
 
 
 
f73076c
 
 
 
4d5beeb
2f14da2
 
affd796
4d5beeb
 
 
db541e4
affd796
 
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
import gradio as gr
from evodiff.pretrained import OA_DM_38M, D3PM_UNIFORM_38M, MSA_OA_DM_MAXSUB
from evodiff.generate import generate_oaardm, generate_d3pm
from evodiff.generate_msa import generate_query_oadm_msa_simple
import re

def a3m_file(file):

    return "tmp.a3m"

def make_uncond_seq(seq_len, model_type):
    if model_type == "EvoDiff-Seq-OADM 38M":
        checkpoint = OA_DM_38M()
        model, collater, tokenizer, scheme = checkpoint
        tokeinzed_sample, generated_sequence = generate_oaardm(model, tokenizer, seq_len, batch_size=1, device='cpu')
    
    if model_type == "EvoDiff-D3PM-Uniform 38M":
        checkpoint = D3PM_UNIFORM_38M(return_all=True)
        model, collater, tokenizer, scheme, timestep, Q_bar, Q = checkpoint
        tokeinzed_sample, generated_sequence = generate_d3pm(model, tokenizer, Q, Q_bar, timestep, seq_len, batch_size=1, device='cpu')

    return generated_sequence

def make_cond_seq(seq_len, msa_file, model_type):
    if model_type == "EvoDiff-MSA":
        checkpoint = MSA_OA_DM_MAXSUB()
        model, collater, tokenizer, scheme = checkpoint
        tokeinzed_sample, generated_sequence  = generate_query_oadm_msa_simple(msa_file, model, tokenizer, n_sequences=64, seq_length=seq_len, device='cpu', selection_type='random')

    return generated_sequence

usg_app = gr.Interface(
            fn=make_uncond_seq,
            inputs=[
                gr.Slider(10, 100, label = "Sequence Length"),
                gr.Dropdown(["EvoDiff-Seq-OADM 38M", "EvoDiff-D3PM-Uniform 38M"], type="value", label = "Model")
                ],
            outputs="text",
            title = "Unconditional sequence generation",
            description="Generate a sequence with `EvoDiff-Seq-OADM 38M` (smaller/faster) or `EvoDiff-D3PM-Uniform 38M` (larger/slower) models."
            )

csg_app = gr.Interface(
            fn=make_cond_seq,
            inputs=[
                gr.Slider(10, 100, label = "Sequence Length"),
                gr.File(file_types=["a3m"], label = "MSA File"),
                gr.Dropdown(["EvoDiff-MSA"], type="value", label = "Model")
                ],
            outputs="text",
            title = "Conditional sequence generation",
            description="Evolutionary guided sequence generation with the `EvoDiff-MSA` model."
            )


with gr.Blocks() as edapp:
    with gr.Row():
        gr.Markdown(
            """
            # EvoDiff
            ## Generation of protein sequences and evolutionary alignments via discrete diffusion models

            Created By: Microsoft Research [Sarah Alamdari, Nitya Thakkar, Rianne van den Berg, Alex X. Lu, Nicolo Fusi, ProfileAva P. Amini, and Kevin K. Yang]
            
            Spaces App By: [Colby T. Ford](httos://github.com/colbyford)
            """
        )
    with gr.Row():
        gr.TabbedInterface([usg_app, csg_app], ["Unconditional sequence generation", "Conditional generation"])



if __name__ == "__main__":
    edapp.launch()