| --- |
| license: mit |
| language: |
| - en |
| tags: |
| - PyTorch |
| pipeline_tag: unconditional-image-generation |
| --- |
| |
| # De Novo Drug Generator - RNN-VAE |
|
|
| De Novo Drug Generator - RNN-VAE is a deep learning model designed for generating novel drug molecules. |
| Training data from ChemBL library |
|
|
| Full project file at https://github.com/teohyc/drug_agent |
| |
| |
| ## Usage |
| |
| ```python |
| from rdkit import Chem |
| from rdkit.Chem import Draw, Descriptors |
| from tree_rnn_vae_infer import generate_candidate_mol |
| from tree_rnn_vae_model import TreeEncoder, LatentHead, TreeVAE, TreeDecoder |
| |
| |
| def compute_molecule_props(mol): |
| return { |
| "MW": Descriptors.MolWt(mol), |
| "logP": Descriptors.MolLogP(mol), |
| "HBD": Descriptors.NumHDonors(mol), |
| "HBA": Descriptors.NumHAcceptors(mol), |
| } |
| |
| |
| # display molecule |
| def render_molecule_grid(selected): |
| if not selected: |
| return |
| |
| mols, legends = [], [] |
| |
| if isinstance(selected, dict): |
| iterable = selected.items() |
| else: |
| iterable = enumerate(selected, 1) |
| |
| for i, item in iterable: |
| if isinstance(selected, dict): |
| smi, props = i, item |
| else: |
| smi, props = item, None |
| |
| mol = Chem.MolFromSmiles(smi) |
| if mol: |
| mols.append(mol) |
| if props is None: |
| props = compute_molecule_props(mol) |
| legends.append( |
| f"M{i} |
| MW={props['MW']:.0f}, logP={props['logP']:.2f}, " |
| f"HBD={props['HBD']}, HBA={props['HBA']}" |
| ) |
| |
| img = Draw.MolsToGridImage( |
| mols, |
| molsPerRow=3, |
| subImgSize=(400, 400), |
| legends=legends, |
| useSVG=False, |
| ) |
| return img |
| |
| |
| molecules = generate_candidate_mol(num_samples=6, max_len=20) #change to your desired molecule size and number |
| img = render_molecule_grid(molecules) |
| img.show() |
| ``` |