Skip to content

Instantly share code, notes, and snippets.

@greglandrum
Last active February 24, 2021 10:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save greglandrum/56a80e84676fc3a24250b821d0faac13 to your computer and use it in GitHub Desktop.
Save greglandrum/56a80e84676fc3a24250b821d0faac13 to your computer and use it in GitHub Desktop.
MolsToGridImage and images.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "`Draw.MolsToGridImage()` behaves differently when you use in the Jupyter (or JupyterLab) notebook:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from rdkit import Chem\nfrom rdkit.Chem import Draw\nfrom PIL import Image\n\nmols = [Chem.MolFromSmiles(smi) for smi in ('CCC','CCO','CCN')]\nimg = Draw.MolsToGridImage(mols,)\ntype(img)",
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": "IPython.core.display.Image"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "If you want the raw PNG data, you can extract it from that object:"
},
{
"metadata": {
"trusted": true,
"scrolled": false
},
"cell_type": "code",
"source": "png = img.data\ntype(png)",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": "bytes"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Here's how you write that to a file"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with open('./foo.png','wb+') as outf:\n outf.write(png)",
"execution_count": 8,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "And here's a quick demo showing how to read the file back in"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "Image.open('./foo.png')",
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 7,
"data": {
"text/plain": "<PIL.PngImagePlugin.PngImageFile image mode=RGB size=600x200 at 0x7F2C16343E50>",
"image/png": "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NEMRAlqKjzdvVFbKqVNenXLxonz6qXn7jjssmQqBbs0ac0WHV1+VkhK7p/kRRQhoaejQpsubW7d6dcq2bWJ8ejU0lCLEtRk+XLKyRESUkt/+VpSyeyARoQgBTQUFyY+7YMq6dV49IeXnmzceeEDCw60aDIFu2TIZPFhEpLRUNm60exoRoQgBfaWnmzc++EBeesnDwa+/Ltu2mbcff9zCqRDounaVv/3NvP2vf9k5iRtFCOhq9OimVUbnz2/rAmlJibjfk/nQQzJliuWzIaD9/OeSkiIiYsVKkadPy0svyfLlsnKlbNvW9JGfNlCEgMb+/ncZOlRE5NIlSU6WtDQpL7/igIoKWbRIEhPNT1nExsratTbMiYCzZo107erj+6yrk/R0iYuTOXNk2TJZskR+8hMZMcLzgoAUIaCxHj1k507znS8ul7zwgowZI9HRMmqUjBkj/frJ8OGSlyf19SIit90mJSV8cAI+MWiQZGf7+D4feUTWrpXBg+X552XXLnn1VYmPl6NH5f77PSzkQBECeuvbV959V556qmn5tMpKOXhQysvl66/Nr3TrJn/8o+zeLTExdo2JwLN0qXk9wifOnJHSUhkxQkpLZd48mTxZfvlLeecd6dtXTp2SV15p69wg5ZC3rwKwV22tFBfLW2/JiRPy7beilERFSUyMJCXJtGnS2jZGW7ZIWZmIyOTJ5hYDbdi4UY4eFRGZPp0PYASw994zt1uaNEluvLGtIw8flo8/FhHp1cvcDezIEXNd95gYmTTJwwOVl8vhwyIit9wid9wh9fVSWdlyqe7f/EbWrZN58+T551u9H4oQABCwjGXYfv1refHFVo/h0igAIGAZqyENGdLWMbwiBAAEprNnJS5O6urkwAG5/fZWD+MVIQAgMGVlyeXLMnNmWy0ovCIEAASk3FxZvFgGDJAPP5S+fds6kleEAIBAs2aNZGVJnz6yfbuHFhSKEAAQSFwuyc6WhQuld2956y0ZNszzKW3tUA8AgB+prpY5c2TzZhkzRjZtkrg4r87iFSEAIBDs2yfjxsnmzfLww1JS4m0LCm+WAQAEgJISSUyU+noJCjL3O2wuKkr27Gn1XC6NAgD8Xk3NtS+FyytCAIDW+DdCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDWKEIAgNYoQgCA1ihCAIDW/gehloSHBDzfEQAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.8.2",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "56a80e84676fc3a24250b821d0faac13",
"data": {
"description": "MolsToGridImage and images.ipynb",
"public": true
}
},
"_draft": {
"nbviewer_url": "https://gist.github.com/56a80e84676fc3a24250b821d0faac13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
@Maron-ChingFungChan
Copy link

Awesome! Thank you so much.

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