{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import os\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import mpld3\n", "from rdkit import Chem\n", "from rdkit.Chem import RDConfig\n", "from rdkit.Chem import rdFingerprintGenerator\n", "from rdkit.Chem import DataStructs\n", "from sklearn.decomposition import PCA\n", "from rdkit.Chem.Draw import IPythonConsole\n", "from rdkit.Chem import Draw\n", "from rdkit.Chem import AllChem\n", "from rdkit.Chem.Draw import rdDepictor\n", "from rdkit.Chem.Draw import rdMolDraw2D\n", "from mpld3 import plugins\n", "mpld3.enable_notebook()\n", "\n", "#https://stackoverflow.com/questions/47380865/json-serialization-error-using-matplotlib-mpld3-with-linkedbrush" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def fp2arr(fp):\n", " arr = np.zeros((1,))\n", " DataStructs.ConvertToNumpyArray(fp,arr)\n", " return arr\n", "\n", "# Original code is described in the rdkit blog post.\n", "# http://rdkit.blogspot.com/2015/02/new-drawing-code.html\n", "\n", "def moltosvg(mol,molSize=(225,75),kekulize=True):\n", " mc = Chem.Mol(mol.ToBinary())\n", " if kekulize:\n", " try:\n", " Chem.Kekulize(mc)\n", " except:\n", " mc = Chem.Mol(mol.ToBinary())\n", " if not mc.GetNumConformers():\n", " rdDepictor.Compute2DCoords(mc)\n", " drawer = rdMolDraw2D.MolDraw2DSVG(molSize[0],molSize[1])\n", " drawer.DrawMolecule(mc)\n", " drawer.FinishDrawing()\n", " svg = drawer.GetDrawingText()\n", " return svg.replace('svg:','')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(47, 2048)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fpgen = rdFingerprintGenerator.GetMorganGenerator(2)\n", "mols = [m for m in Chem.SDMolSupplier(os.path.join(RDConfig.RDDocsDir,'Book/data/cdk2.sdf'))]\n", "for m in mols:\n", " AllChem.Compute2DCoords(m)\n", "fps = [fpgen.GetFingerprint(m) for m in mols]\n", "X = np.asarray([fp2arr(fp) for fp in fps])\n", "X.shape" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "pca = PCA(n_components=3)\n", "res = pca.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "svgs = [moltosvg(m) for m in mols]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.set_xlabel('PCA1')\n", "ax.set_ylabel('PCA2')\n", "ax.set_title('Viz chemical space!')\n", "points = ax.scatter(res[:,0], res[:,1])\n", "tooltip = plugins.PointHTMLTooltip(points, svgs)\n", "plugins.connect(fig, tooltip)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }