Skip to content

Instantly share code, notes, and snippets.

@ptosco
Created September 4, 2015 16:28
Show Gist options
  • Save ptosco/44605d06a923c1198e3e to your computer and use it in GitHub Desktop.
Save ptosco/44605d06a923c1198e3e to your computer and use it in GitHub Desktop.
Resonance-aware substructure searching with RDKit
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import sys\n",
"import rdkit\n",
"from rdkit import Chem\n",
"from rdkit.Chem.Draw import IPythonConsole, MolsToGridImage"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def getResonanceStructures(smiles, flags = 0):\n",
" mol = Chem.MolFromSmiles(smiles)\n",
" suppl = Chem.ResonanceMolSupplier(mol, flags)\n",
" resMols = [mol for mol in suppl]\n",
" return (mol, resMols)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('NC(=[NH2+])c1ccc(cc1)C(=O)[O-]')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAAWy0lEQVR4nO3de1RVdf7G8Tcm2pg/\ntdGcycaxm4eLoFhYppiXtISYZDmAjjammdBlZsBbXkbMSC0VSLIxQcNL2njJqBw8LhsDMc1RHBVE\n4OhKncrVMs1x1BRRzu+Pk8kGUqt99kZ7Xmv1B/tz9PssO3/wnO/Z++vjdrvdiMj38bE7gIiIiMj1\npJ7dAURERERE5OdDBURERERERCyjAiIiIiIiIpZRAREREREREcuogIiIiIiIiGVUQERERERExDIq\nICIiIiIiYhkVEBERERERsYwKiIiIiIiIWEYFRERERERELKMCIiIiIiIillEBERERERERy6iAiIiI\niIiIZVRARERERETEMt4pIF27go/Ppf9EzLQfuvqAs8olZzzEO7+dxRtf/t0MSK/61uwK+63KLCIi\nIiKANwqIjw9MmgRut+e/tWtVQsR8XWBq/JVfZuCExKAqb80gmOU0zrummxlSRERERKqrb+rf5nTC\n7NkQHn7pWni451p6OiQkmLpcXVReXs6xY8dsWbt58+Y0bNjQlrUtFwSLAz07GxnhV345AOHgrvLa\ntoFeSSYiIiIil2FuAXG5wOGoed3h8Myuc0ePHmXIkCE4nc4rv9gLwsPDWbJkCS1atLBlfavdnQD4\ngNNdbZAJPpnGS3FR1V7jhLZ7wZ0A+9OhbeKlkU8idJkNm6//viwiIiJiOXMLyMWiEV7tI+mfQfkA\nmDBhAl999RWfffYZ9epZe39/ZWUlUVFRTJw4kczMzCv/getExlrwiYe1VS/GgTvj0o/OeHgP488R\nXHrN3QmeIoITurpUPERERES8ydwCEh4OERGeInKxhDidkJjo+dL9dWz79u0sXLiQ/Px8fvOb39iS\n4bXXXuPBBx8kLi6O0NBQWzJYLhzWvgcRmbXsctQivSvsnWT8KpaIiIiIWMf8j+ndbpg69dKjhiIi\njOWjvBx27TJ9WTu53W4SExOJiYmhS5cutuXo0qUL0dHRJCQk4L7OCt+uXZ63Tm3CMyDuKv4OZzwk\nboHMiEtvT8NN5+Ha/RARERHxNh+31b+pLl4MY8d6vpbVrJmlS3vLihUrGD58OKWlpbbtflz0+eef\n4+/vT1ZWFrGxsbZmMcvx455NtdRUGDLE8uX1CDcRERERE1lfQCoroXNnuP9+mDPH0qW94fTp0/j7\n+zN8+HCmTJlimJ07d46jR496df0WLVrQoEEDw7UpU6aQlZVFaWkpjRo18ur6VvjTn2DbNti6FSy+\ntQZUQERERERM5d0C8vXXcOwYtG1rvL5lC3TvDv/+NwQHe215KyQnJ5OVlUVJSQm/+MUvDLNNmzbx\n4IMPenX9/Px8unXrZrh25swZAgICGD58OElJSV5d39sKC+HeeyE/Hx54wDjbtw+aN4df/tKrEVRA\nREREREzk3QKSkOD56HrLlpqHEQ4YAEePwoYNXlve2w4dOkRAQABZWVkMHDiwxtyuHRCAv//97999\nLey3v/2tVzN400MPwS23wPLlxutut6eQdO7sOWbGi1RAREREREzk3QJy/Lhn92PmTHjySePss8/A\n3x+WLYOoKK9F8KbBgwfz+eefs3HjRruj1Kp79+60bt2apUuX2h3lR8nOhscfh7IyqH5rzZtvwrhx\nnl2Qm2/2agwVEBERERETef8ekNdeg2nTPDedN21qnCUlwdtvQ3Ex3HijV2OYbdOmTfTs2ZPt27fT\nsWNHu+PUaufOnXTq1Im8vDzCwsLsjvODnD0L7drB4MGQnGycnTjhuSl90iT485+9HkUFRERERMRE\n3i8g589DSAg8+ijMmGGcffMNBATAM8/A+PFejWGmyspKOnXqxD333MP8+fPtjnNZTz31FDt37mT7\n9u2WH474U7z8MsybB6WlUO3WGp5/3nO8zM6dUN/ck2xqowIiIiIiYiJrnoLldHq+ZlVU5Pnouqq3\n3oJnn/XskNx6q9ejmGHRokUkJibicrlo2bKl3XEu68iRIzgcDtLT03niiSfsjnNVDh8GPz944w3P\nV7Cqcrk8zy3IyYHevS2JowIiIiIiYiLrHsMbEQENGsB77xmvX7ybODAQsrIsifJT/O9//8PhcDBm\nzBjGjBljd5yrMmvWLFJTU3G5XDRp0sTuOFc0bJjn3o5Nm2o+u6BfP8+mWk6OZXFUQERERERMZF0B\nKS2F9u1hzRp45BHjbOtWCAvzPC3rvvssifNjTZgwgezsbAoLC2t9+lRddO7cOYKDg/n973/P9OnT\n7Y5zWdu2QZcusHmz56iYqtatg8ce82yk+flZFkkFRERERMRE1h5EmJgI69fD7t3g62sYXRg8mPwb\nb6Tnm29aFueH2rdvH0FBQaxevZrIyEi74/wga9asITo6mj179tC2+rksdYTb7eappzZSXt6NpUtv\n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\nB1HNZV9bM5j7AAAAAElFTkSuQmCC\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x52CE890>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5337710>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('NC(=[NH2+])c1ccc(cc1)C(=O)[O-]',\n",
" flags = Chem.ResonanceFlags.KEKULE_ALL)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x180 at 0x1F66870>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"rdkit.Chem.rdchem.BondType.SINGLE"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resMols[0].GetBondBetweenAtoms(3,4).GetBondType()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resMols[0].GetBondBetweenAtoms(3,4).GetIsAromatic()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"rdkit.Chem.rdchem.BondType.DOUBLE"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resMols[1].GetBondBetweenAtoms(3,4).GetBondType()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resMols[1].GetBondBetweenAtoms(3,4).GetIsAromatic()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('NC(=[NH2+])c1ccc(cc1)C(=O)[O-]',\n",
" flags = Chem.ResonanceFlags.ALLOW_INCOMPLETE_OCTETS\n",
" | Chem.ResonanceFlags.UNCONSTRAINED_CATIONS\n",
" | Chem.ResonanceFlags.UNCONSTRAINED_ANIONS)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAALQCAYAAABolRTFAADtbElEQVR4nOzdeXxU1f0+8M+QhSSs\nlYCVXSRBMBRUKpDAl822TiyKirgLgiS17a8JIgIKCorIbqKCJloWAQWsooKZ1FpEBJRNqIQtibIp\ni4Q9CWSb5/fHEJhkJiQkc8+5d3jerxevyj0D95l0Hu45M3futQGAEBERERERKVBLdwAiIiIiIrp6\ncAFCRERERETKcAFCRERERETKcAFCRERERETKcAFCRERERETKcAFCRERERETKcAFCRERERETKcAFC\nRERERETKcAFCRERERETKcAFCRERERETKcAFCRERERETKcAFCRERERETKcAFCRERERETKcAFCRERE\nRETKGLMAiYkRsdku/SLypWyRGJuIw22TI14k3nFhLL7swy+OiUiy+0szRiRbVebS0Bd3Hl/5HyGq\nDvaDqGKW7Icbzq/ISAr74fsFiM0mMm6cCOD6lZbGkpDvRYtMutI5ikMkMcrtpRklMt1R+R+rOYeI\nLUJkHNx2LpxkkXHYD6KKGdEPh0hMsi9DesH5FamgqB+BNc1ZNoBDJClJxG6/tM1ud21LThZJSPDp\n7syooKBAjh8/rmXfjRo1ktq1a2vZt3JRIgs6uFbeKfbKHy4iInYRuD02ooMhyTw5PhFJyhJxz2lP\nEUmKEUnOFkloqyiIfuyHIuyHJbEfilipH6U4v2I/VFHUD98uQDIzRSIjPbdHRrrG/FxOTo48/vjj\n4nAoedvQg91ul/fee0/Cw8O17F+1tgkiYhNxoNxAqogtteymuAHlHuMQidgpAhX/ZmdmiER6mURF\nRon4fy0uYj/UYj+shf1Qy1f9yE4WiUi8NGRLFIlOElnn6+5wfsV+KKSiH75dgJQWwV5uyXQVlENE\nZOzYsXLs2DE5ePCg1Kql9vv9TqdTBgwYIM8995ykpqZW/gf8REqa60yNNPeNcSJIufRbR7zIJ1L2\n97FS9jE+F28TSRWRuDSRAVEimdki9nKTrMwMAwOYD/uhHvthHeyHer7oR9uECwt1h0hMpgELj1Kc\nX7EfihneD/iaCJCWdun3aWmubX5u48aNCAgIwLp167RlWLduHQICArBp0yZtGZTIAqLjLv02Lc71\nEotL8xwrHY+78JJMir703+pc6ID7ftPiAImr8E/4G/ZDIfbDctgPhYzqRxoQnWREYDecX2nLwH54\n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\nmS1iL/fDzcyo9l9vReHh4bJ8+XI5fvy4lv03atRIateurWXfuqSkuT6JTnPfGCeClEu/dcSLfCJl\nfx8rZR9zZewi6+ye/52wTiThwg4yR116Z8rBfoiwHzro6Uc1lS407OXecrsKFh8iavvR8MJ3aNpG\nRklG+X+bsh3iELvrDfe4NIHbW6COeJt8IiJtE9a5JheOeInJHGWpiZU70/aD8ysP7Id6Rvej+guQ\nFIi47yA2QiQSlz4mdMRfOCHMmj/46qpdu7Y0bdpUd4yrh10k7ROR2FQvq3AvkmNEdo4r+1Gh4ewD\n2I8L2A/FrNCPUna7SGysayFSughxOEQSE10nFV8FlPfDPkCiYgdL8p3rLrxfki3Jg2Nl2aAssd+p\nLoY2Zu0H51desR+KGdwPH30J3S6CLJFJbldp0PIWGl2N7CkicVV4nCPedYZUauyll2lMskGByrzj\nwX6QPqbrx+UAIpMmufUk9qpZfOhhl5SsQbIsovQqPxGybNAVnCpiT7Hsu7ulzN8PHj/0YT+M7Afv\nA0JERERERMr48D4gREREREREl8cFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMF\nCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBER\nERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERER\nKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMF\nCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKcMFCBERERERKWPMAiQmRsRmu/SLjJWd\nLDE2m9gu/IpJzr60Pd5R5qGOeJuU22Q92SIxNhH3p+GIF9fzyhaJiS/78ItjIpLs/tKMEclWlbk0\n9MWdx1f+R8g32A/2g6iUJfvhhvMrMpLCfvh+AWKziYwbJwK4fqWlsSSGckh8xDIZlAUBIECWDFoW\nUfVJlCP+0oTMSqJFJl3pHMUhkhjl9tKMEpmuZLLpELFFiIyD286Fkywl2I8qYz/oamGpfrjh/IpU\nUNSPwGoH9BrAIZKUJGK3X9pmt7u2JSeLJCT4dHdmVFBQIMePHzd8Pw0bNpSwsDDJTp4kGUkLJKVt\n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\nbpyWfevA44e1sB9qqTh+VH8BEm8TSRWRuDSRAVEimdki9nIlycyo9l9vJW0joySj/PPPdohD7K43\nLeLSBG7LSEe8TT4RkbYJ61z/BzniJSZz1MWJValHH330is5Vb9SokdQu8zmz/0tJc30Snea+MU4E\nKZd+64gX+UTK/j5WLj2mbcKFojhEYjJ9dOBgPy5iP/TxRT8MwX54CA8Pl+XLl8vx48e17J/9uIDH\nD1NiP9Qz+vhR/QVICkTcdxAbIRKJSx8TOuIvnBDm/x8Pin2ARMUOluQ71134NDRbkgfHyrJBWWKv\nwXeVwsLCJCwszFcp/ZNdJO0TkdhUL6twL5JjRHaOK/tRoSHYj0vYD33YD0upXbu2NG3aVHeMqwf7\nYSnsh2IG98NHX0K3iyBLZJLbVRoMfwvNTOySkjVIlkWUXuUnQpYNyvJ4x7biP55S9ceSB3uKSFwV\nHueIF0lcL5Iae+llWuZLg3YffmxeNiH7wX5o47N+GOZq7wfpxOMHUcWMPH7wPiBERERERKSMD+8D\nQkREREREdHlcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBAR\nERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERER\nkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJc\ngBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTJcgBAR\nERERkTJcgBARERERkTJcgBARERERkTJcgBARERERkTLGLEBiYkRstku/iHwpWyTGJuJw2+SIF4l3\nXBiLL/vwi2Mikuz+0owRyVaVuTT0xZ3HV/5HiKqD/SCqmCX74YbzKzKSwn74fgFis4mMGycCuH6l\npbEk5HvRIpOudI7iEEmMcntpRolMd1T+x2rOIWKLEBkHt50LJ1lkHPaDqGJG9MMhEpPsy5BecH5F\nKijqR2BNc5YN4BBJShKx2y9ts9td25KTRRISfLo7MyooKJDjx49r2XejRo2kdu3aWvatXJTIgg6u\nlXeKvfKHi4iIXQRuj43oYEgyT45PRJKyRNxz2lNEkmJEkrNFEtoqCqIf+6EI+2FJ7IciVupHKc6v\n2A9VFPXDtwuQzEyRyEjP7ZGRrjE/l5OTI48//rg4HEreNvRgt9vlvffek/DwcC37V61tgojYRBwo\nN5AqYkstuyluQLnHOEQidopAxb/ZmRkikV4mUZFRIv5fi4vYD7XYD2thP9TyVT+yk0UiEi8N2RJF\nopNE1vm6O5xfsR8KqeiHbxcgpUWwl1syXQXlEBEZO3asHDt2TA4ePCi1aqn9fr/T6ZQBAwbIc889\nJ6mpqZX/AT+RkuY6UyPNfWOcCFIu/dYRL/KJlP19rJR9jM/F20RSRSQuTWRAlEhmtoi93CQrM8PA\nAObDfqjHflgH+6GeL/rRNuHCQt0hEpNpwMKjFOdX7IdihvcDviYCpKVd+n1ammubn9u0aRMCAgKw\nbt06bRnWrVuHgIAAbNq0SVsGJbKA6LhLv02Lc73E4tI8x0rH4y68JJOiL/23Ohc64L7ftDhA4ir8\nE/6G/VCI/bAc9kMho/qRBkQnGRHYDedX2jKwH55jpePV7Yfvl5GAyKRJl74KHxvr2laqoEBk2zaf\n71YnAJKQkCADBw6U6OhobTmio6Plvvvuk8TERAHKf27mv+wpInFVeJwjXiRxvUhq7KWXp+FfGhQR\n18mRWSKT3K5cYvhbzObBfujFfpgb+2G8bdtcUw9vfNYPu4GffpTi/EpbDvbj8qrVj5oulq7Y/PlA\n48bAyZPKd22UZcuWoU6dOjh48KDuKDhw4ADCwsLw4Ycf6o5CBID9ILoc9sNYJ04A4eHAggW6kyjA\n+ZWh2A/fsgGKl3JOp0i3biJdu4q88YbSXRshPz9fbrzxRhk6dKhMmDChzFhhYaHk5OQYuv/w8HAJ\nDg4us+3FF1+UefPmye7duyUsLMzQ/at24IDIyJEi8+eL1KmjO42P5OWJDBkiMmuWSIsWutP4FPuh\nFvthLeyH8f7+d5GNG0W++05E8VcH1OP8yqfYD4MZurw5fhzIzPTcvm4dEBgI/PCDobtX4eWXX0ar\nVq2Qn5/vMbZmzRqIiKG/1qxZ47Hf/Px8tGrVCpMmTVLxI1Dq3nuBO+/UncIAsbHAfffpTuFz7Ida\n7Ie1sB/G+t//XFON9es9xzIzXVMUy+L8iv2oId39MPYTkIQE19Jq/XrPm+U88IBITo7If/9r2O6N\nduDAAWnfvr28++678tBDD3mM61qhi4i8//77Eh8fL3v27JGmTZsamkGV//xHpH9/kYwMkbb+dmuA\n7GyRqCiR9HSR3r11p/EJ9kMt9sNa2A/j9esn0rixyJIlZbcDIt27uz4sSErSEq3mOL9iP2pIez8M\nXd6cOAE0agT885+eYwcOAGFhwPLlhkYw0mOPPYaePXvC6XTqjuLB6XSiZ8+eePzxx3VH8YmiIuCm\nm4Cnn9adxEAjRrieZFGR7iQ+wX6ow35YD/thrI8/dk0xvH114N13XVOTEyfU5/IZzq+0YT98w/gv\noScnA02aAKdOeY6NGwe0aQOcO2d4DF/75ptvEBAQgO+//153lApt2bIFgYGB+O6773RHqbE5c4Df\n/hY4fVp3EgOdPu16km+9pTtJjbEfarEf1sJ+GOvcOdfUYvx4z7FTp1xTktdfV5/L5zi/0ob9qDnj\nFyClb809+6znWF4e0LIl8OqrhsfwJafTia5du2Lo0KG6o1TqiSeeQLdu3Uz5LkJV5eQA11wDpKTo\nTqLA22+7nmxOju4k1cZ+qMV+WAv7YbzJk11TCy9fHcCoUUBUlJ98kMb5lVbsR82ouQxvWhoQHAzs\n2eM59t57QN26wKFDSqL4wnvvvYcGDRrg6NGjuqNU6siRI2jQoAEWLlyoO0q1JSQAXboAJSW6kyhQ\nUgLceiuQmKg7SbWxH2qxH9bCfhjrl19cUwpvkffscU1F/vMf9bkMw/mVNuxHzai7D4jdDtx9t+d2\npxPo2hV44gllUWri7NmzaNasGaZOnao7SpVNmTIFzZo1Q25uru4oV2z7dtdVGtau1Z1EobVrgaAg\n15O3GPZDLfbDWtgP4w0ZAsTEuKYW5d11l+uCan6H8ytt2I/qU7cA2bXLddBIT/cc+/ZbICAA2LBB\nWZzqGjduHCIjI1FQUKA7SpUVFBQgIiIC472d8Gdy/foBgwbpTqHB/fcDt9+uO8UVYz/UYj+shf0w\n1oYNrqmEt9PyHQ7XFGT3bvW5DMf5lTbsR/WpvRN6QgLQvj1QWOgxVPzww1hl8nP+9u7di5CQEHzy\nySe6o1yx5cuXIzQ0FHv37tUdpcpWrHBdpeHAAd1JNCi9isnKlbqTVBn7oRb7wX6oYoV+OJ1ODB36\nFR55pNhjrLDQNfWw8Jl7leP8Shv2o3rULkBK7/n+xhseQ/v27UNoaCiWLl2qNNKVuP/++/GnP/1J\nd4xq+9Of/oRBFnm7tLCwBB06AGPG6E6i0ejRQIcOKLHItyXZD3XYD7Afipm9H0uWLEFoaCj27dvn\nMfb6666px8mT6nMpw/mVVuzHlVO7AAGA2bOB3/wGOHbMY2jixImmPZdu9erVCAoKws6dO3VHqbYd\nO3YgKCgIX3/9te4olUpKSkKfPi/gzBndSTQ6cwbj+/RBcnKy7iSVYj/UYj/Afihm5n6UfnfgpZde\n8hg7dsw15ZgzR0Mw1Ti/0ob9uHLqFyCFhSjs1g1fvPyyx1B+fj5at25tunPpiouL0blzZ/z973/X\nHaXG/va3v+Hmm29GcbHnx3BmcejQIdSrVw+LFi3SHUW7hQsXol69ejh8+LDuKBViP9RiPy5hP9Qy\naz/GjRuH1q1b45yXe168/PIX6Nat0NuZSf6H8yut2I8ro34BAiAtLQ1BQUHYtWuXx9jSpUtNdy7d\nO++8g/DwcJyw9G1TXU6cOIFGjRrh3Xff1R2lQk8++aRp74CqmtPpRI8ePTB8+HDdUSrEfqjFflzC\nfqhlxn6Ufndg2bJlHmM7d+5EUFAQHA6HhmR6cH6lD/txZbQsQADg7rvvRt++fb2O9erVyzTn0p06\ndQpNmjTBG17Oq7Sq119/HU2aNMEpb3dP1WzTpk0IDAzEli1bdEcxjdI7rm7atEl3FA/sh1rshyf2\nQy2z9eP+++9Hr169vI717dsXAwYMUBvIBDi/0of9qDptC5Aff/wRtWvXxvLlyz3Gtm7dioCAAKxe\nvVp9sHJGjRqFjh07mu4jtZooLi5Gx44d8ay3u6dq5HQ6ER0djSFDhuiOYjqDBw9GTEyM6d71Zj/U\nYT8qxn6oY6Z+fPXVVwgICMDWrVs9xj7++GOEhITgxx9/VB9MM86v9GE/qk7bAgQARo8ejTZt2ng9\nL2348OHo3Lmz1hfmoUOHEBISgrS0NG0ZjPL5558jJCQEh0x0h9QlS5agfv36OHLkiO4opnPkyBHU\nr1/fVFcxYT/UYj8qxn6oZYZ+FBcXo1OnToiLi/MYO3fuHNq0aYMxV/Fl4ji/0of9qBqtC5AzZ87g\nuuuuw5QpUzzGjh49ioYNGyI1NVVDsku+83bHFj9hpueWm5uL5s2b49VXX9UdxbQmT56MFi1aIC8v\nT3eUi8z0GvI1Mz039qNy7Idaup9bSkoKGjZsiF9//dVj7NVXX0XTpk1x9uxZDcnMgfMrvXQ/Nyv0\nQ+sCBADmzp2LevXqeV0pzpgxA02aNMFJv754NwGuSwRGRERY6g6oqpXecdXbpfTIv7EflWM/rh4n\nT55E48aNMXPmTI+xX375BXXr1sW8efPUBzMZzq+uTlbph/YFSElJCW677TY88cQTHmOFhYVo164d\nRo4cqSZMVhKiRSAXfkUnZanZr26an3fpTZK8na9KZX388ccIDQ3F/v371e+c/WA/TI790EDD8376\n6afRrl07FHq5duiQIUNw2223me77QDpwfmUC7EeFaolmtWrVkqSkJHnvvfdk48aNZcaCgoJkxowZ\n0qZNGwVJHBIfsUwGZUEACJAlg5ZFSLzD/SHxEpOcrSCLSlV43gZ77rnnpGfPnhISEiJvvPGGuh1b\nzOuvvy5hYWHSs2dPee655xTvnf1gP8yN/dBBTz9uuOEGmTlzpgQFBZXZvnHjRlm4cKEkJyeLzWYz\nNoQFcH6lG/txOTYA0B1CROSRRx6RvXv3yrp168Rms8mmTZvknXfeMXy//fv3l/79+0t2cowMlgWy\nLqFtxQ92xEtM5qjLP8ZiqvS83cycOVP27Nnjs/3n5ubKRx99JBs2bJCffvpJHnroIdmxY4e0bes/\nP2NfyMrKkqioKFmyZIm0bt1aunXrJvfdd5/UrVvX0P2yH+yHFbAfeujuh4jI8OHD5fe//70AkOjo\naLnhhhtk0aJFPt2H1XF+pQf7cXnaPwEpNW3aNPnhhx/k/fffl61bt0qPHj0kNzdXaYaoSO8vkuzk\nGLHZbGKLTZX1iRFis9n8aqVe0fNWoW7durJ27Vrp3Lmz3HvvvdK7d28ZM2aMtjxmNWbMGOndu7fc\nc889cvPNN8vatWsNn1yVx36ox35UDfuhj85+5ObmSo8ePWTbtm2yePFi2b59u0ydOlVbHrPi/Eof\n9uMy9Jz55V1ycjIcDge6deum/s62aXGe5+ZlpSEtq5LHWN1lnnda3IXzFuN8f5m82bNnY+XKlR7b\nd+zYgaCgIHz11Vc+36dVffHFFwgMDMSOHTs8xlauXInZs2cbH4L9uIT9MBX2QyNN/XD35JNPonv3\n7khLS0NycrKh+7Iyzq80YD8uy1QLEABYtGgRGjRogKNHjyrecxriJBqXXitZSIou94UhfyxIVZ63\nAcaNG4frr7/e6zXK//rXv6JTp05+dXOi6iq9lvff/vY3j7G8vDy0aNEC48ePV5CE/XBhP8yE/dBN\nTz/cHT16FA0aNMDixYuV7dOqOL9Sjf24HFMtQHJzc9GsWTNMnz5dTwBepUHZ887Ly0PLli3xyiuv\neIwdP34cjRo10n6NcjNISUlBo0aNcOLECY+xSZMmoWXLlsjPz1cThv1gP0yG/TABEzzvadOmoVmz\nZsjNzVW+b6vg/EoTEzxvs/bDVAuQ8ePHo127dqa61r3um8kYSfdzW7hwIerWrYtffvnFYywpKQlN\nmjTBqVOnNCQzh9JreXv72LT0Wt6LFi3SkOwS3a8hI+l+buzH5bEfepnpuRUUFCAyMhIvvPCC7iim\nxfmVWmZ6bmbth2kWIHv37kVISAhWrFihO8pFhw4dQkhICNLSjD1HT4fPP/8cISEhXm9QpIrT6USP\nHj0wZMgQj7GioiJERUXhmWee0ZDMHEaOHImOHTuiqKjIY2zw4MHo0aOH1mt5sx/GYj8uj/3Qxwz9\nKO+zzz5DaGgo9u7dqzuK6XB+pRb7UTWmWYAMGjQIdrtddwwPL774Im644QacP39edxSfOX/+PNq0\naYMXX3xRdxRs3rwZgYGB2LBhg8fYl19+ieDgYOzZs0dDMr327NmD4OBgfPnllx5jGzZsQGBgILZs\n2aIhWVnsh7HYD+/YD33M1I/y7rjjDjzwwAO6Y5gO51fqsB9VZ4oFyOrVqxEUFIRdu3bpjuIhPz8f\nrVq1wtSpU3VH8ZkpU6agVatW6s6NrsTgwYPRvXt3r+9W9u/fH3fddZeGVHpV9LydTie6d+/u9V1x\nHdgP47EfntgPfczWD3c7d+5EUFAQVq9erTuKaXB+pRb7UXXaFyDFxcXo3LkzEhISdEep0OLFi1Gv\nXj1TfZxWXYcOHUK9evXw/vvv645y0ZEjR1C/fn188MEHHmPZ2dmoXbs20tPTNSTTIz09HbVr10Z2\ndrbH2Pvvv4/69evjyJEjGpJ5x34Yi/0oi/3Qx4z9KO8f//gHOnfuzKvEgfMr1diPK6N9AZKSkoLw\n8HCvVzExi9JzsYcOHao7So098cQT6Nmzp9Zzo72ZPHkymjdv7vUqDS+/vBj9+v0ME/TFeMXFONev\nH9JfftljKDc3F82bN8fkyZM1BKsY+2E89uMC9kMrs/bD3YkTJxAeHs6rxIHzK9XYjyujdwFy5gzG\n9+ljupujeLNlyxYEBgZi48aNuqNUm5nOjS6voKAAERERmDhxosfYmTPAddcBb76pIZhqb7zherJn\nzngMTZgwAREREaa6ikkp9sNY7McF7Ic2Zu5HeUlJSejTZ5C3l8nVg/MrpdiPK6d3ATJ6NNChA0q8\nXMXEjC53LrbZme3caG8++ugjhIaGYv/+/R5j77wD/OY3QE6OhmCqHDvmepLvvusxtH//foSGhuLj\njz/WEKxq2A9jsR/shy5W6Ie7wsISdOgAjBmjO4lGnF8pw35Uj74FyO7dQHAwsGqVtghXqvRcbDOf\n31eRxYsXm+7c6PKcTieGDp2D+PizHmMlJcDvfw/8v/+nIZgqf/+760mWlHgMFcbH4wuTf0TNfhiL\n/WA/dLFCP8pbtco1xdi9W3cSDTi/Uor9qB59C5A77wTuvVfb7qvrlVdeqfBcbLMqvQOq2c6N9mbH\nDiAoCPjmG8+xdeuAwEDghx/U5zLcDz+4ntz69Z5ja9a4fig7dqjPdYXYD2OxH+yHalbqR3n33AP8\n+c+6U2jA+ZUy7Ef16VmApKUBISHATz9p2X1NFBQUoG3btqa8xnNFXnzxRdOeG+3NU08Bt9zi9Y1O\nPPgg0K+f+kyG69vX9eTKKylx/TD++lf1maqB/TAe++GG/TCc1frh7scfXVMNP7zXXcU4v1KK/ag+\n9QuQwkLgxhuB555Tvmtf+de//oXQ0FDs27dPd5RK7d27F6Ghofjoo490R6my48eBRo2AefM8xw4e\nBOrUAT79VHks43zyietJHTzoOTZ3ruuHcfy4+lzVxH4Yi/1ww34Yyor9KG/sWNeUo7BQdxIFOL9S\niv2oGfULkFmzgKZNgbOe5zFbSe/evfGgt3fkTOaBBx7AH/7wB90xrlhSEnDttcDp055jL74I3HAD\n4Bc3Tz1/HmjTxvWkyjt1yvVDsMBVTMpjP4zFfoD9UMCq/XB39qxryvHaa7qTKMD5lVLsR82oXYD8\n+ivQsCGwYIHS3Rph27ZtCAgIwNdff607SoVWr16NwMBAZGRk6I5yxYqKgKgo71dpyM8HWrUC/OLm\nqVOnup6Mt7umjh4NdOzo+mFYDPthLPYD7IfBrNyP8ubPd009jh3TncRAnF8pxX7UnNoFyF/+AnTt\nCljwMmvexMXF4eabb0aJt5OxNSu9A2p8fLzuKNX25ZeuqzRkZnqOvf8+UK8eYOmbpx465HoSXu5w\njT17XE/+yy/V5/IR9sNY7Af7YRR/6Ic7p9M19XjqKd1JDMT5lTLsh2/YAEBU+N//RLp0EVm7VqRr\nVyW7NNqxY8ckMjJSZsyYIcOGDfMYLywslJycHEMzhIeHS3BwsMf2d999V0aNGiWZmZnSuHFjQzMY\n6a67RAICRJYvL7sdEOneXaRbN5GkJC3Rai4hQWTjRpH160VstrJjAwa4nuSnn2qJ5gvsh/HYD/aj\nJvy9H+6++06kZ0+RzZtFOnXSncbHOL8yBPthMCXLHKcT6NEDeOwxJbtTaebMmWjSpAlOnTrlMbZm\nzRqIiKG/1qxZ47HfU6dOoUmTJpg1a5aKH4GhsrOB2rWBf//bcywz01LfPfV0/Lj3t6/T011POjtb\nfSYfYz+MxX5YG/uh1qOPAn366E7hY5xfsR8+orofaj4BycsTGTJEZNYskRYtDN+dSkVFRdKxY0e5\n6667ZNq0aWXGdK3QR40aJStWrJDt27dLUFCQoftXYdQokbQ015s8gYG60xisqEikc2eRO+8UKfd6\nsiL2w3jsh3WxH2odOCAycqTI/PkideroTuMjnF8Zhv0wmLq1jv9asWIFgoODsWfPHt1RsGfPHgQH\nB2PlypW6o/jMiRNAeLhffLeucvPnA40bAydP6k7iM+yHsdgPa2M/iCrGfvgvHy5AsoBoAaT0V5zv\n/moLuOOOO3DXXXfpjoH+/fvDbrfrjuFzW7e6XVb0wkvN/d45aXFAXNqFsXIvvYtjAJKi3V6i0UCW\n8dE9RbuHKFfB8+ddT9bPsB/GYj+sjf1QyJL94PyK/VBEYT9q+eZzFIeILUJknNthI01EbPG++est\nYNasWeJwOCQ9PV1bhvT0dElPT5dZs2Zpy2CUzp1Fatd22xAtMulKX14OkcQot5dolMh0R9nxmOSa\nZ70sm01k3Di3EGllv2Bbu7bryfoZ9sNY7Ie1sR+KGdEPw3B+xX4opqgfvjlj2PGJSFKWiN1tmz1F\nJClGJDlbJKGtT3ZjZu3bt5ennnpKRowYIR06dJBAxSdjFxcXy4gRI+Svf/2r3HjjjUr3rUWUyIIO\nIvEOkRR75Q8XERG7CNweG9HBkGQVczhclySyu4Ww213bkpNdV/3xU+yHYuyHpbAfilmpH5xfsR+q\nKeqHb/5fzMwQifRSgsgokUyf7MESxo8fL1lZWdKqVSst+7fb7TJu3Dgt+9ahbYKI2EQc5S+jkCpi\nSy27KW5Aucc4RCJ2iiBBJDtZJCLx0pAtUSQ6SWSdr+c7mZkikZGe2yMjXWN+jv1Qi/2wFvZDLV/1\nw3CcX4kI+6Gain5UfwESbxNJFZG4NJEBUSKZ2SL2ciXJzKj2X29F4eHhsnz5cjl+/LiW/Tdq1Ehq\nlzkPw/+lpLk+iU5z3xgngpRLv3XEi3wiZX8fK5ce0zbhQlEcIjGZBkysSpVOpOzl3lK4CiZXIuyH\nDuyHdbAf6vmiH4bg/MoD+6Ge0f2o/gIkBSLuO4iNEInEpY8JHfEXTgjz/48H3dWuXVuaNm2qO8bV\nwy6S9olIbKqXVbgXyTEiO8eV/ahQGbtdJDbWNdEqnWQ5HCKJia6TJq8C7Idi7IelsB+KmbUfnF95\nxX4oZnA/fPQldLsIskQm2VxfGLTZFLxFQORiTxGJq8LjHPEiietFUmMvvUzLfKnWbuC7u6UAkUmT\n3HoSe9VMrkgP9oOoYj7rh2E4vyJ9jOyHmhsREhERERERic8+ASEiIiIiIqocFyBERERERKQMFyBE\nRERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERE\nRKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQM\nFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBE\nRERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERERKQMFyBERERE\nRKQMFyBERERERKSMDxcg2SIxNhFb6a943/3VdHnZyRJjs4ntwq+Y5OxL2+MdZR7qiLdJuU3Wc+Gl\n5v40HPHiel7ZIjHlXnoXx0QkOcbtJRojkq0qs7sY9xA2HQmuLuyHBfrB44c27IcF+uGGxw+12A/D\n+uGjBYhDxBYhMg4iuPArTXgQUcIh8RHLZFAWBIAAWTJoWYT1S1CZaJFJV/rycogkRrm9RKNEpqv+\nOdlsIuPGuYVI40HEUOxHlWnrB48f+rAfVVZZPxwiMcm+DOkFjx+KsR9VVo1+BNY0p+sv/kQkKUvE\n7rbNniKSFCOSnC2S0NYnu7GCgoICOX78uOH7CQgIkGuvvVaykydJRtICSbn4I24rCevg+k8tb88o\nEiWyoINr5Z1ir/zhIiJiF4HbYyM6GJKsYg6HSFKSiN0thN3u2pacLJKQoDiQeuyHIlbqB48fF7Ef\nilipH6V4/GA/VFHUD98sQDIzRCK9HCQio0QyfbIHS8jJyZHHH39cHA7jl8fXXXedHDp0SEREorz9\n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\ngnyRiV5XMUkRm19CcxL2Qyfn98ML5w/2QzHL+mEbzh/shz529kP9fUCIiIiIiKjesuc+IERERERE\nRD5wAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpw\nAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJE\nRERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERE\nRMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpwAUJERERERMpw\nAUJERERERMpwAUJERERERMpwAUJERERERMrYswBJShIJCrr6RfYqyJKkoCAJuvKVlFVw9fE0d4Vv\ndacFSaWH/E+BSFKQiPfTcKeJ8bwKRJLSKn77T2MikuW9ayaJFKjKXB76p42nXfuvkDXYD/aDqsZ+\n+EE/vPD4Si32w7Z+WL8ACQoSycgQAYyvnByWxFZuSYtdJP3zIQAEyJf+i2KrXwJ32tVC+ZNEkYk1\nPUZxiwyP99o140XeUvLLwi0SFCuSAa+NCw+ylGA/qo39qIfYj2q7Vj/cIklZVob0gcdXirEf1VaL\nfoTUNWfFAG6RzEwRl+vqYy6X8VhWlkh6uqWbc6KSkhIpLCy0fTvR0dESFRUlBVkTZXvmbMmOKR+J\nkfR1MP6vH+731RYvMruTsfLOdl3720VExCUCr++N7WRLMjP3pyKZ+SLeOV3ZIplJIlkFIukxVf3N\ngMN+KMJ++CX2QxF/6kc5Hl+xH6oo6oe1C5C8PJG4OPPjcXHGWIA7ceKEPPPMM+J22/+yYXZ2tqSm\npoqISHzcz0zQM1IkaEbFh1L7iBRkJUns8PXl3yRBw0USM/NlnR9N9jHpIhIk4kalgRni8zlX4BaJ\n3SkCFb+z87aL+PpvFBcvEvi1+An7oRb74V/YD7Ws6kdBlkjs8KtDxs9CZJ3V3eHxFfuhkIp+WLsA\nKS+Cq9KSqR6UQ0TkT3/6kxw/flwOHjwo111n7+f7o6OjRUQkJi5etucViLi8duwCt7jFZbygmJoj\n8FrCutOC5FMRiUlfZxxcuNMkKW+0XxXDW3aOcaZGjveDqSLIvvpHd5rIp1LxzylS8XsslxYkMkNE\n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\nJG+7SJyPEsTFi+RZsgW/EO/rZ1BuRooEzaj4UGof3996xx13yI8//ljj7btcLhk3blyN/56/ikkX\nkSARd+VPMc2Qa/+s3SKxO0WQLlKQJRI7/OpQ0HCRxEyRdVYf7+TlGSfrVxYXZ4wFOPZDLfbDv7Af\nalnVD9vx+EpE2A/VVPSj9guQtCCRGSKSmiPSJ14kr0DEVWkHydte63/e38TExcv2yj+DAre4xWW8\ncJGaI/BaSrrTguTTK/+bMqPi+JYtW2q8QhcRadKkiYRXOA8j8GXnGO9E53g/mCqC7Kt/dKeJfCoV\n/5wiV78nJv1KUdwiSXk2HFiVKz+QclV6SaEeHFyxH3qwH/6B/dDDin7YgsdXFbAfetjdj9ovQLIh\n4r2BlFiROFx9m9CdduWEsMB/e1BERFx9JD5loGQ9sO7KO6IFkjUwRRb1zxfXAz/z17Jh+g/VvHlz\nO5MGFpdIzqciKTOqfsXDW1aSyM6Mim8VKuNyiaSkGAda5QdZbrfI8OHGSZOBjP3Qg/3wD+yHHk7t\nB4+vKmI/9LC5HxZ9CN0lgnyRiV5XabD9JQKncUl2fn9ZFFt+lYZYWdQ/X9bVg/MzdXNli6RW4/vc\naSLD14vMSLm6m1b4UK3Lxld3ywEiEyd69SQl8A+uRIT90If98Afshy6W9cM2PL5iP/Sxsx+8DwgR\nERERESlj4X1AiIiIiIiIfh4XIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIERE\nREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIERERERE\npAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwX\nIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIERE\nREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpAwXIEREREREpIw9C5CkJJGgoKtfRFYqEEkK\nEnF7PeROE0lzXxlLq/jtP42JSJb3rpkkUqAqc3nonzaedu2/QlQbftkPL5w/yE5+2Q/OH6SIwn5Y\nvwAJChLJyBABjK+cHE4iZL1EkYk1/R3sFhke77Vrxou85b72X6s7t0hQrEgGvDYunETIPn7VDy+c\n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\neG5T58uJAAAAAElFTkSuQmCC\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x720 at 0x5337BB0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('[CH2+]c1ccccc1')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\nogAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347550>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x3B72C50>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('C=CC=C')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347510>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x53474F0>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('C=CC=C',\n",
" flags = Chem.ResonanceFlags.ALLOW_INCOMPLETE_OCTETS\n",
" | Chem.ResonanceFlags.UNCONSTRAINED_CATIONS\n",
" | Chem.ResonanceFlags.UNCONSTRAINED_ANIONS)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAAQoUlEQVR4nO3dbVCU5ffA8QNCYJoI\nKKX4/ATqz6dAU6TJaVDT0LQJR8dQm6Z1ehj8OzWzOI5DL3qxvdutN61NM4pN2qqZqNgMNWaNmFMh\namn4hGBYLqWpKCTI+b/oB79NQJbd5d6b3e9n5rwQ9r72WtfjXmfvc193hKqqAAAAIJAigj0BwKwi\ngz0BAAAAAOGDAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQA\nAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiG\nAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAA\nABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAAAAABiGAgQAAACAYShAAkBV5YsvvpCbN28GeyoA\nAACAqVGA+OHmzZvy3nvvSWpqqixdulSOHTsW7CkBAAAApkYB4oPy8nJZtWqVJCUlidPplDfffFOu\nXr0qc+fODfbUAAAAAFOjAPFSY2OjFBYWSnp6uqSnp0tDQ4Ps379fTp06JRaLRfr16xfsKQIAAACm\nRwHSiZqaGsnPz5dhw4bJ+vXrJSsrSyoqKsTlcklWVpZERv77r/DAgQOSm5srdXV1QZoxYD5ffvml\nLFu2TGbMmEF+APchPwCEGwqQDpSWlsqyZctk1KhRUlxcLO+++67U1NSIzWaT0aNHd3jclClTpLKy\nUiZOnCjfffedgTMGzKWxsVF27NghmZmZsnDhQomKipKNGzeSH4D8kx8ul0uefPJJefbZZ8kPAGGF\nAsRDQ0ODbN68WdLT0+Wpp54SEZGvvvpKTp48KatWrZLY2NhOxxgyZIh8/fXX8tJLL8nTTz8tDoej\nu6cNmMqlS5dk3bp1kpSUJPn5+ZKTkyO1tbXyySefyHPPPUd+IKxVVVW15ofVapUXXnhB3G43+QEg\nvCj08uXLarVa9dFHH9WBAwdqQUGB1tTU+DRWfX29btmyRevq6nTfvn2akJCgS5Ys0WvXrgV41oB5\nNDc3a1FRkWZlZWmvXr00KytLi4qK9N69ex0eQ34gXDQ3N2tJSYlmZ2drr169NDs7W0tKSsiP0CcE\nQbQfYX0GpKXvdvTo0fLNN9/I+++/L5cvX5a3335bBg8e3KWxqqurZcOGDTJ06FApKCiQs2fPSnZ2\ntpSXl4vb7ZZp06aF/Da9DQ0Nsnfv3mBPAwaqq6sTh8MhqampsmLFCpkwYYL8/PPPUlJSIosWLWpz\njZSncMsPERE5uFYiIiL+F7Mdcr7ld+cdMjtirRy8/5j7f37eIbM9xljb5gCYxe3bt8XhcMiECRNk\nyZIlMmrUKDl9+rTs27ev3WsIPYVlfoiQI0CYCLsCpL6+XjZv3ixpaWmyaNEiiY+Pl9LSUiktLZWc\nnByJiYnxeqx79+7Jzp07Ze7cuTJmzBi5cOGCbN++XSorK2XatGkiIjJ06FA5fPiwLF++XObMmROS\np9Q9i69XXnlF3G53sKeEbnbmzBlZu3atJCcni8PhkNdee01qamrE4XBISkqK1+OEQ360OO+YLREL\nRYo9vgEq/s//yVjPBVanDsrasS5Zdu6/Y5yzy08LZ4vD+wFggMrKSlm3bp0kJyfLBx98IOvXr5cr\nV66Iw+GQcePGeT1OOOWHCDkChBUNE1VVVWq1WjUpKUmHDh2qNptNf//9d5/G+vPPP9Vms+no0aM1\nISFBrVarnj9/vtPj9u7dqwkJCbp06VK9fv26T89tFk1NTepyuTQrK0sjIyNbW26ampqCPTV0E8/3\n3Ns2kq4Ipfxoq1gtkqH2c/f//JzaM0Qtxap6zq4ZYtHiNg/x+HmxRcXy70cUW/57/L+eq51x0K3u\nb0MkP7rKyBwxTNDbXAjCrCEa4jz7brOystTlcunff//t01gnTpzQ3NxcjY2N1UmTJqnT6dRbt251\naYyqqiqdNWuWjh07Vo8fP+7TPILJs/jq06ePWiyWHvk64L2W93zMmDHat29fzcvL04qKim55rp6e\nHx0qtqhk2LXN2sqTN4urtgO3s2ijADHSrVu31G6367hx4zQ+Pl6tVquePXu2W54rZPND1eAcMUzQ\nF3kEYdYQDUG3b99Wp9OpU6dO1YcfflgtFouWlZX5NFZjY6O6XC6dPXu2RkVFaU5Ojn777bd+za+x\nsVGtVqvGxsaq3W73ayyjnDp1Si0Wi/bt21dHjhypdrtd//rrr2BPC93o5MmTre/5+PHj1el06o0b\nN3we76OPPtLq6upOH9cT86NT7Xwr28Y5u2aIqLQb7S2u/vlmOKNlZVVsaffYjCCtvELd6dOn1WKx\n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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347710>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('NC=CC=CC=O')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\nJZy3DTAAAAAASUVORK5CYII=\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x53476F0>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAAOO0lEQVR4nO3dfWxUZdrH8WukLX0D\nUordFLFssIa33bqGNGpZo6ARrNSQkGqyScGFzSzJJsVEni0mms4f5gnhefJkMKLp8tfE6Gr3PxLr\nbgiwkcKmQDZFTC0WIoJQ3uW1pdTp7/nj0FKWdvo2vU/n8P0kVywz90yvq95nzn2dc2YmJEkGAMDI\nhfxOAACQeh7yOwEAAAAADw4aEAAAAADO0IAAAAAAcIYGBAAAAIAzNCAAAAAAnKEBAQAAAOAMDQgA\nAAAAZ2hAAAAAADhDAwIAAADAGRoQAAAAAM7QgAAAAABwhgYEAAAAgDM0IAAAAACcoQEBAAAA4AwN\nCAAAAABnaEAAAAAAOEMDAgAAAMAZGhAAAAAAztCAAAAAAHCGBgQAAACAMzQgAAAAAJyhAQEAAADg\nDA0IAAAAAGdoQAAAAAA4QwMCAAAAwBkaEAAAAADO0IAAAAAAcIYGBAAAAIAzNCAAAAAAnKEBAQAA\nAOAMDQgAAAAAZ2hAAAAAADhDAwIAAADAGRoQjKtTp05ZR0eH32k8cG7evGmnTp3yOw0AAID70IBg\nXNXW1trcuXPt008/NUl+pxN4kuyTTz6xefPmWW1trd/pAAAA3CckVoUYR5Ls448/tpqaGps5c6ZF\no1F79tln/U4rkL766it788037cyZM7ZlyxarqqqyUCjkd1oINiYYAGDEUvoMyIEDB2zlypW2cuVK\nO3DggN/pjEnQalm1apV1dnZaKBSy1atX27Fjx6yiosJeeuklq6iosBMnTvidZmB8//33fX/bV199\n1Y4fP26rV6+2UChkHR0dtmrVqkDMqSBtH721HDx40O90AABwLiUbkDNnztiaNWusrKzMsrKyLDMz\n08rKyuyNN96w9vZ2v9MbkaDWMmXKFOvs7Oy7LycnxyKRiB05csSysrJs4cKFtmnTJrtx44aPGae2\n69ev26ZNm2zhwoVmZnbkyBGLRCKWk5PTN+bWrVuWm5sbiDkVpO0jKyvLsrKy7JlnnrG1a9fa2bNn\n/U4PAAB3lEKuXbummpoaZWVladmyZWppaem7r6WlRcuWLVNWVpZqamp07do1HzMdWpBraWxs1KVL\nlxI+ZteuXSopKdEjjzyiWCymnp4eR9mmvng8rrq6Os2cOVMLFizQzp07E46/dOmSGhsbU3pOBWn7\n6F/Lt99+q+XLl/fVcv36dR8zHRUjCIIgiJGGKQX09PQoFotp5syZmjNnjnbs2DHo2B07dmjOnDkT\ndmH7INTyzjvvKD8/X9u2bVN3d/egj+/q6tKWLVs0depUvb9mjXTkiKPMU1dzc4eef/55ZWdnKxKJ\nqKOjY9Cx3d3d+uCDD5Sfn693331XUurOqYEErZbHHntMs2bNmpC1JOD7TowgCIJIvTBNcPv371dp\naammTJmiaDSqrq6uIR/T1dWlaDSqKVOmqLS0VPv373eQ6dAepFp6F1SPP/646uvrEz7X2bNn9dNb\nb0kZGdKf/iRdvDieqaekc+ekcFiaNEnasOH/9MMPPyQcX19fr+Li4gEXvqk6pwYSpFpu376taDSq\nqVOn6rnnnlNzc7ODTMfM950YQRAEkXphmqDa29tVVVWlSZMmKRwO6/Tp0yN+jtOnTyscDmvSpEmq\nqqpSe3v7OGQ6tAe1lv4LqhdeeEFHhjrD0doqlZdLOTlSba3U2Znc5FNQR4f3p8jOln77W+nQocTj\nDx8+rKVLlw5r4ZuKc2owQarlwoULqq6uVnp6uqqqqnTu3LlxyDRpfN+JEQRBEKkXpgmmu1t6/31p\n+fL/1RNPPKE9e/YkHH/58mV99913CcccPHhQZWVlysnJUW1trTodLWw7OztVW1urnJwclZWV6eDB\ngwnHB6mW/s6cOaNwOKzJkycrHA7rwoULiR+wc6c0f75UXCwNcfYkqHp6pFhMmjVL+uUvpQRX70iS\nzp8/r3A43LdoHcnCN1Xm1NGjR3X58uWEY4JUy759+1RaWqo1paVSXZ3088/JTDlZfN+JEQRBEKkX\npgnkH/+QFiyQZsyQ6upu6+dh7HA//PBDZWRkaOPGjbp69eqg43p6elRfX6+ioiIVFxcPeVnQWPVe\nAlNUVKT6+vphXdMdpFoGcujQIS1evFjTp09XNBpN+P4Q3b4tRaPStGnS0qXS11+PLvkU9K9/SU89\nJeXmSps3SzdvDj62q6tLmzdvVl5enp5++mk1NTWN6ndO5Dl15coVbdy4URkZGfroo4+GfO4g1RKP\nx3Xpr3+VCgul3/xGGuKAjA9834kRBEEQqRemCeDrr701Zmamd7nJjRsje/yePXtUUlKivLy8IRe2\nN27cUG1trTIzM7V06VJ9neSFbe8lMJmZmaqtrdWNERYTpFoGEo/HtX37dhUUFOitigpp377ED7h4\nUaquliZP9t4Ecf78mHOYqNrbpaoq6aGHvP/++GPi8fv2ndWTTz6pvLw8bd26NXFDN0wTaU71b66G\nczb0PwWpFnV0eN1obq704ovSN9+MLfnk8X0nRhAEQaRemHx0/ry3pkxL8xZcJ0+O/rni8bhisZgK\nCgo0d+5cNTQ0JBx/8uRJVVVVKS0tTeFwWOfHuLDtvQQmLS1NVVVVOjmGYoJUy2CuXLmiM++95zUW\nv/uddOpU4gc0NkqLFkm//33Sc5kIvvxSys+XfvUr7wq0RL7/XqqslNLTe/TnP//30Je0jYLfc+qL\nL77Q3LlzVVBQoFgspng8PurfHaRa9OOP3otlerr34jkO/+9HyPedGEEQBJF6YfJBd7d3dU1enlRS\nIu3enbznvnz5smpqapSRkaEVK1bo2LFjCcfv3r172GccBtLd3a1oNKq8vDyVlJRodxKLCVItgzp1\nyltQZWR4ZzoSXHqmeDzx/Sns+HFp2zZv2xjMlSvenyg9XVqxQjp6dPzzcj2njh07phUrVigjI0M1\nNTX66aefxpD9vYJUi/75T++SrOnTvRfTJJz9GiXfd2IEQRBE6oXJsYYGad486eGHvTfZjuVgYCKt\nra0qLy9Xenq6qqurE76noveMw8MPP6x58+YNecahV0NDQ/KObCYQpFoG1bugKiz03nDr+vdPYD//\n7K0xh3uGJNlczKmrV6/2ffJTeXm5Wltbk5X+PYJUi+Jx70W0oMB7UR1mLUnm+06MIAiCSL0wJdIm\nlYXvvakhLEXbvJ/D5j2DmdTQO7735wHGx+PSE09If/iD970GLuzcuVPz589XYWGh6urqEi4chnvG\n4T+PbA71aTbJEqRaBtS7oPrFL7zLrfbuHXxsW9vdyWfm/dulJG8bg/n7370PBPM+mMF7b75fxmNO\n9X6re2Fh4bC+1T1ZglRL37WskyZ5k6RXW7TfNlImjc8m4vtOjCAIgki9MCWSYJHVFpXCd1ZTbVGp\nLKq+RZaF7x/fy4+vduj/fRSLFi1SY2NjwvGDnXFwdmQzgSDVMqjr171PI8jM9N7scOLEvff3Nh/9\nuW5CxmHb6O/4ce8yq7Q077KrS5fGpYpRSdac2rt3rxYtWqRp06YpGo3qtg/dVZBq0b//7X2SgXSn\n+eg/QRs0Tk2I7zsxgiAIIvXClMgQR3nv3nhnwXVnfEP47gJsOEd5Xen9gq+0tDRVVlYm/Dbpnp4e\nffbZZyoqKlJRUZHefvvtvp8///zzUX8UbbIEqZZB9X482osv3nt7NHr/5SYNDd7t4yga7rd+G8dt\nIxbzvouxrEw6cCC5NSTLWObUiRMnVFlZqbS0NFVXV+vixYsOM79fkGrpEy2793SbNF4vxr7vxAiC\nIIjUi4dsKH8xC4XuRvlf7h/yx/fM/uvlu/9+uc7Mys2+HPLJ3ZoxY4Zt3brVmpqarL293ebPn2+R\nSMRu3bp139hQKGSvv/66tba22tq1a+306dO2bt06a21ttddee81CoZAPFdwVpFoG9etfm+3aZfa3\nv/mdycDGaduYP99s+3azxkaz0tJkJ50co5lTt27dskgkYgsWLLD29nZramqyrVu3Wn5+vg8V3BWk\nWgAASAlKZBhHecPW70Bb//ENkoUn1hmQ/nq/rGz27Nl69NFHFYvF/E5p1IJUy7A4PgNyz6X05s3r\nIG8b4yEWi2nWrFmaPXu2dgz1te4TXErUkugMSO8blMqSsr34fhSNIAiCSL0Y+gzIYI6ZLQ6ZrZTZ\nywPd/7JZgw18VHgiCIVCVllZaS0tLbZ27Vpbv369LVmyxA4fPux3aiMWpFqG5ZVXzMrL772tvNy7\nfRwUb/Baj2jYrE1mqhviASm+bSTT4cOHbcmSJbZ+/Xpbt26dtbS0WEVFhd9pjUpK1fLKa2blf+x3\nw5dm5d+YvVJsVnenl963wbf0AAAPtlE3IF/+j9l+Myu/c/nJ4q33j3m5ziw8huRcyM7OtkgkYs3N\nzZaTk2OlpaV29OhRv9MalSDVklBxsVlb273XP7W1ebdPAEHZNsaqtbXVSktLLTc315qbmy0SiVh2\ndrbfaY1KytVSvMGsbUG/beQ9s7Z9ZhNjEwEAPOBCkuR3EhNJU1OTPfXUU36nkRRBqgWpKUhzMEi1\nJNEEfQMZAGAiowEBAIwWDQgAYMRG/x4QAAAAABghGhAAAAAAztCAAAAAAHCGBgQAAACAMzQgAAAA\nAJyhAQEAAADgDA0IAAAAAGdoQAAAAAA4QwMCAAAAwBkaEAAAAADO0IAAAAAAcIYGBAAAAIAzNCAA\nAAAAnKEBAQAAAOAMDQgAAAAAZ2hAAAAAADhDAwIAAADAGRoQAAAAAM7QgAAAAABwhgYEAAAAgDM0\nIAAAAACcoQEBAAAA4AwNCAAAAABnaEAAAAAAOEMDAgAAAMAZGhAAAAAAztCAAAAAAHCGBgQAAACA\nMzQgAAAAAJyhAQEAAADgDA0IAAAAAGdoQAAAAAA48/8P510cjVPt0wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x53477F0>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('C=CC=CC=C[CH2+]')"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAAKiklEQVR4nO3dT2xU5R7G8d9IW1vL\nn7QEE6ophLY4okETbY2DLoBEQy2miUFXI0aSc121LryhLsywcIG5Cw8LY+puWAhOXCjEwcQENQQI\nBRPqXHWwNUGwHf4oihRoKe1zF9hyK/T/zHvK8ftJnoSQd85538VJ+sx7zpmIJBmA8USCngAAAECY\n3BX0BAAAAAD8c1BAAAAAADhDAQEAAADgDAUEAAAAgDMUEAAAAADOUEAAAAAAOEMBAQAAAOAMBQQA\nAACAMxQQAAAAAM5QQAAAAAA4QwEBAAAA4AwFBAAAAIAzFBAAAAAAzlBAAAAAADhDAQEAAADgDAUE\nAAAAgDMUEAAAAADOUEAAAAAAOEMBAQAAAOAMBQQAAACAMxQQAAAAAM5QQAAAAAA4QwEBAAAA4AwF\nBAAAAIAzFBAAAAAAzlBAAAAAADhDAQEAAADgDAUEAAAAgDMUEAAAAADOUEAAAAAAOEMBAQAAAOAM\nBQQAAACAMxQQAAAAAM7csQXk8uXLdvr06aCnAQAAAGAa7rgCIsk+/PBDi0ajlkgkgp4OAAAAgGko\nCnoC03HgwAFrbW21XC5n77zzjsXj8aCnBAAAAGAa7ogdkJMnT9rGjRvtmWeeseeff966u7vt5Zdf\ntkgkYleuXLEXXnjBOjo6gp7mrHR0dFhzc7M1NzezFgAAAITWnC4gfX191tbWZg899JCVlZVZJpOx\nbdu2WXl5+eiY/v5+mz9/vsViMXvllVcsl8sFOOPp6+3ttc2bN1ssFrOysjIrLS0NzVrKysru2LUA\nAACgMOZkAZFkO3futGg0aul02vbu3WupVMpqa2tvGVtZWWnvvvuuff3113bmzBmrqamxtrY2u3Tp\nUgAzn7pLly5ZW1ub1dbW2tmzZy2TydiuXbts9+7dlslkQrGWXbt2WSaTsbNnz46upa+vL+jpAgAA\nIEiaYw4fPqyGhgYtWbJE7e3tGhwcHHfs4OCg3nvvPS1evFhvvfWWJGnPnj1asWKF7rvvPiWTSQ0P\nD7ua+pQMDw8rmUyqqqpKK1as0J49e8YdG7a11NTUzNm1TMAIIYQQQkj+Ypojcrmc4vG4iouL1dLS\nogsXLkw4PpVKqa6uTjU1Nbf84TswMCDf97VgwQLV19fr0KFDhZz6lB06dEj19fVasGCBfN/XwMDA\npJ8J01quXbsm3/e1cOFCNTQ06PDhww5mOmuBX6SEEEIIIWGKKWD9/f1KJBIqLy/Xhg0b9MMPP0w4\nPpPJaP369Vq4cKF839e1a9fGHdvT0yPP8zRv3jzF43Hlcrl8T39KRsrVvHnz5Hmeenp6pn2MMK2l\nt7dXnuepqKhI8XhcZ86cKcBM8ybwi5QQQgghJEwxBSiVSqm2tva2uxh/d/78eXmep7vvvlue56m3\nt3fK5zl69KhisZjKy8uVSCR09erV2U59Sq5evTparmKxmI4ePTrh+BMnTky68xOmtXzzzTd6+umn\nR9fS39+fzynnS+AXKSGEEEJImGIKwHR2Ma5fvy7f91VZWak1a9bo2LFjMzrn8PCwUqmUqqurVVtb\nq1QqNdPpT8lIuaqurlYqlZrwmYc//vhDb7zxhkpKSvT+++9PeuwwrUW68XzI8uXLVVdXV/C1zEDg\nFykhhBBCSJhicmi6uxiff/65HnzwQS1btmzSP3ynqq+vT4lEQqWlpVq3bp2+/fbbWR/z/3V2dmrd\nunUqLS1VIpFQX1/fuGMHBga0fft2VVRU6JFHHtGXX345rXOFaS1XrlzR9u3bNX/+fK1fv16ZTGaW\ns8+bwC9SQgghhJAwxeTA4ODg6C7GU089Nekuxk8//aSmpqbRP3wvX76c9zmdOnVK8XhcRUVF8jxP\n586dm9Xxzp07N+a5hlOnTk04/rPPPtMDDzyge++9V8lkUkNDQzM+d5jW8ssvv4y+jMDzPJ0/f37G\nx8qTwC9SQgghhJAwxVRg+/btUzQandIuxp9//qmWlhaVlJQoHo/r9OnThZ6e9u/fr9WrV6uiokK+\n70/42t/bGSlXFRUVWr16tfbv3z/h+O7ubjU1NamkpERbt27V77//PovZjxWmtXR0dOjJJ59UZWWl\nfN/X9evX83bsaQr8IiWEEEIICVNMBTKyi1FWVjbpLsbQ0JDa29tVVVU1o9t3ZmtoaEjJZFJLlixR\nNBpVOp2e0ufS6fSUv/m/ePGiWlpaVFxcrMbGRmWz2XxNf4wwrWXkd0aWLl2qRx99VF999VVBzjOJ\nwC9SQgghhJAwxVQAv/32mxYtWqTnnntOJ06cmHDswYMH9fjjj+fl9p3ZunDhgrZu3aqSkhI1NTWp\nu7v7tuP+/s3/RG97GilXS5cu1apVq/TFF18UavpjhG0tra2tWr58+c03ZXX5ipnJ/oo30rO6fMW8\nsaUr7cXkd0lSWt7oZzxNrZoFf5ESQgghhIQppgKZ7Pc8fv75Z23atEmlpaV5v31ntrLZrBobG0d/\nFPHixYuSpv/N/4EDB/TYY49p0aJFk77tq1DCtJabrxxOyxtTINLy7K+SMUEB6fJjo0Wly48pdqOV\nTCbwi5QQQgghJEwxOTbyexL33HOPmpqaJt0hCcrw8LB2796t6upqVVdX68033xz990cffTThsywn\nT57Upk2bVFRUpJaWFv36668OZ36rMK1FkpT2xi8PE+6AjD3GzWFd8j1f4xwx8IuUEEIIISRMucsc\n2rlzp61cudI+/vhj+/TTT23v3r22cuVKl1OYskgkYi+99JJls1l79dVXraenx7Zs2WLZbNZefPFF\ni0Qit3ymv7/ftm3bZqtWrbJcLmdHjhyxHTt22OLFiwNYwU1hWouZWfeP/7WHV9aOP+CDRotEIqNp\n/ODvA/bZv95eZf/eUMhZAgAA4LbkQGdnp9auXRvo7TuFlkwmdf/992vZsmWT/qr7XDfn13K7HZB0\n+sYtWZPugIy9favLj40+R2JmMu+WJ0MC/5aAEEIIISRMKfgOSFdXlzU0NFhVVZV999131traasXF\nxYU+rTOdnZ22du1ae+2112zLli32/fff28aNG4Oe1ozcMWvZ0GwPv77ZdnSP/Ee37Xi70T7ZN8nn\nunfYmsgn1qx2G9n8qG09aFKX+Z5vXZKpnW0RAACAQioq9Anq6urs+PHjFo1GC30q57LZrNXX19uz\nzz5rx48fn7O3k03FnbWWDdbe9aOtqYvY63/9j5eWtW8ws+7xP7XvP6/bITNrjNy4Jyvmd9nB1glu\n5QIAAEDeRSQp6EncyY4cOWJPPPFE0NPIizCtJY9ufUAGAAAAM0YBASZGAQEAAMgjp2/BAgAAAPDP\nRgEBAAAA4AwFBAAAAIAzFBAAAAAAzlBAAAAAADhDAQEAAADgDAUEAAAAgDMUEAAAAADOUEAAAAAA\nOEMBAQAAAOAMBQQAAACAMxQQAAAAAM5QQAAAAAA4QwEBAAAA4AwFBAAAAIAzFBAAAAAAzlBAAAAA\nADhDAQEAAADgDAUEAAAAgDMUEAAAAADOUEAAAAAAOEMBAQAAAOAMBQQAAACAMxQQAAAAAM5QQAAA\nAAA4QwEBAAAA4AwFBAAAAIAzFBAAAAAAzlBAAAAAADhDAQEAAADgDAUEAAAAgDMUEAAAAADO/A+h\n8L66UilnVgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x53478D0>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347810>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('[NH2+]=C1C=CC(C=C1)=CN=CN')"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\nWFxa/JA0EwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347950>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAAclklEQVR4nO3de3QTddoH8G8KvYRW\nKeVWRQQqWBFBT+EACy9QIKUgBby1HHVRAU8KiBT13RdW3IUVKiiLUlmBKqtcdhEqFYRSekmDRe5g\ncXHpAUEKRbByv/dCm+f9I7Y0bdImaTJJmu/nHM6xM8nME+yX+T2Z38yoRERARERERESkAB9XF0BE\nRERERN6DDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERER\nESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmG\nDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDQgRERERESmGDYgN\nysvLcfToUZSWlrq6FCK3w3wQWcZ8EFnGfHifpq4uwN0VFBQgMzMTWVlZyMnJga+vL0JCQpCdnY0O\nHTq4ujwil2I+iCxjPogsYz68G8+A1HD58mWsXr0acXFxCA0NRXh4OFJTU9GnTx/o9XqcO3cOvXv3\nRt++fZGfn+/qcokUxXwQWcZ8EFnGfFB1KhERVxfhSnfu3EFubi50Oh10Oh0OHTqE9u3bIzo6GjEx\nMRg8eDCCgoJM3lNRUYFXXnkF2dnZyMnJQbdu3VxUPZFzMR9EljEfRJYxH1QXr2xATp06hW+++QZp\naWnYu3cvVCoVhg8fDo1GA41Gg7CwsHq3UVFRgQkTJiAzMxM6nQ6PPfaYApUTOR/zQWQZ80FkGfNB\n1vKKBuT69etVv8g6nQ4FBQWIiIiARqNBTEwM+vbti6ZNbb8cpqKiAhMnTsS2bdug0+nQvXt3J1RP\n5FzMB5FlzAeRZcwH2atRNiAigry8POh0OmzZsgX79u1D69atMWrUKGg0GgwaNAht2rSpdzsGgwGH\nDh3Cli1bkJaWhqZNm2Lv3r21XvPqq68iLS0NOp0OPXr0cNbHInIIR+WjurKyMsTGxuLPf/4z+vbt\nW7Wc+SBPw3wQWcbxFTmMNDKFhYUSGRkpPj4+0qtXL5k1a5bk5ubKnTt3rHr/1atXJTU1VbRarXTo\n0EEASHh4uEybNk3S09PNvsdgMMiUKVOkRYsWcuDAAUd+HCKHamg+6rJo0SIJDAwUnU5nspz5IE/B\n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\n/w/0pbz9D6SoDAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347A50>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('NC(C(=O)[O-])=CC=CC=O')"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347A90>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x180 at 0x5337B70>"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('[NH2+]=C(N)CCC(=O)[O-]')"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\nt/oAAAAASUVORK5CYII=\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347AB0>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\niIiIDPP/qjzuy+3lpgEAAAAASUVORK5CYII=\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347BF0>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('[N-]=[N+]=[N-]')"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAADiklEQVR4nO3dsW5TBwCF4eOKbDwG\nMPUFUCR2Z+oCA0vF0rClS7cODJVYy4ZZEC/hbAxI7cjMwMh73A4hatrYTky4x479fZIl6zqyjzzd\nP4mvJ8MwDAGWmWx6AADALvlh0wMAAID9IUAAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECN\nAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAA\ngBoBAgAA1AgQAACgRoAAAAA1AgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaA\nAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADUCBAAAqBEgAABA\nzZ1ND9gmHz4kX76M/zoHB8njx9/3OT99Sj5+vPnzjLENAADOTYZhGDY9YjSfk8P7yY/zZDa9fPz3\nIbl4+Pnz5P378WfdvXshFtbcuMzbt8nLl9u57ZabbHoAAMAu2Yu/gLw5Sn66xsny69eVOQtdd+My\nz56d3cZw020AAHBuLz4DMp8nR8ebXrHadTceT5LT8ef8x214/wAAuB32IkAyTeZJjttn7uvY5o3b\nvA0AgFtlPwIkyXSW5I/k86aHrLB042kymZzd3iQ5+nr/8NUWbAMAgDXsVICcHv97oj5Z8C9Dvz1J\nfi6etH+LhRunyTCc3X5JMv96/6+TzW+76j0HAICLdupD6NNZMswuHPjfr+vvnSRPDpNXD6qz1rLN\nGxdtu/SeAwDACjsVINdx8u7sErJ/L3hsI5fhXWDVxtmSiyaPchneNbcBAMBV9i5Aci9592dy/9fL\nDz19mjx6NP6Eg4MrfmDFxmUePkxevPj2TefG2AYAAOd2+4sI4eZ8ESEAwHe0Ux9CBwAAtpsAAQAA\nagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEAAGoECAAAUCNAAACAGgEC\nAADUCBAAAKBGgAAAADUCBAAAqBEgAABAjQABAABqBAgAAFAjQAAAgBoBAgAA1AgQAACgRoAAAAA1\nAgQAAKgRIAAAQI0AAQAAagQIAABQI0AAAIAaAQIAANQIEAAAoEaAAAAANQIEAACoESAAAECNAAEA\nAGoECAAAUCNAAACAGgECAADUCBAAAKBGgAAAADX/AGIghcIp0AMRAAAAAElFTkSuQmCC\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347C90>"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347D90>"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('CN=[N+]=[N-]')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347E10>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347DB0>"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('COC(=O)[CH-]C(=O)OC')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347F90>"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347FD0>"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('CC(=O)OC')"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original molecule:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAABaCAYAAABAITJSAAAWSElEQVR4nO3deVDU9/3H8eeCeBHR\nJgQNamo1JRiFqhGM7AIeXKJgrMFGUet4xjoZbZN4Nb8mjW1iMnZSja2JreLVMUargQU8iIjsLl45\nxPsgiRrrBYYj3hD4/UHdaGo89yK+HjPOqLCf9/s7+Mf35ecy1NTU1CAiP8Tg7gZEREREfky83N2A\niIiIiIjcPxRARERERETEZRRARERERETEZRRARERERETEZRRARERERETEZRRARERERETEZRRARERE\nRETEZRRARERERETEZRRARERERETEZRRA5J7s3buX+fPnM3z4cNq1a0fv3r1ZtGiRu9sSEREREQ9V\nz90NSN1RU1PDgQMHsNlsWK1WrFYrn3/+OQ899BARERGMGzeOBg0a8Nxzz1G/fn2GDBni7pZFRERE\nxMMogMgPKi8vJz8/3x44CgsLuXDhAp07d8ZoNPLGG29gNBoJDAy87nMPP/wwI0eOpEmTJiQlJbmp\nexERERHxRIaampoadzchnqG4uJi8vDysVis2m43CwkLq1auHyWTCaDRiMpkIDw/Hz8/vlmPNmzeP\n3/72t6SnpxMfH++C7p3G4O4GRERERH5MFEDuc4cOHWLu3LlYLBZ2795NgwYNCAsLIzIyEqPRSERE\nxG0FjpqaGhYvXszw4cPx8qrdWvTnP/+Z119/nQ0bNmA0Gp39KM6iACIiIiLiQAog97ErV64QGhpK\ny5YtSUxMxGg08uSTT+Lj43PHY3311Vd06dKFgQMHMm/ePAyG2vf2KVOmMH/+fDZt2kSnTp0c/AQu\noQAiIiIi4kDaA3Ify83N5fTp0+zevfuuQse1WrduTW5uLj169KBevXrMnTsXgJkzZ1JWVkZ8fDz5\n+fk8/vjjjmhdREREROooHcN7HzObzcTGxt5z+LgqJCSE7OxslixZwquvvgqAwWBg3rx59OzZk9jY\nWI4dO+aQWiIiIiJSNymA3Kdqamowm83XnVI1efJksrOz72ncbt268eGHH/Lmm28ya9YsALy8vFi6\ndCkhISHExsZy+vTpe6ohIiIiInWXAsh9qrCwkJMnT9K3b18Azp8/z9y5c/H19b3nsXv16sWKFSuY\nPn06//znPwHw8fFh1apVtGjRgvj4eEpLS++5joiIiIjUPQog96mMjAwiIiJ48MEHAdi4cSONGzfG\n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\nrkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347C50>"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Original molecule:\\n')\n",
"MolsToGridImage([mol], subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\nkAkIAEANmYAAAACFUUAAAIDCKCAAAEBhFBAAAKAwCggAAFAYBQQAACiMAgIAABRGAQEAAAqjgAAA\nAIVRQAAAgMIoIAAAQGEUEAAAoDAKCAAAUBgFBAAAKMyUegeYyA796leZeffdN32vbfr0/PeCBQUn\nAgCA8U0BGYVFR48mw8M3fe+//vWv5OTJghMBAMD45goWAABQGAUEAAAojAICAAAURgEBAAAKo4AA\nAACFUUAAAIDCKCAAAEBhFBAAAKAwCggAAFAYBQQAACiMAgIAABRGAQEAAAqjgAAAAIVRQAAAgMJM\nqXeACa2rK1m8+ObvPf540thYaBwAABjvGiqVSqXeIWAca6h3AACAycQVrNEql5OGhu9evb31TgQA\nAOOWAjIa5XLS05NUKt+91q6tngMAACO4gjUaDQ3V0nG9wcGkuXnkOROVK1gAADVkAvJj9fYmy5aN\nPG9qqp67igUAACMoIKOxaNHtnQMAwB1OARkLAwP1TgAAAOOSHZDRsANyJ7ADAgBQQyYgo9HVVS0h\n12turp4DAAAjmICMVm9v9at3rzlwIGlrq18eas0EBACghhQQuDUFBACghlzBAgAACqOAAAAAhVFA\nAACAwiggAABAYRQQAACgMAoIAABQGAUEAAAojAICAAAURgEBAAAKo4AAAACFUUAAAIDC/D8rak9p\nkgpsSAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5347C70>"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"(mol, resMols) = getResonanceStructures('CC(=O)OC',\n",
" flags = Chem.ResonanceFlags.UNCONSTRAINED_CATIONS \\\n",
" | Chem.ResonanceFlags.UNCONSTRAINED_ANIONS)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Resonance structures:\n"
]
},
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<PIL.Image.Image image mode=RGBA size=800x90 at 0x5353090>"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sys.stdout.write('Resonance structures:\\n')\n",
"MolsToGridImage(resMols, subImgSize = (200, 90), molsPerRow = 4)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.4.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment