Spaces:
Running
Running
| """Render a guest 2D structure from SMILES with RDKit (no external service).""" | |
| from __future__ import annotations | |
| from io import BytesIO | |
| def render_smiles(smiles: str, size: int = 320): | |
| """Return a PIL.Image of the molecule, or None if SMILES is empty/invalid.""" | |
| if not smiles: | |
| return None | |
| try: | |
| from rdkit import Chem | |
| from rdkit.Chem.Draw import rdMolDraw2D | |
| except ImportError: | |
| return None | |
| mol = Chem.MolFromSmiles(smiles) | |
| if mol is None: | |
| return None | |
| drawer = rdMolDraw2D.MolDraw2DCairo(size, size) | |
| drawer.DrawMolecule(mol) | |
| drawer.FinishDrawing() | |
| from PIL import Image | |
| return Image.open(BytesIO(drawer.GetDrawingText())) | |