|
import gradio as gr |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
|
|
|
def greet(name): |
|
|
|
tokenizer = AutoTokenizer.from_pretrained("zjunlp/MolGen") |
|
model = AutoModelForSeq2SeqLM.from_pretrained("zjunlp/MolGen") |
|
|
|
sf_input = tokenizer(name, return_tensors="pt") |
|
|
|
|
|
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 |
|
|
|
inputs = [ |
|
gr.Textbox(label='input'), |
|
gr.Textbox(label='output') |
|
] |
|
|
|
examples = [ |
|
|
|
['[C][=C][C][=C][C][=C][Ring1][=Branch1]', |
|
'[C][=C][C][=C][C][=C][Ring1][=Branch1]' |
|
'[C][=C][C][=C][C][=C][C][=C][Ring1][=Branch1]' |
|
'[C][=C][C][=C][C][=C][Ring1][=Branch1][C][=C][C][=C]' |
|
'[C][=C][C][=C][C][=C][Ring1][=Branch1][C@H1][C][=C][C]' |
|
'[C][=C][C][=C][C][=C][Ring1][=Branch1][C@H1][=C][C][=C]'] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
iface = gr.Interface(fn=greet, inputs="text", outputs="text", inputs=inputs, |
|
examples=examples, ) |
|
iface.launch() |