Skip to content

Instantly share code, notes, and snippets.

@DocMinus
Created January 20, 2023 16:06
Show Gist options
  • Select an option

  • Save DocMinus/026ed8c845f9ad3c7dcf3df286038714 to your computer and use it in GitHub Desktop.

Select an option

Save DocMinus/026ed8c845f9ad3c7dcf3df286038714 to your computer and use it in GitHub Desktop.
Python SVG images in memory without using temp files
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import base64\n",
"from IPython.display import SVG, display\n",
"from rdkit import Chem\n",
"from rdkit.Chem import Draw\n",
"from rdkit.Chem.Draw import rdMolDraw2D, rdDepictor\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def draw(mol):\n",
" ''' \n",
" Displays a SVG without detour of a temp file\n",
" by DocMinus (and some help of the public forums)\n",
" January 20, 2023\n",
" '''\n",
" rdDepictor.SetPreferCoordGen(True)\n",
" draw_mol = rdMolDraw2D.MolDraw2DSVG(-1, -1)\n",
" #rdMolDraw2D.SetDarkMode(d)\n",
" draw_mol.drawOptions().padding = 0.0\n",
" draw_mol.drawOptions().scalingFactor = 25\n",
" rdMolDraw2D.PrepareAndDrawMolecule(draw_mol, mol)\n",
" draw_mol.FinishDrawing()\n",
" svg_image = draw_mol.GetDrawingText()\n",
" # usually here the detour is done to write to files and read back\n",
" # one can simply do e.g. for Jupyter:\n",
" display(SVG(svg_image))\n",
"\n",
" # for html (e.g. applications using Dash or such; requires dash imports)\n",
" # encoded_svgimg = svg_image.encode('ascii')\n",
" # decoded_svgimg = base64.b64encode(encoded_svgimg).decode() \n",
" # html.Img(src=\"data:image/svg+xml;base64,{}\".format(decoded_svgimg), alt=\"empty\")\n",
"\n",
" # file wise this is usually done by writing first:\n",
" # with open(\"path\\filename.svg\", \"w\") as f:\n",
" # f.write(svg_image)\n",
" # and reading back:\n",
" # decoded_svgimage = base64.b64encode(open(\"path\\filename.svg\", \"rb\").read()).decode()\n",
" # html.Img(src=\"data:image/svg+xml;base64,{}\".format(decoded_svgimage), alt=\"empty\")\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<rdkit.Chem.rdchem.Mol at 0x7f725c1a7640>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"smi = 'C1CCCN1C(C)c1ccc(cc1)c1cnc2c(cnn2c1)c1ccc(S(=O)(=O)N)c2ccccc21'\n",
"mol = Chem.MolFromSmiles(smi)\n",
"mol"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:rdkit=\"http://www.rdkit.org/xml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" xml:space=\"preserve\" width=\"250px\" height=\"280px\" viewBox=\"0 0 250 280\">\n<!-- END OF HEADER -->\n<rect style=\"opacity:1.0;fill:#FFFFFF;stroke:none\" width=\"250.0\" height=\"280.0\" x=\"0.0\" y=\"0.0\"> </rect>\n<path class=\"bond-0 atom-0 atom-1\" d=\"M 30.0,228.1 L 5.2,230.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-1 atom-1 atom-2\" d=\"M 5.2,230.7 L 0.0,255.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-2 atom-2 atom-3\" d=\"M 0.0,255.1 L 21.6,267.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-3 atom-3 atom-4\" d=\"M 21.6,267.6 L 28.5,261.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-3 atom-3 atom-4\" d=\"M 28.5,261.5 L 35.3,255.3\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-4 atom-4 atom-5\" d=\"M 45.0,252.0 L 54.8,254.1\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-4 atom-4 atom-5\" d=\"M 54.8,254.1 L 64.6,256.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-5 atom-5 atom-6\" d=\"M 64.6,256.1 L 72.3,279.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-6 atom-5 atom-7\" d=\"M 64.6,256.1 L 81.3,237.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-7 atom-7 atom-8\" d=\"M 81.3,237.6 L 105.7,242.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-7 atom-7 atom-8\" d=\"M 84.2,234.4 L 104.4,238.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-8 atom-8 atom-9\" d=\"M 105.7,242.8 L 122.4,224.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-9 atom-9 atom-10\" d=\"M 122.4,224.3 L 114.7,200.5\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-9 atom-9 atom-10\" d=\"M 118.2,223.4 L 111.8,203.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-10 atom-10 atom-11\" d=\"M 114.7,200.5 L 90.3,195.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-11 atom-11 atom-12\" d=\"M 90.3,195.3 L 73.6,213.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-11 atom-11 atom-12\" d=\"M 91.7,199.4 L 77.8,214.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-12 atom-10 atom-13\" d=\"M 114.7,200.5 L 131.4,182.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-13 atom-13 atom-14\" d=\"M 131.4,182.0 L 123.8,158.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-14 atom-14 atom-15\" d=\"M 123.8,158.2 L 129.7,151.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-14 atom-14 atom-15\" d=\"M 129.7,151.6 L 135.6,145.1\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-14 atom-14 atom-15\" d=\"M 128.0,159.1 L 133.2,153.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-14 atom-14 atom-15\" d=\"M 133.2,153.3 L 138.4,147.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-15 atom-15 atom-16\" d=\"M 145.3,140.7 L 155.1,142.8\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-15 atom-15 atom-16\" d=\"M 155.1,142.8 L 164.9,144.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-16 atom-16 atom-17\" d=\"M 164.9,144.9 L 185.1,130.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-16 atom-16 atom-17\" d=\"M 169.3,146.3 L 185.1,134.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-17 atom-17 atom-18\" d=\"M 185.1,130.2 L 205.3,144.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-18 atom-18 atom-19\" d=\"M 205.3,144.9 L 202.4,153.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-18 atom-18 atom-19\" d=\"M 202.4,153.7 L 199.5,162.5\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-18 atom-18 atom-19\" d=\"M 200.9,146.4 L 198.4,153.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-18 atom-18 atom-19\" d=\"M 198.4,153.9 L 196.0,161.4\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-19 atom-19 atom-20\" d=\"M 192.7,168.7 L 177.4,168.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-20 atom-20 atom-21\" d=\"M 167.7,174.0 L 161.8,180.6\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-20 atom-20 atom-21\" d=\"M 161.8,180.6 L 155.9,187.2\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-21 atom-17 atom-22\" d=\"M 185.1,130.2 L 185.1,105.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-22 atom-22 atom-23\" d=\"M 185.1,105.3 L 163.5,92.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-22 atom-22 atom-23\" d=\"M 185.1,101.0 L 167.2,90.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-23 atom-23 atom-24\" d=\"M 163.5,92.8 L 163.5,67.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-24 atom-24 atom-25\" d=\"M 163.5,67.8 L 185.2,55.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-24 atom-24 atom-25\" d=\"M 167.3,70.0 L 185.1,59.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-25 atom-25 atom-26\" d=\"M 185.2,55.3 L 185.2,46.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-25 atom-25 atom-26\" d=\"M 185.2,46.1 L 185.2,36.8\" style=\"fill:none;fill-rule:evenodd;stroke:#CCCC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-26 atom-26 atom-27\" d=\"M 189.4,32.3 L 196.9,32.3\" style=\"fill:none;fill-rule:evenodd;stroke:#CCCC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-26 atom-26 atom-27\" d=\"M 196.9,32.3 L 204.4,32.3\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-26 atom-26 atom-27\" d=\"M 189.4,28.5 L 196.9,28.5\" style=\"fill:none;fill-rule:evenodd;stroke:#CCCC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-26 atom-26 atom-27\" d=\"M 196.9,28.5 L 204.4,28.5\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-27 atom-26 atom-28\" d=\"M 180.9,28.5 L 173.4,28.5\" style=\"fill:none;fill-rule:evenodd;stroke:#CCCC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-27 atom-26 atom-28\" d=\"M 173.4,28.5 L 165.9,28.5\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-27 atom-26 atom-28\" d=\"M 180.9,32.2 L 173.4,32.2\" style=\"fill:none;fill-rule:evenodd;stroke:#CCCC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-27 atom-26 atom-28\" d=\"M 173.4,32.2 L 165.9,32.2\" style=\"fill:none;fill-rule:evenodd;stroke:#FF0000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-28 atom-26 atom-29\" d=\"M 185.2,24.3 L 185.2,17.9\" style=\"fill:none;fill-rule:evenodd;stroke:#CCCC00;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-28 atom-26 atom-29\" d=\"M 185.2,17.9 L 185.2,11.5\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-29 atom-25 atom-30\" d=\"M 185.2,55.3 L 206.8,67.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-30 atom-30 atom-31\" d=\"M 206.8,67.8 L 228.4,55.4\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-30 atom-30 atom-31\" d=\"M 210.5,70.0 L 228.4,59.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-31 atom-31 atom-32\" d=\"M 228.4,55.4 L 250.0,67.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-32 atom-32 atom-33\" d=\"M 250.0,67.9 L 250.0,92.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-32 atom-32 atom-33\" d=\"M 246.3,70.0 L 246.2,90.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-33 atom-33 atom-34\" d=\"M 250.0,92.8 L 228.4,105.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-34 atom-34 atom-35\" d=\"M 228.4,105.3 L 206.7,92.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-34 atom-34 atom-35\" d=\"M 228.4,101.0 L 210.5,90.7\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-35 atom-4 atom-0\" d=\"M 37.4,244.8 L 33.7,236.5\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-35 atom-4 atom-0\" d=\"M 33.7,236.5 L 30.0,228.1\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-36 atom-12 atom-7\" d=\"M 73.6,213.9 L 81.3,237.6\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-37 atom-21 atom-13\" d=\"M 155.9,187.2 L 131.4,182.0\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-37 atom-21 atom-13\" d=\"M 154.5,183.1 L 134.3,178.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-38 atom-35 atom-22\" d=\"M 206.7,92.8 L 185.1,105.3\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-39 atom-20 atom-16\" d=\"M 170.6,162.5 L 167.7,153.7\" style=\"fill:none;fill-rule:evenodd;stroke:#0000FF;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-39 atom-20 atom-16\" d=\"M 167.7,153.7 L 164.9,144.9\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path class=\"bond-40 atom-35 atom-30\" d=\"M 206.7,92.8 L 206.8,67.8\" style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"/>\n<path d=\"M 28.8,228.3 L 30.0,228.1 L 30.2,228.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 6.4,230.6 L 5.2,230.7 L 4.9,231.9\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 0.3,253.9 L 0.0,255.1 L 1.1,255.8\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 20.5,267.0 L 21.6,267.6 L 22.0,267.3\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 104.5,242.5 L 105.7,242.8 L 106.6,241.9\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 121.6,225.2 L 122.4,224.3 L 122.0,223.1\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 91.5,195.6 L 90.3,195.3 L 89.5,196.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 74.4,212.9 L 73.6,213.9 L 74.0,215.0\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 124.1,159.4 L 123.8,158.2 L 124.1,157.9\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 204.3,144.2 L 205.3,144.9 L 205.1,145.4\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 156.2,186.9 L 155.9,187.2 L 154.6,186.9\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 164.6,93.4 L 163.5,92.8 L 163.5,91.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 163.5,69.1 L 163.5,67.8 L 164.6,67.2\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 227.3,56.0 L 228.4,55.4 L 229.5,56.0\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 248.9,67.3 L 250.0,67.9 L 250.0,69.1\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 250.0,91.6 L 250.0,92.8 L 248.9,93.5\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path d=\"M 229.4,104.7 L 228.4,105.3 L 227.3,104.7\" style=\"fill:none;stroke:#000000;stroke-width:2.0px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;\"/>\n<path class=\"atom-4\" d=\"M 37.8 245.6 L 41.3 251.3 Q 41.6 251.8, 42.2 252.8 Q 42.8 253.8, 42.8 253.9 L 42.8 245.6 L 44.2 245.6 L 44.2 256.2 L 42.7 256.2 L 39.0 250.1 Q 38.6 249.4, 38.1 248.6 Q 37.7 247.7, 37.5 247.5 L 37.5 256.2 L 36.1 256.2 L 36.1 245.6 L 37.8 245.6 \" fill=\"#0000FF\"/>\n<path class=\"atom-15\" d=\"M 138.1 134.4 L 141.6 140.0 Q 142.0 140.6, 142.5 141.6 Q 143.1 142.6, 143.1 142.6 L 143.1 134.4 L 144.5 134.4 L 144.5 145.0 L 143.0 145.0 L 139.3 138.8 Q 138.9 138.1, 138.4 137.3 Q 138.0 136.5, 137.8 136.2 L 137.8 145.0 L 136.5 145.0 L 136.5 134.4 L 138.1 134.4 \" fill=\"#0000FF\"/>\n<path class=\"atom-19\" d=\"M 195.2 163.4 L 198.7 169.0 Q 199.0 169.5, 199.6 170.5 Q 200.1 171.5, 200.2 171.6 L 200.2 163.4 L 201.6 163.4 L 201.6 174.0 L 200.1 174.0 L 196.4 167.8 Q 195.9 167.1, 195.5 166.3 Q 195.0 165.5, 194.9 165.2 L 194.9 174.0 L 193.5 174.0 L 193.5 163.4 L 195.2 163.4 \" fill=\"#0000FF\"/>\n<path class=\"atom-20\" d=\"M 170.2 163.3 L 173.7 169.0 Q 174.1 169.5, 174.6 170.5 Q 175.2 171.5, 175.2 171.6 L 175.2 163.3 L 176.6 163.3 L 176.6 173.9 L 175.1 173.9 L 171.4 167.8 Q 171.0 167.1, 170.5 166.3 Q 170.1 165.4, 169.9 165.2 L 169.9 173.9 L 168.6 173.9 L 168.6 163.3 L 170.2 163.3 \" fill=\"#0000FF\"/>\n<path class=\"atom-26\" d=\"M 182.2 34.0 Q 182.3 34.1, 182.8 34.3 Q 183.3 34.5, 183.8 34.6 Q 184.4 34.7, 184.9 34.7 Q 185.9 34.7, 186.5 34.3 Q 187.1 33.8, 187.1 32.9 Q 187.1 32.3, 186.8 32.0 Q 186.5 31.6, 186.1 31.4 Q 185.6 31.2, 184.9 31.0 Q 183.9 30.7, 183.3 30.4 Q 182.8 30.2, 182.4 29.6 Q 182.0 29.0, 182.0 28.1 Q 182.0 26.7, 182.9 25.9 Q 183.8 25.1, 185.6 25.1 Q 186.8 25.1, 188.2 25.7 L 187.9 26.8 Q 186.6 26.3, 185.7 26.3 Q 184.6 26.3, 184.0 26.7 Q 183.5 27.2, 183.5 27.9 Q 183.5 28.5, 183.8 28.8 Q 184.1 29.2, 184.5 29.3 Q 184.9 29.5, 185.7 29.8 Q 186.6 30.1, 187.2 30.4 Q 187.7 30.7, 188.2 31.3 Q 188.6 31.9, 188.6 32.9 Q 188.6 34.4, 187.6 35.2 Q 186.6 36.0, 185.0 36.0 Q 184.0 36.0, 183.3 35.7 Q 182.6 35.5, 181.8 35.2 L 182.2 34.0 \" fill=\"#CCCC00\"/>\n<path class=\"atom-27\" d=\"M 205.3 30.4 Q 205.3 27.9, 206.5 26.5 Q 207.8 25.0, 210.1 25.0 Q 212.5 25.0, 213.7 26.5 Q 215.0 27.9, 215.0 30.4 Q 215.0 33.0, 213.7 34.5 Q 212.5 35.9, 210.1 35.9 Q 207.8 35.9, 206.5 34.5 Q 205.3 33.0, 205.3 30.4 M 210.1 34.7 Q 211.8 34.7, 212.6 33.7 Q 213.5 32.6, 213.5 30.4 Q 213.5 28.3, 212.6 27.3 Q 211.8 26.2, 210.1 26.2 Q 208.5 26.2, 207.6 27.3 Q 206.8 28.3, 206.8 30.4 Q 206.8 32.6, 207.6 33.7 Q 208.5 34.7, 210.1 34.7 \" fill=\"#FF0000\"/>\n<path class=\"atom-28\" d=\"M 155.3 30.4 Q 155.3 27.8, 156.6 26.4 Q 157.9 25.0, 160.2 25.0 Q 162.6 25.0, 163.8 26.4 Q 165.1 27.8, 165.1 30.4 Q 165.1 33.0, 163.8 34.4 Q 162.5 35.9, 160.2 35.9 Q 157.9 35.9, 156.6 34.4 Q 155.3 33.0, 155.3 30.4 M 160.2 34.7 Q 161.8 34.7, 162.7 33.6 Q 163.6 32.5, 163.6 30.4 Q 163.6 28.3, 162.7 27.3 Q 161.8 26.2, 160.2 26.2 Q 158.6 26.2, 157.7 27.2 Q 156.8 28.3, 156.8 30.4 Q 156.8 32.5, 157.7 33.6 Q 158.6 34.7, 160.2 34.7 \" fill=\"#FF0000\"/>\n<path class=\"atom-29\" d=\"M 182.8 0.1 L 186.3 5.7 Q 186.7 6.3, 187.2 7.3 Q 187.8 8.3, 187.8 8.4 L 187.8 0.1 L 189.2 0.1 L 189.2 10.7 L 187.8 10.7 L 184.0 4.6 Q 183.6 3.9, 183.1 3.0 Q 182.7 2.2, 182.5 2.0 L 182.5 10.7 L 181.2 10.7 L 181.2 0.1 L 182.8 0.1 \" fill=\"#0000FF\"/>\n<path class=\"atom-29\" d=\"M 191.2 0.1 L 192.7 0.1 L 192.7 4.6 L 198.1 4.6 L 198.1 0.1 L 199.5 0.1 L 199.5 10.7 L 198.1 10.7 L 198.1 5.8 L 192.7 5.8 L 192.7 10.7 L 191.2 10.7 L 191.2 0.1 \" fill=\"#0000FF\"/>\n<path class=\"atom-29\" d=\"M 201.6 10.3 Q 201.9 9.7, 202.5 9.3 Q 203.1 8.9, 203.9 8.9 Q 205.0 8.9, 205.6 9.5 Q 206.2 10.1, 206.2 11.1 Q 206.2 12.1, 205.4 13.1 Q 204.7 14.1, 203.1 15.2 L 206.3 15.2 L 206.3 16.0 L 201.6 16.0 L 201.6 15.4 Q 202.9 14.4, 203.7 13.7 Q 204.5 13.0, 204.8 12.4 Q 205.2 11.8, 205.2 11.2 Q 205.2 10.5, 204.9 10.1 Q 204.5 9.7, 203.9 9.7 Q 203.4 9.7, 203.0 10.0 Q 202.6 10.2, 202.4 10.7 L 201.6 10.3 \" fill=\"#0000FF\"/>\n</svg>",
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"draw(mol)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "allroundclone",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.13"
},
"vscode": {
"interpreter": {
"hash": "8c8b18bb1c498fb13b69937711c75eea1176a795d16ac61866017d053f0aa3ea"
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}
@DocMinus
Copy link
Author

Especially in context of building GUIs this comes in handy.

@brifordwylie
Copy link

Wow, thank you SO much, spent half a day trying to figure this out. It would seem like this would be easy (see rdkit/rdkit#7497) but shrug.. please keep me updated if you find a better/simpler solution. Thanks again for posting this gist!

@DocMinus
Copy link
Author

DocMinus commented Dec 29, 2024

Wow, thank you SO much, spent half a day trying to figure this out. It would seem like this would be easy (see rdkit/rdkit#7497) but shrug.. please keep me updated if you find a better/simpler solution. Thanks again for posting this gist!

Glad it helped (and that someone actually found this!).
This is basically still what I use, don't think it gets much simpler, by the time you remove all the comments there aren't many lines of code and being used as a function you will prolly "never really see this" in the end :D

@brifordwylie
Copy link

brifordwylie commented Jan 8, 2025

Screenshot 2025-01-08 at 8 46 59 AM

Just for fun, put up a prototype app: compound-explorer

@DocMinus
Copy link
Author

DocMinus commented Jan 8, 2025

Just for fun, put up a prototype app: compound-explorer
Nice, good job!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment