| 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") |
| |
| |
| molecules = model.generate(input_ids=sf_input["input_ids"], |
| attention_mask=sf_input["attention_mask"], |
| max_length=15, |
| min_length=5, |
| num_return_sequences=4, |
| 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") |
| |
| |
| molecules = model.generate(input_ids=sf_input["input_ids"], |
| attention_mask=sf_input["attention_mask"], |
| max_length=15, |
| min_length=5, |
| num_return_sequences=4, |
| 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") |
| greeter_2 = gr.Interface(greet2 , inputs="textbox", outputs="image") |
| |
| demo = gr.Parallel(greeter_1, greeter_2,title="Molecular Language Model as Multi-task Generator", |
| examples=examples) |
| |
|
|
| demo.launch() |
| |
| |
| |