File size: 2,457 Bytes
d93a43e
c573591
d93a43e
0d8eac0
 
 
 
bee36a2
1b279a5
c573591
6e75c39
1b279a5
6e75c39
 
 
 
 
 
 
 
 
 
 
 
0d8eac0
6e75c39
ef2888d
 
 
 
 
 
 
 
 
 
 
8f83392
ef2888d
 
0d8eac0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1b763d0
 
 
0d8eac0
6b4d3f3
 
 
 
 
 
 
 
dd36091
7ef0d72
dd36091
0029d81
0d8eac0
6ad6514
aab0394
 
 
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
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

from rdkit.Chem import Draw
from rdkit import Chem
import selfies as sf

sf_output="zju"
def greet1(name):
    tokenizer = AutoTokenizer.from_pretrained("zjunlp/MolGen")
    model = AutoModelForSeq2SeqLM.from_pretrained("zjunlp/MolGen")
    
    sf_input = tokenizer(name, return_tensors="pt")
    
    # beam search
    molecules = model.generate(input_ids=sf_input["input_ids"],
                              attention_mask=sf_input["attention_mask"],
                              max_length=15,
                              min_length=5,
                              num_return_sequences=5,
                              num_beams=5)

    sf_output = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True).replace(" ","") for g in molecules]
    return sf_output
    
def greet2(name):
    tokenizer = AutoTokenizer.from_pretrained("zjunlp/MolGen")
    model = AutoModelForSeq2SeqLM.from_pretrained("zjunlp/MolGen")
    
    sf_input = tokenizer(name, return_tensors="pt")
    
    # beam search
    molecules = model.generate(input_ids=sf_input["input_ids"],
                              attention_mask=sf_input["attention_mask"],
                              max_length=15,
                              min_length=5,
                              num_return_sequences=5,
                              num_beams=5)

    sf_output = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True).replace(" ","") for g in molecules]
    smis = [sf.decoder(i) for i in sf_output]
    
    mols = []
    for smi in smis:
        mol = Chem.MolFromSmiles(smi)
        mols.append(mol)
    
    img = Draw.MolsToGridImage(
        mols,
        molsPerRow=4,
        subImgSize=(200,200),
        legends=['' for x in mols]
    )
   
    return img


def greet3(name):
   
    return name

examples = [
            
            ['[C][=C][C][=C][C][=C][Ring1][=Branch1]'],['[C]']

]

greeter_1 = gr.Interface(greet1, inputs="textbox", outputs="text",title="Molecular Language Model as Multi-task Generator",
    examples=examples,)
greeter_2 = gr.Interface(greet2 , inputs="textbox", outputs="image")
#greeter_2.launch()
demo = gr.Parallel(greeter_1, greeter_2)
 

demo.launch()
#iface = gr.Interface(fn=greet2, inputs="text", outputs="image", title="Molecular Language Model as Multi-task Generator",
 #   ) 
#iface.launch()